![]() |
EOutOfMemory
Hi,
ich bekomme bei diesem Code eine EOutOfMemory-Exception:
Delphi-Quellcode:
Weis jemand warum?function TfDoc.ReadStringFromStream(F: TStream): string; var aStrLen: Integer; begin F.ReadBuffer(aStrLen, SizeOf(Integer)); SetLength(Result, aStrLen); //<<< Da kommt ein Fehler if aStrLen > 0 then F.ReadBuffer(Pointer(Result)^, aStrLen); end; {Procedure blablabla} ReadStringFromStream(aStream); FName := ReadStringFromStream(aStream); if FName <> ExtractFileName(FileName) then begin MessageBox(Handle, 'Der Dateiname wurde seit dem letzten Speichern verändert.', 'Hinweis', MB_OK); Modified := true; IsMod := true; end else IsMod := false; FAuthor := ReadStringFromStream(aStream); FDate := ReadStringFromStream(aStream); FComment := ReadStringFromStream(aStream); Temp := ReadStringFromStream(aStream); aSStream := TStringStream.Create(Temp); case FEditor of etRichText: RichEdit.Lines.LoadFromStream(aSStream); etCode: Code.Lines.LoadFromStream(aSStream); end; FIsDC := true; |
Re: EOutOfMemory
Schonmal im Debugger überprüft, wie groß aStrLen nach dem Einlesen ist?
|
Re: EOutOfMemory
Hi,
ich glaube es lag an dem Dokument das ich geladen habe. Ich hab jetzt mal ein anderes geladen, dort gings auf Anhieb. In welchem Fall tritt diese Fehlermeldung auf? |
Re: EOutOfMemory
Wenn in aStrLen eine Zahl > High(Integer) steht. Für gewöhnlich wären das dann (als Integer gesehen) negative Werte, die dann umklappen dürften.
Ein Prozess darf imho nicht mehr als 2GB allozieren. \\edit: Probier mal "SetLength(Array, -1);" Mich würde mal interessieren was dabei raus kommt. (Hab grad kein Delphi zur Hand) |
Re: EOutOfMemory
Zitat:
Zitat:
|
Re: EOutOfMemory
Zitat:
Aber auch wenn man's ohne Bereichsprüfung kompiliert!? Und evtl. dann auch mal mit einer Variablen:
Delphi-Quellcode:
:?:
var
i: Integer; begin i := -1; SetLength(Array, i); end; |
Re: EOutOfMemory
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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