Einzelnen Beitrag anzeigen

Benutzerbild von Opa
Opa

Registriert seit: 12. Jun 2003
107 Beiträge
 
Delphi 7 Enterprise
 
#1

Auf einen Record direkt zugreifen

  Alt 10. Okt 2009, 19:10
Wenn ich so einen Record habe (siehe unten), wie kann ich auf dem Direkt im Speicher zugreifen?
Delphi-Quellcode:

  PDateiListRec = ^TDateiListRec;
  TDateiListRec = packed record
    SRec : TSearchRec; //SysUtils
    Pfad : string;
    DateiName : string;
    Ext : string;
    DestPfad : string;
    DestDateiName : string;
    DestExt : string;
    CRC64Calc : int64;
    Duplikat : boolean;
    Error : boolean;
    Change : boolean;
    DateTime : TDateTime;
    DuplikatIndex : integer;
    Select : boolean;
    Index : word;
  end;
var
S1,S2 : TdateiListRec;
Was ich machen möchte ist folgendes.
if S1 = S2
then Label1.Caption := 'true'
else Label1.Caption := 'false'
Das geht so nicht!

Ich möchte den Ganzen Record in ggf. ein array of byte speichern um ihn mit dann zu vergleichen. Ich könnte die ganzen Namen nehmen und diese Umwandeln und dann diese Speichern. Das ist naja.

So in der Form von
For I := 1 to length(S1.Dateiname) …
Buf1[0] := S1.Dateiname[I]; usw.
Diese geht - natürlich.

Ich möchte den Speicher mit Move Kopieren (länge kann ich ermittel) etwa so. Nur das geht auch nicht.
Delphi-Quellcode:
function Dh_ByteCompare(AB1,AB2:pointer;AL1,AL2:word):boolean;
var
  Buf1 : array[0..1255] of char;
  Buf2 : array[0..1255] of char;

begin
  Move(AB1^,Buf1,SizeOf(Buf1));
  Move(AB2^,Buf2,SizeOf(Buf2));
End;
Aufruf:
Dh_ByteCompare(@S1,@S2,L1=XX,L2=XX);

Ich hoffe ich habe mich klar ausgedrück
Wenn man nicht weiß was man sucht, findet man auch mit Google nichts.
Bevor ich hier eine Frage stelle, wurde Google vorher befragt. Hinweise dieser Art kann man sich schenken. Im übrigen muss mir niemand antworten.
  Mit Zitat antworten Zitat