Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bestimmter Text in Datei -> Text ändern -> Stream Lesefehler (https://www.delphipraxis.net/38670-bestimmter-text-datei-text-aendern-stream-lesefehler.html)

Die Muhkuh 22. Jan 2005 15:43


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:

DC-Hochleistungsformat
So, wenn der in die Datei gespeichert wird, sieht das ganze so aus:

Zitat:

 DC-Hochleistungsformat Ein Test.dcd <Kein> 22.01.2005 16:26:25 <Kein>µ
(Da sind noch solche Kästchen dazwischen. Kann ich nicht mitkopieren.)

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:
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);
Die wahrscheinlichkeit, das jemand den Text ändert ist eh gering, aber falls es jemand tut, möchte ich eine Messagebox ausgeben.
Da aber an der besagten Stelle ein Fehler auftaucht, geht das gleich weiter in den except-Block.

Was könnte ich dagegen tun?

Luckie 22. Jan 2005 15:46

Re: Bestimmter Text in Datei -> Text ändern -> Stream
 
Schon wieder der gleiche Fehler:
Aus
Delphi-Quellcode:
F.ReadBuffer(Pointer(Result)^, aStrLen);
Würde ich das:
Delphi-Quellcode:
F.ReadBuffer(Result[1], aStrLen);
draus machen.

Die Muhkuh 22. Jan 2005 15:51

Re: Bestimmter Text in Datei -> Text ändern -> Stream
 
Hi,

habs jetzt so gebaut:

Delphi-Quellcode:
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;
Jetzt stürzt das Programm ohne irgendeine Fehlermeldung ab. Geht einfach zu.

[edit]
Wenn du editiert, dann mach ich das auch :P . Wenn ich das wieder so schreibe:

Delphi-Quellcode:
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;
Gehts zwar immernoch nicht, aber es kommt wieder der Stream-Lesefehler

[/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