Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 2 Memo-felder und strings
Kalado - Fr 20.02.09 03:22
Titel: 2 Memo-felder und strings
Hallo,
Ich hab ein Problem.
Ich habe 2 memo felder und möchte einmal immer das erste wort von einem feld ins andere übertragen.
Das zweite Problem ist, ich möchte immer das erste Wort auf einer zeile löschen.
Ich hab beides eigtl auch hingekriegt, das Problem ist das es immer nur bei der ersten zeile klappt und die anderen ignoriert..
Hier der Quellcode für das problem bei dem ich immer das erste wort ins andere feld übertragen möchte.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure Tha.kClick(Sender: TObject); var i,i2:integer; zeile,zeile2,zeile3:string; begin adventure.clear; for i:=0 to book.lines.count-1 do begin zeile2:=book.lines[i]; zeile:=adventure.lines[i]; for i2:=1 to length(zeile2) do begin zeile3:=zeile3+zeile2[i2]; if zeile2[i2]=' ' then break; adventure.lines[i]:=zeile3; end; zeile3:=''; end;
end; |
Und hier der Quellcode für das Problem bei dem ich immer das erste Wort löschen will.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure Tha.lClick(Sender: TObject); var i,i2:integer; zeile,zeile2,zeile3:string; schalter:boolean; begin schalter:=false; i:=0; while i<book.Lines.Count-1 do begin i:=i+1; zeile2:=book.lines[i]; zeile:=adventure.lines[i]; for i2:=1 to length(zeile2) do begin if zeile2[i2-1]=' ' then schalter:=true; if schalter=true then begin zeile3:=zeile3+zeile2[i2]; book.lines[i]:=zeile3; end; end; zeile3:=''; end;
end; |
book und adventure sind die beiden memo felder.
Vielen dank im voraus.
jaenicke - Fr 20.02.09 03:46
Hallo und :welcome: !
Wie wäre es mit der Funktion Pos? ;-)
Damit kannst du direkt die Position des ersten Leerzeichens abfragen.
Und statt
wäre richtig:
Mit dem Vergleich =true klappt das nicht immer.
// EDIT:
Ach ja: schalter wird auf true gesetzt, aber nie wieder auf false. Diese Variable ist also in der nächsten Zeile schon am Anfang true.
Kalado - Fr 20.02.09 13:38
Das zweite Problem hat sich damit wunderbar gelöst, schonmal vielen dank.
Für das erste hab ich dass jetzt mit pos gemacht aber er macht immernoch nur eine zeile :(
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var i,i2,leerstelle:integer; zeile,zeile2:string; begin adventure.clear; for i:=0 to book.lines.count-1 do begin zeile2:=book.lines[i]; zeile:=adventure.lines[i]; leerstelle:=Pos(' ', zeile2); if leerstelle=0 then zeile:=zeile2 else zeile:=copy(zeile2, 1, leerstelle); adventure.lines[i]:=zeile; end;
end; |
jaenicke - Fr 20.02.09 13:59
Adventure bekommt ja auch keine neuen Zeilen, wie wäre es mit Lines.Add? Die Indizes, die du da benutzt, um mit Lines darauf zuzugreifen, existieren doch gar nicht, schließlich hast du adventure vorher geleert...
Kalado - Fr 20.02.09 14:12
ah, danke jetzt klappts.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!