Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi typisierte Datei mit freiem Offset einlesen (https://www.delphipraxis.net/115805-typisierte-datei-mit-freiem-offset-einlesen.html)

messie 18. Jun 2008 10:34


typisierte Datei mit freiem Offset einlesen
 
Moin,

ich habe eine Frage zum Einlesen von Dateien: ich habe eine Datei mit einem unbekannten Header der Länge x und Daten eines records (3xdouble). Die Funktion Seek gibt mir aber nicht die Möglichkeit, den Offset frei zu wählen, sondern nur in Recordlängen.
Gibt es da andere Lösungen, oder muss ich das alles Byteweise sortieren?

Danke, Messie

gammatester 18. Jun 2008 11:40

Re: typisierte Datei mit freiem Offset einlesen
 
Zitat:

Zitat von messie
Moin,

ich habe eine Frage zum Einlesen von Dateien: ich habe eine Datei mit einem unbekannten Header der Länge x und Daten eines records (3xdouble). Die Funktion Seek gibt mir aber nicht die Möglichkeit, den Offset frei zu wählen, sondern nur in Recordlängen.
Gibt es da andere Lösungen, oder muss ich das alles Byteweise sortieren?

Danke, Messie

Was heißt Byteweise sortieren? Da keine einheitliche Struktur da ist, muß flexibel gelesen werden. Allerdings nicht mit file of byte oder ähnlich, sondern zB so:

Delphi-Quellcode:
reset(datei, 1);
seek(datei, offset);
blockread(datei, MyRecord, sizeof(MyRecord);
Gruß Gammatester

Muetze1 18. Jun 2008 12:24

Re: typisierte Datei mit freiem Offset einlesen
 
Oder gleich die alten Pascal Routinen mit ihren Spinnenweben so liegenlassen und TStream nutzen:

Delphi-Quellcode:
type
  TDoubleData = packed record
    Double1, Double2, Double3: double;
  end;
var
  lStream: TStream;
  lData: TDoubleData;
begin
  lStream := TFileStream.Create('deinFile.ext', fmOpenRead);
  try
    lStream.Position := x; // deine Position X
    lStream.ReadBuffer(lData, sizeof(lData));
  finally
    lStream.Free;
  end;
end;

messie 18. Jun 2008 14:04

Re: typisierte Datei mit freiem Offset einlesen
 
Danke, super Idee!


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