Problem mit umwandeln von Strings...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
XCorE
Beiträge: 17
Registriert: 05.12.2007 23:04
Wohnort: Bremervörde
Kontaktdaten:

Problem mit umwandeln von Strings...

Beitrag von XCorE »

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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

hier mal meine Variante :

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
EDIT: Aufgrund eines Geschpräch in ICQ ...

EDIT2: Bisonte hat natürlich recht :wink: nur habe ich mich mit der LIB noch nicht befasst...
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
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Problem mit umwandeln von Strings...

Beitrag von Bisonte »

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 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...

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​​
Benutzeravatar
XCorE
Beiträge: 17
Registriert: 05.12.2007 23:04
Wohnort: Bremervörde
Kontaktdaten:

Beitrag von XCorE »

Das Script kommt aus dem MTA 1.1 Editor ;)


Thx STARGATE :D

Problem ist gelöst ;)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

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
Benutzeravatar
XCorE
Beiträge: 17
Registriert: 05.12.2007 23:04
Wohnort: Bremervörde
Kontaktdaten:

Beitrag von XCorE »

Ja aber das reicht vollkommen aus,desweitern kann ich später machen ;)

thx nochma :D
Antworten