AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EMB DCE 12 - GetMem, Char und Delphi default WideChar
Thema durchsuchen
Ansicht
Themen-Optionen

EMB DCE 12 - GetMem, Char und Delphi default WideChar

Ein Thema von paule32.jk · begonnen am 9. Okt 2024 · letzter Beitrag vom 9. Okt 2024
Antwort Antwort
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

EMB DCE 12 - GetMem, Char und Delphi default WideChar

  Alt 9. Okt 2024, 16:17
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...
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.444 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: EMB DCE 12 - GetMem, Char und Delphi default WideChar

  Alt 9. Okt 2024, 17:13
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: EMB DCE 12 - GetMem, Char und Delphi default WideChar

  Alt 9. Okt 2024, 17:17
Es steht doch eindeutig in der Hilfe?
Zitat:
Dispose gibt den Speicher frei, der für eine Zeigervariable mit System.New zugewiesen wurde. Verwenden Sie für einen Zeiger, der mit System.GetMem zugewiesen wurde, System.FreeMem, um den zugewiesenen Speicher freizugeben. Nach dem Aufruf von Dispose oder FreeMem ist der Wert des übergebenen Zeigers undefiniert.
New -> Dispose
GetMem -> FreeMem
GetMemory -> FreeMemory

StrAlloc bzw. StrNew -> StrDispose


Zitat:
Wenn ich zum Beispiel Delphi verwende, dann kann ich zwar PChar verwenden, das ja default mäßig auf Byte mätscht unter
Nein, das wurde doch bereits mehrfach gesagt.

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 Delphi-Referenz durchsuchenNativeInt, welcher jetzt Int32 oder Int64 sein kann, bzw. NativeUInt für Cardinal.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:00 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