![]() |
Auf einen Record direkt zugreifen
Wenn ich so einen Record habe (siehe unten), wie kann ich auf dem Direkt im Speicher zugreifen?
Delphi-Quellcode:
Was ich machen möchte ist folgendes.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; 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:
Aufruf:
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; Dh_ByteCompare(@S1,@S2,L1=XX,L2=XX); Ich hoffe ich habe mich klar ausgedrück |
Re: Auf einen Record direkt zugreifen
Könntest Du nicht einfach 2 PDateiListRec nehmen und diese mit CompareMem vergleichen :gruebel:?
|
Re: Auf einen Record direkt zugreifen
Mit class operator sollte sowas funktionieren.
|
Re: Auf einen Record direkt zugreifen
Gab es die in Delphi 7 schon?
|
Re: Auf einen Record direkt zugreifen
Nein, hab's auch eben erst gesehen, dass der Herr TE Delphi 7 verwendet. :-)
|
Re: Auf einen Record direkt zugreifen
CompareMem, scheint zu gehen.
Danke |
Re: Auf einen Record direkt zugreifen
Liste der Anhänge anzeigen (Anzahl: 1)
comparemem sollte aber nicht gehen, da das Record dynamische Komponenten (hier: strings) enthält.
Irgendwo hatt ich mal eine Funktion zum vergleichen von beliebigen Records geschrieben :gruebel: Wenn es aber nur um einen bestimmten record geht, ist es schneller du schreibst in dem Fall eine angepasste Vergleichsfunktion. Edit: gefunden (Anhang), und sieht so aus als hätte ich es damals fertig programmiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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