AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf einen Record direkt zugreifen

Ein Thema von Opa · begonnen am 10. Okt 2009 · letzter Beitrag vom 11. Okt 2009
Antwort Antwort
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Auf einen Record direkt zugreifen

  Alt 10. Okt 2009, 19:15
Könntest Du nicht einfach 2 PDateiListRec nehmen und diese mit CompareMem vergleichen ?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Auf einen Record direkt zugreifen

  Alt 10. Okt 2009, 19:24
Mit class operator sollte sowas funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Auf einen Record direkt zugreifen

  Alt 10. Okt 2009, 19:25
Gab es die in Delphi 7 schon?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Auf einen Record direkt zugreifen

  Alt 10. Okt 2009, 19:26
Nein, hab's auch eben erst gesehen, dass der Herr TE Delphi 7 verwendet.
  Mit Zitat antworten Zitat
Benutzerbild von Opa
Opa

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

Re: Auf einen Record direkt zugreifen

  Alt 10. Okt 2009, 22:02
CompareMem, scheint zu gehen.
Danke
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
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Auf einen Record direkt zugreifen

  Alt 11. Okt 2009, 09:57
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
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.
Angehängte Dateien
Dateityp: pas comparerecord_999.pas (5,9 KB, 7x aufgerufen)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.
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