Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#23
  Alt 16. Jun 2003, 08:53
Hi Leute,

so wie es aussieht hat jbg recht. Der von Christian beschriebene Thread war auch von mir mit einem ähnlichen Problem wie jetzt. Auch dort wurde von den C-Leuten die ganze Zeit was von 8-Byte Ausrichtung gefaselt und wir haben es mit D5 auf normalem Wege hinbekommen.
Das Problem scheint hier wirklich in der Anordnung der einzelnen Elemente im Record und deren Ausrichtung sowie Länge zu liegen. Die Frage ist nur an welcher Stelle. Ich werde jbg ein zip-File mit den DLL's sowie den Daten auf Privatnachricht zusammenstellen. Da dort Lizenzrechte drauf sind die bezahlt werden müssen möchte ich es nicht so öffentlich machen. Sollte jemand sonst noch ernshaft testen wollen reicht eine kurze Info. Ich schicke das Zeug dann. Über unsere Erfolge und Mißerfolge halte ich in diesem Thread aber auf dem laufenden, damit er vollständig bleibt un jemandem mit ähnlichen Problemen ausreichen Infos zur Lösung bietet.
Ich gehe sowiso davon aus, das die Diskussion in diesem Thread erfolg und nicht über PN.

So, nun mal was zu euren Antworten.

Dank an Christian für den Zitat-Tip.

Hi jbg,
wenn durch die arrays 2 Byte bei packed verlorengehen und davon 3 vorhanden sind

nPrioritaet[7]
nGeschwindigkeit[7]
nVerbrauch[7]

warum gehen dann in der gesamten Struktur nur 2 Byte und nicht 6 Byte verloren?

Ich habe über CPU-Debuging festgestellt, dass bei der Angabe
   nPrioritaet : array[0..7] of short; im Speicher alle Elemente von nPrioritaet innerhalb des Records hintereinander stehen und nicht über Zeiger an einer anderen Stelle. So müßte sich ein Packed doch eigentlich mit einer Kürzung der Länge der Struktur auf 7 * 2 auswirken. Das natürlich für jedes array. Die Frage ist zusätzlich noch, ob sich ein packed record gleichlautend auf die im Record befindlichen array's auswirkt oder diese bei globalem Compilerschalter $A nicht gepackt werden. Müßte mann hier dann folgendes schreiben um auch diese gepackt zu erhalten?
Delphi-Quellcode:
  TRW_Fahrzeug = packed Record
   .
   .
   nPrioritaet : packed array[0..7] of short;
Das jetzt nur mal zur Theorie. Ich hab schon verstanden, dass du packed nicht haben willst.

O.K., ich werd jetzt mal die DLL's und Daten zusammenschaufeln.

Gruß oki
  Mit Zitat antworten Zitat