![]() |
AW: Records unter 32 und 64Bit
Zitat:
Delphi-Quellcode:
deklariert bist du immer auf der sicheren Seite :thumb:
String
|
AW: Records unter 32 und 64Bit
Hat vermutlich gar nichts mit den Strings/PWideChars zu tun, aber
Delphi-Quellcode:
könnte unter 64-Bit einen Überlauf erzeugen, da ein HDC dort nicht mehr in einen Cardinal passt.
var
... DC: Cardinal; ... DC := GetDC(MainHandle); |
AW: Records unter 32 und 64Bit
Zitat:
So geht's. Mit String. Muss da wohl insbesondere bei 64Bit in der Zukunft sehr drauf achten der Kompatibilität wegen. Der sinn des ganzen warum ich hier einen PWideChar definiert habe ist dieser damit ich ihn nachher nicht nochmal casten muss bei der Übergabe an die Library. Das muss ich hier jetzt tun.
Delphi-Quellcode:
gSpriteData[K].hBmp := gSprCtrl.GI_CreateMirrorBitmapFromFile
(PWideChar(gSpriteData[K].ImageName), imgW, imgH); Also ich habe mir schon was dabei gedacht. ;) gruss |
AW: Records unter 32 und 64Bit
Zitat:
Werde es beheben und berichten. Danke. PS: Liegt am string.. Das DC ist nur für den Blink Button. Diese Änderung wirkt sich auch nicht auf die CPU Auslastung aus die bleibt bei 64Bit 25% Dort habe ich jetzt schon versucht MMTimer (Hochauflösender Timer vom MMSystem inkl. QueryPerformanceFrequency Callback usw. Ein Sleep(0) oder Sleep(1) bringt auch nichts. Den Timer auf 25ms zu setzen bremst das gesamte zeichnen aus. Danke für eure Hilfe funktioniert jetzt so. gruss |
AW: Records unter 32 und 64Bit
Kleine Anmerking, anstatt an dem ALIGN rumzuspielen, kann man auch einfach einen
Delphi-Quellcode:
bzw. ein
packed record
Delphi-Quellcode:
draus machen.
packed array
|
AW: Records unter 32 und 64Bit
Zitat:
Delphi-Quellcode:
zu machen bringt gar nichts, wenn auf API-Seite (z.B. C Dll) der Record korrekt aligned ist. Das Alignment sollten die meisten Compiler sowieso gleich handhaben. Problematisch ist halt bei so Dingen, dass Delphi die Enums immer versucht in den kleinstmöglichen Typ zu packen (
packed
Delphi-Quellcode:
), während die Min-Enum-Size unter C/C++ der Größe eines
{$Z1}
Delphi-Quellcode:
s entspricht, also unter Windows dann 4-Byte groß ist. Deshalb muss man Delphi an dieser Stelle mit
int
Delphi-Quellcode:
beibringen dies für die betroffenden Enums ebenfalls so zu machen.
{$Z4}
Und nebenbei ist
Delphi-Quellcode:
äquivalent zu
packed
Delphi-Quellcode:
, macht also keinen großen Unterschied was man verwendet - wobei ich persönlich das
{$A1}
Delphi-Quellcode:
auch vorziehen würde.
packed
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz