Problem mit RemoveString()

Anfängerfragen zum Programmieren mit PureBasic.
NonFreak
Beiträge: 30
Registriert: 10.09.2004 18:26
Wohnort: Nähe Darmstadt

Problem mit RemoveString()

Beitrag von NonFreak »

Ich habe eine Zeile aus der Tabellenkalkulation als csv-Datei mit Semikolon als Feldtrenner exportiert. Die einzelnen Felder will ich nun von links nach rechts ermitteln. Unter Verwendung von RemoveString() erhalte ich teilweise falsche Ergebnisse. Was mache ich falsch? Ersetze ich RemoveString() durch andere Funktionen, klappt alles.

Code: Alles auswählen

Define.s zeile, links
zeile="text1;text2;;text3;;"
For i=1 To 5
  links=Left(zeile,FindString(zeile,";",1))
  zeile=RemoveString(zeile,links)
  Debug Str(i)+"Links: "+links+"       Rest: "+zeile
Next
Debug "Das Gleiche ohne Renovestring"
zeile="text1;text2;;text3;;"
For i=1 To 5
  links=Left(zeile,FindString(zeile,";",1))
  zeile=Right(zeile,Len(zeile)-Len(links))
  Debug Str(i)+"Links: "+links+"       Rest: "+zeile
Next
Das Ergebnis sieht folgendermaßen aus:
1Links: text1; Rest: text2;;text3;;
2Links: text2; Rest: ;text3;;
3Links: ; Rest: text3
4Links: Rest: text3
5Links: Rest: text3
Das Gleiche ohne Renovestring
1Links: text1; Rest: text2;;text3;;
2Links: text2; Rest: ;text3;;
3Links: ; Rest: text3;;
4Links: text3; Rest: ;
5Links: ; Rest:
Bild suse11.0
PB4.3
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

weil removestring mit ";" ausgeführt sämtliche ";" entfernt.
beim schritt der zu 3Links führt, werden also alle ";" entfernt, danach sind keine mehr übrig zum bearbeiten.

benutze StringField um zu den Feldinhalten OHNE trennzeichen zu kommen,
dann kannst du die Feldinhalte mit RemoveString entfernen wenn sie einmalig sind.
ansonsten nutze eine beschneidefunktion die nach position vorgeht.
ähnlich wie im zweiten Teil deines Codes, nur dass du dafür Mid() benutzen solltest.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
NonFreak
Beiträge: 30
Registriert: 10.09.2004 18:26
Wohnort: Nähe Darmstadt

Beitrag von NonFreak »

War ein klarer Denkfehler von mir.
Danke Ol'Man (ich bin aber sicher älter als Du: 69)
Bild suse11.0
PB4.3
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> (ich bin aber sicher älter als Du: 69)

ja, das bist du, ganze drei Zahrjehnte, aber das macht nix... :mrgreen:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Beitrag von Waldixxl »

Hallo NonFreak
Für solche Aufgaben bietet PB auch die Funktion StringField() an. :wink:

Code: Alles auswählen

   zeile$="text1;text2;;text3;;aus" 
   For k=1 To 6
      Debug StringField(zeile$, k, ";")
   Next
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
NonFreak
Beiträge: 30
Registriert: 10.09.2004 18:26
Wohnort: Nähe Darmstadt

Beitrag von NonFreak »

Danke und beste Grüße Euch beiden; das ist das Schöne an diesem Forum, dass man schnell und kompetent Hilfe bekommt.
Bild suse11.0
PB4.3
Antworten