![]() |
Container Schleife
Hey Leute. Ich habe folgendes Problem. Ich soll mithilfe einer Containerschleife einen Text manipulieren.
![]()
Code:
Durch diese Schleife soll der Text oben mit dem Ersetzungsbuchstaben manipuliert werden. Kann mir jemand helfen? Ist sehr dringend.
var text, a, b: String;
z: Char; begin text := Edit1.Text; a := Edit3.Text; b := Edit4.Text; for z in text do Edit2.Text := text; end; Danke schon einmal im voraus. =) |
Re: Container Schleife
Schau mal nach StringReplace
|
Re: Container Schleife
Hey danke für die schnelle Antwort.
Wenn ich diesen Befehl benutze, komme ich aber auch ohne diese Schleife aus. Es muss aber mit der Schleife gemacht werden. |
Re: Container Schleife
es sollte in etwa so funktionieren.
Delphi-Quellcode:
Aber was immer eine Containerschleife sein mag?
Edit2.Text:='';
for z:=1 to length(Edit1.text) do begin if edit1.Text[z] = a then edit2.text := edit2.text + b else edit2.text := edit2.text + edit1.text[z]; end; Grüße Klaus |
Re: Container Schleife
Bei der Containerschleife (for ELEMENT in CONTAINER) also in meinem Fall for z in text wird z mit jedem einzelnen Char aus text belegt. Wenn z dann den Char zugewiesen bekam, der in dem linken der kleinen Felder steht, so soll die Schleife dann diesen Char mit dem Buchstaben ersetzen der im rechten kleinen Kästchen steht.
Ach und außerdem. Wenn man nach getaner Arbeit wieder auf das oberste Edit-Feld klickt soll alles geleert werden. Verrät mir auch da noch jemand wie das funktioniert? Danke.^^ |
Re: Container Schleife
Zitat:
Naja, roter Kasten, aber ich poste meinen Vorschlag trotzdem mal :wink:
Delphi-Quellcode:
Mfg
function Manipulieren(Text: String; Old, New: Char): String;
var i: Integer; begin Result := Text; for i := 1 to Length(Result) do if Result[i] = Old then Result[i] := New; end; //Aufruf: Edit2.Text := Manipulieren(Edit1.Text, 'a', 'e');//ersetzt 'a' durch 'e' |
Re: Container Schleife
Zitat:
Ist eine abgewandelte Zählschleife. Muss sie aber so benutzen. :( |
Re: Container Schleife
meinst so was?
Delphi-Quellcode:
function translate(const quelle: string; vonC, NachC: char): string;
var c: char; begin result := ''; for c in quelle do if c = VonC then result := result + NachC else result := result + c; end; |
Re: Container Schleife
Delphi-Quellcode:
Dieses Konstrukt kenn ich nur von Bash-Skripten. Es wäre mir neu, wenn das in Delphi auch ginge.
for c in quelle do
|
Re: Container Schleife
Zitat:
noch 'n schönen abend |
Re: Container Schleife
Da hab ich jetzt Delphi 2007 und kenne nicht mal die Hälfte der Möglichkeiten :lol: Man lernt halt nie aus, Danke Dir.
|
Re: Container Schleife
Darf ich diese Prozedur mit function einfach so unter Button-Click einfügen? :(
Zudem noch die Frage wie ich alles leeren lasse, wenn der Knopf dann gedrückt wurde und ich in edit1 reinklicke. |
Re: Container Schleife
Brauchst Du den Befehl, um Edit1 zu leeren? Nimm entweder
Delphi-Quellcode:
oder
Edit1.Text := '';
Delphi-Quellcode:
Edit1.Clear;
|
Re: Container Schleife
Zitat:
einfach
Delphi-Quellcode:
und schon funzts...
edit4.text := translate(edit1.text, char(edit2.text[1]), char(edit3.text[3]));
PS: ausserdem leert er dir Edit4.text gleich mit ;-) musst davor nur sicherstellen, dass in Edit2 und edit3 etwas eingegeben wurde... |
Re: Container Schleife
Aber in Edit12 könnte anschließend der String aus Edit8 stehen (wieso ist das so schwer, vernünftige Namen für Kompos zu vergeben?)
|
Re: Container Schleife
Zitat:
|
Re: Container Schleife
Das stimmt, aber wenn ich nicht weiß, welches Edit des Screenshots was ist, wie soll ich ihm dann helfen? Intuitiv zu erraten ist das jedenfalls nicht.
|
Re: Container Schleife
ja, wohl lebe die kristallkugel :-D nur die hab ich in der firma vergessen :?
tja, er wirds ja wissen, und 'n wenig transferleistung kann er für seine hausaufgabe ja auch erbringen :-) |
Re: Container Schleife
Zitat:
|
Re: Container Schleife
Zitat:
Ich habe mal in mein schlaues Buch geguckt (von Marco Cantù), und da steht, man könne etwa sowas machen (pssst, willst du ein U kaufen?):
Delphi-Quellcode:
Faszinierend. :stupid:
var s, result : string;
ch : Char; begin result := ''; for ch in s do begin // ch durchläuft nun jeden einzelnen Buchstaben in s if ch = 'u' then result := result + 'x' else result := result + ch; end; end; Ausprobiert habe ich es nicht. |
Re: Container Schleife
Naja gut, aber die "alte" Methode ist ja deshalb nicht verkehrt und vor allem abwärtskompatibel, gell? :zwinker: Trotzdem gut zu wissen, dass die Syntax erweitert wurde.
|
Re: Container Schleife
Zitat:
|
Re: Container Schleife
naja wir haben gerade diese Schleife. Danke schonmal für die Hilfe.^^
Von oben nach unten: Edit 1 Edit 3 Edit 4 Edit 2 |
Re: Container Schleife
Zitat:
|
Re: Container Schleife
Zitat:
schöne grüsse GG BTW: die alte methode ist gegen die neue furchtbar schnell ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz