![]() |
Bestimmter Text in Datei -> Text ändern -> Stream Lese
Hi,
ich bastel grad an einem eigenen Dateiformat. Ich speichere da diverse Sachen mit rein (z.B. Author), dabei wird auch ein Text gespeichert der immer der gleiche ist, damit ich erkennen kann ob das mein Dateiformat ist. Der Text (ist nur nen Testtext) heißt so: Zitat:
Zitat:
Wenn ich nun in dieser gespeicherten Datei aus dem DC-Hochleistungsformat ein DCHochleistungsformat mache, und lade diese Datei mit meinem Programm wieder, kommt es zu einem Stream-Lesefehler. Hier noch die relevante Codestelle:
Delphi-Quellcode:
Die wahrscheinlichkeit, das jemand den Text ändert ist eh gering, aber falls es jemand tut, möchte ich eine Messagebox ausgeben.
function TfDoc.ReadStringFromStream(F: TStream): string;
var aStrLen: Integer; begin F.ReadBuffer(aStrLen, SizeOf(Integer)); SetLength(Result, aStrLen); if aStrLen > 0 then F.ReadBuffer(Pointer(Result)^, aStrLen); end; {eine Procedure} if Pos('.dcd', FileName) > 0 then begin Temp := ReadStringFromStream(aStream); Da aber an der besagten Stelle ein Fehler auftaucht, geht das gleich weiter in den except-Block. Was könnte ich dagegen tun? |
Re: Bestimmter Text in Datei -> Text ändern -> Stream
Schon wieder der gleiche Fehler:
Aus
Delphi-Quellcode:
Würde ich das:
F.ReadBuffer(Pointer(Result)^, aStrLen);
Delphi-Quellcode:
draus machen.
F.ReadBuffer(Result[1], aStrLen);
|
Re: Bestimmter Text in Datei -> Text ändern -> Stream
Hi,
habs jetzt so gebaut:
Delphi-Quellcode:
Jetzt stürzt das Programm ohne irgendeine Fehlermeldung ab. Geht einfach zu.
function TfDoc.ReadStringFromStream(F: TStream): string;
var aStrLen: Integer; Len: Cardinal; begin Len := F.Size; F.ReadBuffer(aStrLen, Len); SetLength(Result, aStrLen); if aStrLen > 0 then F.ReadBuffer(Result[1], aStrLen); end; [edit] Wenn du editiert, dann mach ich das auch :P . Wenn ich das wieder so schreibe:
Delphi-Quellcode:
Gehts zwar immernoch nicht, aber es kommt wieder der Stream-Lesefehler
function TfDoc.ReadStringFromStream(F: TStream): string;
var aStrLen: Integer; begin F.ReadBuffer(aStrLen, SizeOf(Integer)); SetLength(Result, aStrLen); if aStrLen > 0 then F.ReadBuffer(Result[1], aStrLen); end; [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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