Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler: Arbeitsspeicher zu klein (?!?) (https://www.delphipraxis.net/65505-fehler-arbeitsspeicher-zu-klein.html)

Chris WF 17. Mär 2006 12:12


Fehler: Arbeitsspeicher zu klein (?!?)
 
Hi Leute,

ich hab mir in Delphi einen ICQ History Viewer programmiert. Über readln lese ich dabei zeile für zeile in einen dynamischen String-array ein. Nur leider kommt(erst während der Laufzeit) bei größeren Dateien der Fehler "Arbeitsspeicher zu klein". An sich kann er nicht zu klein sein(1 GB), aber ich vermute, dass Delphi sich nur einen bestimmten Bereich des Arbeitsspeichers reserviert. Kann man den irgendwie vergrößern. Oder, wenn meine Vermutung falsch ist, gibt es eine andere Möglichkeit ???

Hier mal der Code(ist nix besonderes):
Delphi-Quellcode:
var Lines: array of string;

function getLines: boolean;
var fdatei: textfile;
begin
     form1.opendialog1.execute;
     assignfile(fdatei,form1.OpenDialog1.FileName);
     reset(fdatei);
     repeat
           setlength(lines,length(lines)+1);
           readln(fdatei,lines[high(lines)]);
     until eof(fdatei);
     closefile(fdatei);
end;

himitsu 17. Mär 2006 12:38

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
Wie groß ist denn die Datei und wieviele Zeilen hat sie?

Ich vermute da eher ein Defragmentierungsproblem eventuell hilft es da ja auch schon, wenn du mal einen anderen MemoryManager verwendest ... ansich sollte der MM von Delphi 2 GB verwalten können.

marabu 17. Mär 2006 12:40

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
Hi Chris,

du verbrauchst auf diese Weise auf jeden Fall mehr Speicher als du denkst. Nimm statt des array lieber eine StringList:

Delphi-Quellcode:
uses
  Classes;

type
  TForm1 = class(TForm)
  private
    Lines: TStringList;
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Lines := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Lines.Free;
end;

procedure TForm1.OpenButtonClick(Sender: TObject);
begin
  with OpenDialog do
    if Execute then
      Lines.LoadFromFile(FileName);
end;
Grüße vom marabu

Luckie 17. Mär 2006 12:44

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
Argh, warum wird hier schon wieder in fünf Foren gleichzeitig gepostet? :evil:

http://www.delphi-forum.de/viewtopic...=344976#344976

himitsu 17. Mär 2006 12:44

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
Zitat:

Zitat von marabu
du verbrauchst auf diese Weise auf jeden Fall mehr Speicher als du denkst.

Also mindestens 12 Byte pro String gehen alleine für die Stringbehandlung und das Speichermanagement drauf.

Chris WF 17. Mär 2006 12:59

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
Zitat:

Zitat von Luckie
Argh, warum wird hier schon wieder in fünf Foren gleichzeitig gepostet? :evil:

http://www.delphi-forum.de/viewtopic...=344976#344976

Um möglichst viele produktive Antworten zu bekommen...

Und in oben erwähnten Forum wurde mir auch schon ausreichend geholfen.
Vielen Dank trotzdem.

Wer wissen will, was ich gemacht hat, kann ja dort grad mal schauen;)

PS: Nur ZWEI Foren, keine fünf *g*

Luckie 17. Mär 2006 13:06

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
Zitat:

Zitat von Chris WF
Zitat:

Zitat von Luckie
Argh, warum wird hier schon wieder in fünf Foren gleichzeitig gepostet? :evil:

http://www.delphi-forum.de/viewtopic...=344976#344976

Um möglichst viele produktive Antworten zu bekommen...

Nein, die würdest du auch in einem Forum bekommen und wenn nach drei tagen keine hilfreiche Antwiort dabei ist, DANN kann man es noch mal in einem anderen Forum probieren (und nach Möglichkeit die Beiträge verlinken, damit man weiß, was schon geantwortet wurde).

Woher soll man wissen, was schon geantwortet wurde und was du schon probiert hast? Du hast vielelicht vile Antworten, aber wir machen uns umsonst die Mühe uns mit deinem Problem auseinanderzusetzen.

Zitat:

Wer wissen will, was ich gemacht hat, kann ja dort grad mal schauen;)
Und wo?

Chris WF 17. Mär 2006 13:44

Re: Fehler: Arbeitsspeicher zu klein (?!?)
 
auch wenn das jetzt ziemlich off-topic ist :
Da du ja schon den Link gepostet hattest, brauchte ich das ja nich mehr zu tun.

Und irgendwie finde ich deine Reaktion bisschen übertrieben, ganz ehrlich.
Ich finds ja nett, das du das verlinkt hast, aber vielleicht hätte ich das ja auch getan, nachdem mir geholfen wurde...

Aber ich hab keine Lust groß zu diskutieren, wahrscheinlich hast du sowieso immer recht und dann red dich hier gegen ne Wand.
In diesem Sinne erntschuldige ich mich beim ganzen Delphi-Praxisforum und verspreche in Zukunft von anfang an immer schön brav links zu setzen :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz