Einzelnen Beitrag anzeigen

Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#3

Re: EOutOfMemory, programm bricht bei einfacher schleife ab

  Alt 13. Feb 2004, 19:12
Langweiliger Fehler... *gähn*

Hier der kottigierte Code:

Delphi-Quellcode:
  for i := 1 to Length(s) do begin
    for j := 1 to High(ABC) do begin
      // letzten (oder pos) buchstaben ersetzen
      s[(Length(s)-pos)] := ABC[j];
      // neuen string in memo eintragen
      Memo1.Lines.Add(s);
      Application.ProcessMessages;
      // wenn letzter buchstabe höchster string in array index erhöhen
      if s[Length(s)-pos] = ABC[High(ABC)] then inc(pos);
    end;
  end;
Erklärung:
Punkt 1 Length(s):
Nicht die länge vom ABC ist ausschlaggebend sondern die Länge vom String "s". hier also 3

Punkt 2 application.ProcessMessages:
Processmessages damit das memo während der Schlefe aktualisiert wird, muss aber nicht sein

Punkt 3 if s[Length(s)-pos]:
Ohne das "-pos" prüfst du ja immer nur den letzten Buchstaben. Deswegen war auch nach dem ersten durchgang Schluss!

Viel Spass damit, was du auch imemr damit vor hast
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat