Autor Beitrag
Argiope
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 19.11.08 11:34 
Hallo,

bin das erstemal hier undd schreibe progs nur wenn ich muss :-).

ich möchte eine Datei lesen, die aus folgenden dynamischen Records besteht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  Cnt1  : word;  // Offset 0 : Länge von Str1
  Str1  : pchar;  // 0-terminierter String    
  Cnt2  : word;  // Offset =Cnt1+2 : Länge von Str2
  Str2     : pchar;    // 0-terminierter String
  Cnt3     : word;          // Offset =Cnt1+Cnt2+2+2 : Länge von Str3
  Str3     : pchar;    // 0-terminierter String
  Cnt4     : Dword;       // Offset =Cnt1+Cnt2+Cnt3+2+2+2 : Anzahl der Kacheln
  Kacheln   : array of Dword;   // Index in eine andere Tabelle 
  Cnt5     : Dword;       // offset =Cnt1+2+Cnt2+2+Cnt3+2(Cnt4*4)+4 Anzahl der Eckwertpaare
  Ecken    : array of double;  // Eckwertepaare je 2*double


bislang habe ich mir geholfen indem ich das in eine Array of bytes gepackt habe und mit move an die richtigen stellen geräumt.
Aber für die Strings schlägt das fehl, die sind hinterher leer.

Hat jemand eine Idee?

Gruß,

Thomas

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 20.11.08 14:52 
Beim Lesen von Strings musst Du bevor Du diese befüllen kannst manuell SetLength aufrufen.
Gleiches gilt für dynamische Arrays.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Argiope Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 20.11.08 15:45 
Hallo,

Problem gelöst mit Array[0..127] of char pchar und zuweisung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
            blockread(anyfile,Cnt1,2);
            blockread(anyfile,Anystr,Cnt1);
            anypchar:=@anystr[0];
            Str1:=string(anypchar);


Str1 ist nun kein pchar mehr sondern ein string

Danke.

Gruß

Thomas

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt