Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record-Konstanten in Record-Definition verwenden (https://www.delphipraxis.net/114265-record-konstanten-record-definition-verwenden.html)

himitsu 22. Mai 2008 14:21


Record-Konstanten in Record-Definition verwenden
 
Ist es eigentlich möglich eine Record-Konstante aus der Record-Definition zu erstellen
Delphi-Quellcode:
Type
  TMyRec= packed Record
    Data: Array[0..15] of LongWord;
    Const DataSize = Length(Data); // Data sei nicht definiert
    ...
  End;
oder innerhalb der Record-Definition zu verwenden?
Delphi-Quellcode:
Type
  TMyRec = packed Record
    Const DataSize = 16;
    Var Data: Array[0..DataSize-1] of LongWord; // DataSize sei nicht definiert
    ...
  End;
ich wollte der Eindeutigkeit halber für mehrere Bereiche eines Record's die selbe Konstannte verwenden.

Spezielles Problem ist Follgendes:
ich wollte keine globale Konstannte erstellen und auch nicht ständig eine Lokale definieren

dennoch brauch in für ASM eine Konstante, denn sowas geht ja nicht
Delphi-Quellcode:
ASM
  MOV ECX, Length(Data)
End;

Apollonius 22. Mai 2008 14:54

Re: Record-Konstanten in Record-Definition verwenden
 
Doch, das geht. 8)
Delphi-Quellcode:
asm
  MOV ECX, TYPE Data
end;

himitsu 22. Mai 2008 15:14

Re: Record-Konstanten in Record-Definition verwenden
 
immer schön was Neues kennenzulernen :shock:

sowas geht aber nicht?
Delphi-Quellcode:
MOV ECX, Length(Data)
(hatte ausversehn oben SizeOf statt Length geschrieben)
Delphi-Quellcode:
function abc;
asm
  MOV ECX, TYPE &Data
  SHR ECX, 2
end;
dem zöge ich dann 'ne lokale Konstante vor :oops:

Delphi-Quellcode:
function abc;
const DataSize = Length(Data)
asm
  MOV ECX, &DataSize
end;

nja, zumindestens ergibt das eine Lösung für Problemchen an anderer Stelle, :thumb:


aber es würde mich dennoch interessieren ob soetwas möglich wäre.

Apollonius 22. Mai 2008 15:19

Re: Record-Konstanten in Record-Definition verwenden
 
Etwas unelegant:
Delphi-Quellcode:
asm
  mov ecx, type Data / type Data[0]
end;

himitsu 22. Mai 2008 17:54

Re: Record-Konstanten in Record-Definition verwenden
 
gut, es ist 'ne Lösung, aber wirklich nicht grad "übersichtlich/selbsterklärend" :cry:


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