Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EOutOfMemory, programm bricht bei einfacher schleife ab !? (https://www.delphipraxis.net/16257-eoutofmemory-programm-bricht-bei-einfacher-schleife-ab.html)

shareholder 13. Feb 2004 16:37


EOutOfMemory, programm bricht bei einfacher schleife ab !?
 
Liste der Anhänge anzeigen (Anzahl: 1)
mein code

Delphi-Quellcode:
  s := 'aaa'; // startstring
  pos := 0; // letzter buchstabe

  for i := 1 to High(ABC) 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);
      // wenn letzter buchstabe höchster string in array index erhöhen
      if s[Length(s)] = ABC[High(ABC)] then inc(pos);
    end;
  end;
[edit=sakura] Das Bild ist im Anhang - Du musst es nicht extra posten :evil: Mfg, sakura[/edit]

Schubi 13. Feb 2004 17:49

Re: EOutOfMemory, programm bricht bei einfacher schleife ab
 
Also gut, hab das ganze mal nachgebaut. Der Fehler kommt bei mir auch...Jetzt lass mich mal probieren :mrgreen:

Schubi 13. Feb 2004 18:12

Re: EOutOfMemory, programm bricht bei einfacher schleife ab
 
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 :gruebel: :mrgreen: :roll:

shareholder 14. Feb 2004 17:07

Re: EOutOfMemory, programm bricht bei einfacher schleife ab
 
Zitat:

Zitat von Schubi
Viel Spass damit, was du auch imemr damit vor hast :gruebel: :mrgreen: :roll:

danke ! wollte eigentlich alle möglichen buchstaben kombinationen (ermittelt aus einem array) in ein memo schreiben. :) klappt nur noch net. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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