AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu einer type definition

Ein Thema von A.Griffin · begonnen am 19. Okt 2017 · letzter Beitrag vom 21. Okt 2017
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

AW: Frage zu einer type definition

  Alt 20. Okt 2017, 13:09
Arrays sind Packed, aber wenn der Field-Typ unpacked ist und eine unrunde Größe hat (z.B. 3 Byte Inhalt, aber 4 Byte groß), dann ist das Array natürlich auf die 4 Byte ausgerichtet.

Es gibt kein MinAlign, sondern nur ein MaxAlign, als Compiler-Option.
2 Byte passen "genau" in ein Word, also richten sie sich immer doppelt übereinander aus, egal ob packed oder nicht.
$2B or not $2B

Geändert von himitsu (20. Okt 2017 um 13:12 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#12

AW: Frage zu einer type definition

  Alt 20. Okt 2017, 18:59
Îch sehe hier wird alles theoretisch perfekt aufarbeitet, super

Ich bin aber leider auch zu oft auf der praktischen Seite unterwegs, und da wird
dann aus solchen Konstrukten gerne schnell mal:

Delphi-Quellcode:
type
  T_BUS_Text = record
    case byte of
      0:
        (b: array[1..20] of byte);
      1:
        (s: array[1..20] of AnsiChar); //Probleme mit Unicode vermeiden
      2:
        (w: array[1..10] of word);
      //
      3:
        (w: array[1..3] of TDings); // Sind das 9 Bytes ?
      4:
        (w: array[1..5] of TBums); // Sind das 10 Bytes ?
      5:
        (w: array[1..2] of TFlumms); // Sind das 12 Bytes ?
      6:
      //...

  end;
Bevor ich mir da alle Optionen durchspiele (die mein Kollege vielleicht nicht so fleissig testet), mache ich einfach
pro Forma ein "packed" davor, und bin erstmal auf der sichere(ren) Seite

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Frage zu einer type definition

  Alt 21. Okt 2017, 03:26
Warum durchtesten?

Wenn das "veränderliche" {$ALIGN} bekannt ist, kann ich meistens sofort sagen, wie das ausgerichtet wird
Wenn man das "einfache" System erstmal verstanden hat, ist es garnicht mehr so schwer.
Nur beim Typen Extended vergesse ich ständig, wie dieser krumme 10-Byte-Typ gerechnet wird.

PS: Das Selbe betrifft natürlich auch die Felder in Objekten (unter Betrachtung des Vorfahren)
und auch die globalen Variablen (HEAP), sowie die lokalen Variablen (Sack, nur hier halt rückwärts).

PACKED ist echt etwas ganz Schlimmes, denn packed ARRAY/RECORD werden als FieldSize=1 gerechnet, also ab da nicht mehr optimal ausgerichtet.
$2B or not $2B

Geändert von himitsu (21. Okt 2017 um 04:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:01 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