Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typorisierte Datei wird nicht gelesen (https://www.delphipraxis.net/72833-typorisierte-datei-wird-nicht-gelesen.html)

arbu man 7. Jul 2006 16:22


Typorisierte Datei wird nicht gelesen
 
Hi,

Ich lese mit folgenden code eine typorisierte Datei aus:
Delphi-Quellcode:
// TFunktionenArray: array of TFunktion
// TFunktion: record
// TFunktionenDatei = File of TFunktion;
function FunktionenLesen(FileName: String): TFunktionenArray;
var
  Datei: TFunktionenDatei;
  i, count: integer;
begin
  AssignFile(Datei, FileName);   // Datei zuweisen
  Reset(Datei);                  // Datei öffnen
  count:= FileSize(Datei) div sizeof(TFunktion);
  setlength(result, count);
  for i:=0 to count -1 do begin
    Seek(Datei, i);              // Datensatzzeiger an gewünschte Position
                                  // bewegen
    Read(Datei, result[i]);      // die aktuellen Werte lesen
  end;
  CloseFile(Datei);              // Datei schließen
end;
Leider bleibt der array leer aber in der datei stehen daten, es kommt aber kein fehler was läuft da falsch ?

mfg, Björn

RavenIV 7. Jul 2006 16:32

Re: Typorisierte Datei wird nicht gelesen
 
lass mal die Deklarationen von
Delphi-Quellcode:
// TFunktionenArray: array of TFunktion
// TFunktion: record
// TFunktionenDatei = File of TFunktion;
sehen.
Du musst schon ein Bisschen mehr Code rausrücken, damit man Dir helfen kann...

arbu man 7. Jul 2006 16:34

Re: Typorisierte Datei wird nicht gelesen
 
Okay also hier sind sie:
Delphi-Quellcode:
type
  TFunktion = packed record
    Name: String[255];
    _Unit: String[255];
    Deklaration: String[255];
    Params: array[1..32] of TParameter;
    Beschreibung: LongString;
    Beispiel: LongString;
  end;

type
  TFunktionenArray = array of TFunktion;
  TFunktionenDatei = File of TFunktion;

Michael Habbe 7. Jul 2006 16:52

Re: Typorisierte Datei wird nicht gelesen
 
Müsste das nicht File of TFunktionenDatei heissen?

Zitat:

Zitat von arbu man
Delphi-Quellcode:
function FunktionenLesen(FileName: String): TFunktionenArray;
var
  Datei: TFunktionenDatei;
         ^^^^^
  i, count: integer;
begin
...
end;


Was ist das für ein Typ?

Zitat:

Zitat von arbu man
Delphi-Quellcode:
    Params: array[1..32] of TParameter;


MrSpock 7. Jul 2006 17:28

Re: Typorisierte Datei wird nicht gelesen
 
Hallo arbuman,

wie rufst du diese Funktion denn auf?

Zacherl 7. Jul 2006 17:30

Re: Typorisierte Datei wird nicht gelesen
 
[etwas Off-Topic]
Heißt das nicht typisierte Datei anstelle von typorisierte Datei :gruebel:
[/etwas Off-Topic]

Union 7. Jul 2006 17:33

Re: Typorisierte Datei wird nicht gelesen
 
Müsste es nicht vilmehr so heißen:
Delphi-Quellcode:
Seek(Datei, i*Sizeof(TFunktion));

MrSpock 7. Jul 2006 17:40

Re: Typorisierte Datei wird nicht gelesen
 
Hallo,

nein, seek(Datei, i) ist korrekt. Eine typisierte Datei kennt die Länge der Datensätze.

Aber die Rückgabe eines Arrays, dessen Länge erst in der Procedur ermittelt wird ist schwierig. Arbeite lieber mit einem VAR Parameter für die Rückgabe, dann wir die Längenanpassung auf das übergebenen Array angewendet.

arbu man 7. Jul 2006 17:55

Re: Typorisierte Datei wird nicht gelesen
 
Also alle weiteren typen im record sind:
Delphi-Quellcode:
type
  LongString = record
    Len: integer;
    Content: array[1..1024] of char; // 1 KB
  end;

type
  TParameter = packed record
    Pas: String[255];
    Doku: String[255];
  end;
Aufrufen tue ich das ganze mit:
Delphi-Quellcode:
begin
  if opendialog.Execute then begin
    FunktionenLesen(opendialog.filename, fa);
    _update; // array einlesen
  end;
end;

Khabarakh 7. Jul 2006 18:19

Re: Typorisierte Datei wird nicht gelesen
 
Ist ja nett, wenn du in der Zwischenzeit deine Funktionen abänderst, aber vielleicht solltest du dann auch den neuen Quellcode zeigen.
(Die Signatur von "FunktionenLesen" ist im ersten Beitrag anders als im letzten und um genau diese ging es Mr. Spock)

[OT]
@Florian: Wahrscheinlich meint er vaporisierte Dateien, mit denen hab ich auch schon leidliche Erfahrungen :stupid: .
[/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 1 von 2  1 2      

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