Autor |
Beitrag |
GericasS
      
Beiträge: 540
Windows Vista Home Premium
D2010, VisualStudio2008
|
Verfasst: Mo 09.03.09 18:58
Hi,
da ich ein Programm zur bearbeitung von Strings, durch verschiedene Methoden schreibe, hab ich jetzt folgendes ausprobiert...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| begin List := TStringList.Create; for x := 0 to ExtractStrings(['\'],[' '],pchar(temp),List) -1 do begin List[x]:= ReverseString(List[x]); ListBox1.Items.Add(List[x]); end; |
Es soll wie beim vorherigen Beispiel der String in der richtigen Reihenfolge ausgegeben werden aber umgedreht..
nur wo liegt hier der Fehler..
LG
GericasS
_________________ Alexander N.
Neue Bewaffnung Amilo xi2428 T9300
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Sa 09.05.09 22:40
Du möchtest nur einen String "umdrehen"?
Das müsste doch eigentlich einfach nur so gehen:
Delphi-Quelltext 1: 2: 3: 4:
| Label1.Caption:=''; probestring:='Hallo, wie geht es Ihnen?'; for i:=length(probestring)-1 downto 0 do Label1.Caption:=Label1.Caption+probestring[i]; |
...oder habe ich Dich jetzt falsch verstanden?
Meinst Du nicht einfach nur das Umdrehen des Textes?
Da käme dann doch sonst in Label1.Caption bei meinem Beispiel einfach nur dieses raus:
?nenhI se theg eiw ,ollaH
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.05.09 01:59
Wofür machst du das Extract in jedem Schleifendurchlauf, dadurch überschreibst du doch alle Änderungen in der Liste gleich wieder?
Was passiert denn falsch, also kommt denn als Ergebnis heraus? Und was hast du beim Debugging bisher festgestellt?
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: So 10.05.09 15:57
Also ich denke mal, dass das hier eine gute Lösung ist - oder?:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.PfadUmdrehen(); var i:Integer; versuch:String; begin Memo1.Text:=stringreplace(Label1.Caption,'\','\'+#13#10,[rfReplaceAll]); for i:=Memo1.Lines.Count-1 downto 0 do versuch:=versuch+Memo1.Lines[i]; Label2.Caption:=versuch; end; |
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.05.09 16:21
Was macht das Memo dabei? Und nebenbei drehst du die Teile zwischen \ nicht um sondern tauschst nur deren Reihenfolge um. Genau das was also verhindert werden sollte. Du machst also recht exakt das Gegenteil des gewünschten Ergebnisses, wenn ich den Versuch oben korrekt verstanden habe. 
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: So 10.05.09 18:46
@Jaenike: ich dachte jetzt, dass GericasS gerne die (in meinem Fall) Verzeichnisse/Datei richtig benannt haben möchte, aber den Pfad einfach nur andersherum, also eben mit der Datei angefangen und dann bis zum Lagerort (z.B. Festplatte) hoch.
Das Memo diehnt ja nur der Zeilenweisen Ablage zwischendurch, was man ja eigentlich auch mit einem normalen String machen könnte. (Oder?)
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 10.05.09 19:04
Die Frage ist einfach was genau passieren soll. Das obige Beispiel macht aus 'abcd\efg\hij' statdessen 'dcba\gfe\jih' in den drei Zeilen.
Ich weiß ja nicht was das Ziel war.
Ich werfe mal noch den Vorschlag in den Raum: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var MyList: TStringList; i: Integer; begin MyList := TStringList.Create; try ExtractStrings(['\'], [' '], PChar(Edit1.Text), MyList); for i := 0 to MyList.Count - 1 do MyList[i] := ReverseString(MyList[i]); MyList.Delimiter := '\'; Edit2.Text := MyList.DelimitedText; finally MyList.Free; end; | Der macht eben geschriebenes von einem Editfeld zum anderen.
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Mo 11.05.09 12:04
jaenicke hat folgendes geschrieben : | Das obige Beispiel macht aus 'abcd\efg\hij' statdessen 'dcba\gfe\jih' in den drei Zeilen. |
Also meine Beispiele machen daraus als Ergebnis nicht sowas, weil ich ja die '\' nur als Trennzeichen nehme und dann die (damit in mehrere Reihen geteilten) Zeichenketten nur andersherum wieder zusammenfüge.
Ich sehe also hier nur die zitierte Möglichkeit, wenn man die beiden Möglichkeiten zusammenbaut.
|
|