Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Wortkette drehen
basti_G - Do 14.05.09 21:41
Titel: Wortkette drehen
hallo liebe delphifreunde,
ich hab hier eine aufgabe bei der ich einfach nicht auf einen grünen zweig komme!
ich habe ein Memofeld gegeben, in dem ich mehrere zeilen text eingebe z.b.:
in der 1. zeile: Anna hetzt Hanna
in der 2. zeile: John rennt schnell
in der 3. zeile: Bernd ist cool
dann habe ich ein editfeld, in dem ich die nummer der zeile eingeben soll, die bearbeitet werden soll z.b.: die 2.zeile
--> dann habe ich einen button "vertausche Zeichen"
wenn ich also nun auf den button klicke soll die wortkette in der ausgewählte
zeile umgedreht werden, bei zeile2 also: llenhcs tnner nhoJ
könnt ihr mir nun sagen, welchen befehl ich dazu nutzen muss bzw. wie die schleife(n) aussehen muss?
wäre euch extrem dankbar, wenn ihr mir helfen könnt!
mfg basti
Boldar - Do 14.05.09 21:45
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1click (sender: Tobject); var str, str2: string; begin str := memo1.lines[strtointdef(edit1.text, 1)-1]; for i := length(str) downto 0 do begin str2 := str2 + str[i]; end; memo1.lines[strtointdef(edit1.text, 1)-1]:= str; end; |
Ungetestet, ich weiss grad nicht ob
Tmemo.lines eventuell readonly ist...
basti_G - Do 14.05.09 21:48
oh man, das ging aber fix ... werds gleich mal testen und meld mich dann nochmal!
aber vielen vielen dank schon mal!
Narses - Do 14.05.09 22:27
Moin!
@
Boldar: Hey, super! :D Machst du auch meine Hausaufgaben? :zustimm:
cu :roll:
Narses
basti_G - Do 14.05.09 23:32
hausaufgaben trifft es nicht ganz ;) ...
so ganz funzt es noch nicht, werd mich am WE aber mal in ruhe hinsetzen und bisschen basteln, dank dem super ansatz!
jute nacht!
Mordilion - Fr 15.05.09 08:22
Als kleiner Tipp noch, schau dir mal die Funktion "ReverseString" aus der StrUtils.pas an. Die macht genau das was du brauchst.
Gruß
Mordi
basti_G - Fr 15.05.09 19:25
hab es jetzt wie folgt gelöst und funktioniert einwandfrei!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button2Click(Sender: TObject);
var zk : string; Z : Integer; i:integer; zk2: string;
begin Z:=strtoint (Edit1.text); zk:=Memo1.Lines[Z]; for i :=length(zk) downto 1 do begin zk2:= zk2+copy(zk,i,1);
end; memo1.Lines[z] := zk2;
end; |
schönes WE und vielen dank für eure hilfe!
Moderiert von
Narses: Delphi-Tags hinzugefügt
Regan - Fr 15.05.09 20:08
Ein Nachtrag von mir:
Um den Vorschlag von
Mordilion zu verwenden und etwas Fehlerbehebung zu betreiben, kann man den Quelltext auf drei Zeilen und einer Variable verkürzen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button2Click(Sender: TObject); var z: Integer; begin if not (TryStrToInt(Edit1.Text,z)) then exit; if (z < 0) or (z > Memo1.Lines.Count-1) then exit; Memo1.Lines.Strings[z] := ReverseString(Memo1.Lines.Strings[z]); end; |
So halbiert man auch die Codelänge :wink: .
basti_G - Fr 15.05.09 22:46
auch sehr schön und vor allem kürzer ... vielen dank noch mal an euch!
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!