![]() |
EMB DCE 12 - GetMem, Char und Delphi default WideChar
wenn ich unter der Offline-Hilfe nach "StrCopy" suche, um einen PChar zu kopieren, dann finde ich im angegebenen Delphi Beispiel die Verwendung von GetMem in Verbindung mit sizeOf(Char).
Wir hatten das ja schonmal in der einen oder anderen Form (Free, Destroy). Heute geht es dadrum, wie man Speicher richtig allokiert und ggf. wieder freigibt. Da ich GetMem nur in Verbindung mit Dispose her kennen, zeigt das Beispiel jedoch FreeMem. ist FreeMem der richtige Ansprechpartner oder könnte man dort auch einfach Free verwenden ? Aber der Hauptaugenmerk ist dieses sizeOf(Char). Wenn ich zum Beispiel Delphi verwende, dann kann ich zwar PChar verwenden, das ja default mäßig auf Byte mätscht unter Delphi jedoch dann einen PWideChar ergibt. Daher die Frage: was sollte man am besten verwenden - das sizeof(Char) oder sizeof(WideChar) ? Ich mein, letzendends ist es ja FreeMem egal, ob mit GetMem 4 Byte allokiert wurde - oder nur 2... Ich finde das aber irgendwie verwirrend für Anfänger, die nicht Wissen, was denn dieses sizeof(Char) bedeuten mag, wenn sie dann damit konfrontiert werden, das Delphi default WideChar macht... |
AW: EMB DCE 12 - GetMem, Char und Delphi default WideChar
Man verwendet beim sizeof am Besten das was man auch verwendet.
Der typische Anfänger verwendet weder sizeof, noch GetMem, FreeMem, Dispose, PChar, WideChar oder dergleichen. Er hat solche Probleme nicht denn er verwendet nur string und Char. |
AW: EMB DCE 12 - GetMem, Char und Delphi default WideChar
Es steht doch eindeutig in der Hilfe?
Zitat:
GetMem -> FreeMem GetMemory -> FreeMemory StrAlloc bzw. StrNew -> StrDispose Zitat:
seit Delphi 2009 ist PChar = PWideChar ... standardmäßig PChar ist nunmal ein dynamischer/generischer Typ, welcher sich ändern kann, abhängig vom Compiler. So, wie ursprünglich Integer (im Delphi 1 noch Int16 und dann Int32) ... nur für 64 Bit hatten sich Intel/Microsoft/Andere entschieden den Integer einzufrieren und einen neuen Typen zu erfinden ... im Delphi nennt er sich ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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-2025 by Thomas Breitkreuz