Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi record: anzahl der Variablen (https://www.delphipraxis.net/145629-record-anzahl-der-variablen.html)

R2009 5. Jan 2010 14:08


record: anzahl der Variablen
 
Hi,
kann ich irgendwie feststellen wieviele Variablen der Record Treceiver enthält?
Muss mit D7 arbeiten.
Der Record wird an eine DLL übergeben. Spätestens zu diesem Zeitpunkt kenne ich die Grösse des Arrays nicht mehr. Im schlimmsten Fall kenne ich auch die Anzahl der Variablen in Titemtyp nicht.
Mit length(..) gehts also nicht.Name und Wert gibts immer, der Rest muss mich nicht interessieren.

Delphi-Quellcode:
  Titemtyp=packed record
    name:shortstring;
    wert:shortstring;
  end;
  Treceiver=packed record
     l:array[0..size-1] of Titemtyp;
  end;
Danke
Rainer

Medium 5. Jan 2010 14:13

Re: record: anzahl der Variablen
 
Wenn du das Array als Pointer an eine non-Delphi-DLL (also eine solche ohne Borlands ShareMem) übergibst, musst du entweder die Länge separat übergeben, oder ein Ende-Kennzeichen einführen. Ansonsten gibbet da nix, da ist ein Array einfach nur ein Stück Speicher ohne jede Metainformation.

R2009 5. Jan 2010 14:16

Re: record: anzahl der Variablen
 
Hi medium,

im Moment ist das noch eine Delphi DLL. Soll aber später durch non Delphi ersetzt werden.
Ok dann geh ich den Weg und übergebe die Länge.

Grüsse
rainer

Medium 5. Jan 2010 14:20

Re: record: anzahl der Variablen
 
Das ist denke ich auch durchaus der übliche Weg. Sämtliche z.B. WinAPIs, die Arrays entgegennehmen, brauchen imho auch immer eine separate Längenangabe. Ende-Kennzeichen sind mir bisher nur an einer Stelle begegnet: Direct3D Vertexdeklarationen :stupid:

himitsu 5. Jan 2010 14:56

Re: record: anzahl der Variablen
 
Wenn immer mindestens in einem der Strings ein Text drin ist, dann könntet du dir über einen leeren Record das Ende markieren, also einfach einen Record mit jeweils '' hinter den Daten dranhängen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 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