AGB  ·  Datenschutz  ·  Impressum  







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

sizeof record

Ein Thema von Surrounder · begonnen am 1. Jul 2004 · letzter Beitrag vom 2. Jul 2004
Antwort Antwort
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#1

sizeof record

  Alt 1. Jul 2004, 08:59
Hallo Forum hab eine kurze Frage, wenn ich folgendes mache:

Ttest1 = record
a : Byte;
end;

Ttest2 = record
b : Byte;
c : Ttest1
end;

var
test2 : Ttest2;

und dann sizeof( test2 ) mache dann bekomme ich immer 4 raus, steht da im record2 ein Zeiger auf den ersten oder woher kommt das?

Das Problem hört sich jetzt vielleicht blöd an, aber ich habe in wirklichkeit Records mit ca. 60 Variablen. Um die Übersicht zu behalten habe ich die in einzelne weitere Records aufgeteilt und dann in einem Hauptrecord zusammengefasst, nur stimmt eben jetzt die Bytegrösse nicht mehr. Die brauche ich aber um das ganze als Packet zu verschicken!?!
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: sizeof record

  Alt 1. Jul 2004, 09:11
Hier schlägt anscheinend das Alignment von Delphi zu.

Sag mal die größe wenn die die Records als packed deklarierst.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#3

Re: sizeof record

  Alt 1. Jul 2004, 09:22
ja dann stimmt es, dann kommt 2 raus.

hat das packed Nachteile? soviel ich weiss wird das dann doch hintereinander im Speicher abgelegt oder? müsste also langsamer sein oder ist das unmerklich
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: sizeof record

  Alt 1. Jul 2004, 10:41
Das packed ist langsamer!

Vielleicht merkt man es bei großen und langen Schleifen!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: sizeof record

  Alt 1. Jul 2004, 13:30
Moin Surrounder,

auch wenn es langsamer wird, so kommt man u.U. nicht darum herum die packed Variante zu nutzen, z.B., wenn mit diesem Record Daten aus Dateien ausgelesen/geschrieben werden sollen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#6

Re: sizeof record

  Alt 1. Jul 2004, 17:29
Wasn Zufall, genau das gleiche Problem hatte ich (unbewusst)auch.
Ich hab mich die ganze Zeit gewundert, warum die Daten nicht richtig gespeichert werden....
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#7

Re: sizeof record

  Alt 1. Jul 2004, 21:52
@all

danke für die schnellen Antworten, ich habe die Records jetzt auch alle packed gemacht. Ich hätte sowieso wohl Probleme bekommen, denn ich kann mir den C und C++ Stiel einfach nicht abgewöhnen und habe einen Byte Zeiger auf den Record gemacht ( enthält 8 / 16 und 32 Bit Werte ) und schreibe dann mit der Anzahl von sizeof diese Bytes in meinen Byte orientierten USB Buffer. Wenn der Record aber nicht hintereinander im Speicher liegen dann kann ich das mit dem Zeiger auch vergessen, weil ich ja immer nur den Zeiger um eins Incrementiere.
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: sizeof record

  Alt 1. Jul 2004, 22:42
Moin Surrounder,

Zitat von Surrounder:
weil ich ja immer nur den Zeiger um eins Incrementiere
dann denk dran, dass Delphi typisierte Pointer immer um die Länge des Datentyps incrementiert/decrementiert, und somit nicht zwingend um 1.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#9

Re: sizeof record

  Alt 2. Jul 2004, 07:56
also ich habe einen typisierten Pointer vom Typ PByte, den setzte ich auf den Anfang des Records, und gehe dann mit der Anzahl was sizeof zurückliefert durch. Dann ist doch egal welchen Typ die Variabeln im Record haben oder?

Der Zeiger wird ja immer um 1 Byte Incrementiert.
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: sizeof record

  Alt 2. Jul 2004, 12:21
Moin Surrounder,

klar, bei einem PByte Pointer klappt das natürlich.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 06:05 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