Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Container Schleife (https://www.delphipraxis.net/113418-container-schleife.html)

Lord Isaac 7. Mai 2008 16:03


Container Schleife
 
Hey Leute. Ich habe folgendes Problem. Ich soll mithilfe einer Containerschleife einen Text manipulieren.

http://img393.imageshack.us/img393/7954/bildvq1.png

Code:
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;
Durch diese Schleife soll der Text oben mit dem Ersetzungsbuchstaben manipuliert werden. Kann mir jemand helfen? Ist sehr dringend.

Danke schon einmal im voraus. =)

dominikkv 7. Mai 2008 16:05

Re: Container Schleife
 
Schau mal nach StringReplace

Lord Isaac 7. Mai 2008 16:14

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.

Klaus01 7. Mai 2008 16:19

Re: Container Schleife
 
es sollte in etwa so funktionieren.

Delphi-Quellcode:
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;
Aber was immer eine Containerschleife sein mag?

Grüße
Klaus

Lord Isaac 7. Mai 2008 16:24

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.^^

Fussball-Robby 7. Mai 2008 16:25

Re: Container Schleife
 
Zitat:

Zitat von Klaus01
Aber was immer eine Containerschleife sein mag?

Hab ich mich auch gerade gefragt..

Naja, roter Kasten, aber ich poste meinen Vorschlag trotzdem mal :wink:
Delphi-Quellcode:
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'
Mfg

Lord Isaac 7. Mai 2008 16:28

Re: Container Schleife
 
Zitat:

Aber was immer eine Containerschleife sein mag?
Das habe ich in meinem Beitrag vorher mal versucht zu erklären.^^

Ist eine abgewandelte Zählschleife. Muss sie aber so benutzen. :(

grenzgaenger 7. Mai 2008 16:54

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;

DeddyH 7. Mai 2008 17:26

Re: Container Schleife
 
Delphi-Quellcode:
for c in quelle do
Dieses Konstrukt kenn ich nur von Bash-Skripten. Es wäre mir neu, wenn das in Delphi auch ginge.

grenzgaenger 7. Mai 2008 17:28

Re: Container Schleife
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
for c in quelle do
Dieses Konstrukt kenn ich nur von Bash-Skripten. Es wäre mir neu, wenn das in Delphi auch ginge.

doch gibts, ist 'n neues konstrukt welches zu D2005 oder D2006 eingeführt wurde. hab es allerdings selbst noch nicht verwendet. danneben erschliesst sich mir der sinn der sache nicht ... :drunken:

noch 'n schönen abend

DeddyH 7. Mai 2008 17:30

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.

Lord Isaac 7. Mai 2008 18:07

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.

DeddyH 7. Mai 2008 18:14

Re: Container Schleife
 
Brauchst Du den Befehl, um Edit1 zu leeren? Nimm entweder
Delphi-Quellcode:
Edit1.Text := '';
oder
Delphi-Quellcode:
Edit1.Clear;

grenzgaenger 7. Mai 2008 18:18

Re: Container Schleife
 
Zitat:

Zitat von Lord Isaac
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.

weshalb willste das einfügen? 'n funktionsaufruf ist doch viel elleganter ... :-)

einfach
Delphi-Quellcode:
edit4.text := translate(edit1.text, char(edit2.text[1]), char(edit3.text[3]));
und schon funzts...

PS: ausserdem leert er dir Edit4.text gleich mit ;-)

musst davor nur sicherstellen, dass in Edit2 und edit3 etwas eingegeben wurde...

DeddyH 7. Mai 2008 18:23

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?)

grenzgaenger 7. Mai 2008 18:27

Re: Container Schleife
 
Zitat:

Zitat von DeddyH
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?)

da hast du recht, die variablen gehören sich vernünftig benannt. ich hab keine ahnung, was sein edit1 ist... ;-) . aber er wird es schon wissen... nur wirklich gut können wir ihm so nicht weiterhelfen ...

DeddyH 7. Mai 2008 18:29

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.

grenzgaenger 7. Mai 2008 18:31

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 :-)

DeddyH 7. Mai 2008 18:32

Re: Container Schleife
 
Zitat:

Zitat von grenzgaenger
und 'n wenig transferleistung kann er für seine hausaufgabe ja auch erbringen

Genau :cheers:

bluesbear 7. Mai 2008 18:44

Re: Container Schleife
 
Zitat:

Zitat von DeddyH
Da hab ich jetzt Delphi 2007 und kenne nicht mal die Hälfte der Möglichkeiten :lol: Man lernt halt nie aus, Danke Dir.

Jahaha, geht mir genauso :)
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:
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;
Faszinierend. :stupid:
Ausprobiert habe ich es nicht.

DeddyH 7. Mai 2008 18:49

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.

bluesbear 7. Mai 2008 18:57

Re: Container Schleife
 
Zitat:

Zitat von DeddyH
Naja gut, aber die "alte" Methode ist ja deshalb nicht verkehrt (...)

Als Antwort auf die Ausgangsfrage schon. Wenn das wirklich für Hausaufgaben ist, sind Lehrer da pingelig. :zwinker:

Lord Isaac 7. Mai 2008 21:23

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

grenzgaenger 7. Mai 2008 23:47

Re: Container Schleife
 
Zitat:

Zitat von Lord Isaac
naja wir haben gerade diese Schleife. Danke schonmal für die Hilfe.^^

Von oben nach unten:

Edit 1
Edit 3 Edit 4
Edit 2

und was willst du uns damit sagen?

grenzgaenger 7. Mai 2008 23:50

Re: Container Schleife
 
Zitat:

Zitat von DeddyH
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.

tja, stimmt schon, aber diese methode ist halt furchtbar langsam (zur standard methode). aber sie soll halt auch bei den tList(...) funktionieren, und da könnts schon was vernünftiges geben :-)

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