Hi,
folgendes problem,
Ich arbeite grad an einen kleinen Program was mir Texte ändern soll,original sieht er so aus:
<object name="object">
<position>1979.498413 -2185.233643 12.622492</position>
<rotation>0.000000 0.000000 0.000000</rotation>
<model>3279</model>
</object>
und am ende soll er so aussehen:
CreateObject(3279,1979.498413,-2185.233643,12.622492,0.000000,0.000000,0.000000)
---
Das Problem ist nur das das alles nicht so ganz klappt...
Ich hab es bissher so versucht,den String raus zu suchen,also If FindString(...) und in der if RemoveString(...) um den jeweiligen String zu löschen,aber denn passiert nix,mach ich es ohne If und versuch es mit irgent ein String,gehts auch nicht,mach ich es mit so:
SetGadgetText(GetGadgetText(#MeinGadget,"bla","") geht es zwar,aber denn verschwindet gleich alles gleich...
Wie kann ich es nun so machen,das er nicht gleich alles löscht,sondern nur das was ich möchte ???
Heut krieg ich garnichts auf der reihe,wahrscheinlich werde ich sagen wenn ich die lösung hab wieso bin ich nicht darauf gekommen??-.- ^^
MfG.
XCorE
Problem mit umwandeln von Strings...
hier mal meine Variante :
EDIT: Aufgrund eines Geschpräch in ICQ ...
EDIT2: Bisonte hat natürlich recht
nur habe ich mich mit der LIB noch nicht befasst...
Code: Alles auswählen
Procedure.s MyStringField(String$, Index, Separator$, Start$="", Ende$="")
If Start$
Start = FindString(String$, Start$, 1)
Else
Start = 1
EndIf
If Ende$
Ende = FindString(String$, Ende$, 1)
Else
Ende = Len(String$)
EndIf
If Start
String$ = Mid(String$, Start+Len(Start$), Ende-Start-Len(Start$))
ProcedureReturn StringField(String$, Index, Separator$)
EndIf
EndProcedure
Procedure.s Umwandlung(String$)
NewString$ = "CreateObject("
NewString$ + MyStringField(String$, n, " ", "<model>", "</model>")
For n = 1 To 3
NewString$ + "," + MyStringField(String$, n, " ", "<position>", "</position>")
Next
For n = 1 To 3
NewString$ + "," + MyStringField(String$, n, " ", "<rotation>", "</rotation>")
Next
NewString$ + ")"
ProcedureReturn NewString$
EndProcedure
OpenWindow(0, 0, 0, 800, 640, "Fenster", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
EditorGadget(1, 10, 10, 780, 280)
EditorGadget(2, 10, 310, 780, 280)
ButtonGadget(3, 10, 610, 780, 20, "Umwandeln")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case 3
Text$ = GetGadgetText(1)
NewText$ = ""
Start = 1
Repeat
Start = FindString(Text$, "<object", Start)
If Start
Ende = FindString(Text$, "</object>", Start)
Inhalt$ = Mid(Text$, Start, Ende-Start)
If Inhalt$
NewText$ + Umwandlung(Inhalt$) + #CRLF$
EndIf
Start = Ende
EndIf
Until Not Start
SetGadgetText(2, NewText$)
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 0
EndSelect
EndSelect
ForEver
EDIT2: Bisonte hat natürlich recht

Zuletzt geändert von STARGÅTE am 25.09.2008 01:14, insgesamt 2-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Problem mit umwandeln von Strings...
Das riecht aber streng nach XML... Also dürfte da noch mehr in der Datein stehen als dieses Object. Und wenn dies so ist, dann wären die XML Funktionen ratsamer...XCorE hat geschrieben:
<object name="object">
<position>1979.498413 -2185.233643 12.622492</position>
<rotation>0.000000 0.000000 0.000000</rotation>
<model>3279</model>
</object>
Das geht einfacher als per stringfunktionen alles rauszupulen...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
ja aber wie Bisonte schon sagte, bringt dich die XML-Lib schneller weiter ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr