AGB  ·  Datenschutz  ·  Impressum  







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

Record: Delphi only?

Ein Thema von gsh · begonnen am 22. Jun 2006 · letzter Beitrag vom 7. Jul 2006
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#11

Re: Record: Delphi only?

  Alt 22. Jun 2006, 18:35
packed record?

vorteile, nachteile?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Record: Delphi only?

  Alt 22. Jun 2006, 18:37
bei packed record liegen alle teile des records direkt hintereinander im speicher. lässt man das packed weg wird ausgerichtet.
Hat man zum beispiel ein byte im Record wird glaub ich (ich weiß es nicht genau) dahinter 3 Bytes platz gelassen damit es am 32-bit zugriff ausgerichtet ist und das ganze schneller ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#13

Re: Record: Delphi only?

  Alt 22. Jun 2006, 19:20
aha k ich glaub ich bleib beim normallen record
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

Re: Record: Delphi only?

  Alt 22. Jun 2006, 20:00
Zitat von gsh:
aha k ich glaub ich bleib beim normallen record
nimm packed records ... in C sind eh alle Records packed, dann hast du also weniger Probleme
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#15

Re: Record: Delphi only?

  Alt 22. Jun 2006, 20:04
und wie schauts mit c++ und vb aus und so? verwenden die auch packed records?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#16

Re: Record: Delphi only?

  Alt 23. Jun 2006, 11:33
mit VB hab ich keine Ahnung, aber ich vermute mal, daß die da auch PACHED sind ... und beim C++, C# ... halt bei allen C-Varianten (soweit ich das verstanden hab), sind die so.


In Delphi ist hier standardmäßig ein 3-Byte-Zwischenraum, da der Integer an der nächsten 4-Byte-Grenze ausgerichtet wird.
Standard: {$A+}, was einem {$A4} entspricht
Das soll halt 'ne Optimierung sein, für einen schnelleren Zugriff ... auf einem 32-Bit-System

Delphi-Quellcode:
x = record
  B: Byte;
  // 3 Bytes
  i: Integer;
end;

x = packed record
  B: Byte;
  i: Integer;
end;

// 01234567
// B...iiii // normal
// Biiii // packed
Du kannst ja da unten bestimmt erkennen, daß dort der Integer nicht an der selben Position liegt und es somit zu netten Problemchen kommen wird.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#17

Re: Record: Delphi only?

  Alt 23. Jun 2006, 11:37
ja aber wenn ich jetzt überrall packed records verwende dann ist das kein problem auch bei anderen programmiersprachen nicht oder?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

Re: Record: Delphi only?

  Alt 23. Jun 2006, 11:51
Na ja, solange bei denen auch alles packed ist.
(aber meistens sollte es keine Probleme geben)

Es hat ja auch noch andere Vorteile ... in Delphi ist ein ungepackter Record auch nicht immer gleich.
Ungepackt und bei anderen Ausrichtungen stimmt dort ja auch nichts mehr:
Code:
{$A4} B...iiii
{$A8} B.......iiii
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#19

Re: Record: Delphi only?

  Alt 23. Jun 2006, 11:57
gut danke
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#20

Re: Record: Delphi only?

  Alt 23. Jun 2006, 12:34
In C++ sind Strukturen keineswegs immer "packed". Standardmäßig richtet VC++ z.B. auf 8 Bytes aus. Ändern kann man das mit der Compilereinstellung "Strukturmitglieder ausrichten" oder dem Pragma-Befehl "pack", also z.B. "#pragma pack(1)".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 17:07 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