![]() |
memset in Delphi
Hi ihrs
Weiß jemand von euch mit welchen Befehl in Delphi man memset (C) vergleichen oder wie man ihn implementieren kann Vielen Dank schon mal |
Re: memset in Delphi
Zitat:
mfG mirage228 |
Re: memset in Delphi
Oder auch:
Delphi-Quellcode:
Beschreibung
procedure FillChar(var X; Count: Integer; Value: Byte);
FillChar füllt Count aufeianderfolgende (Parameter X) Bytes mit dem in Value angegebenen Wert des Typs Byte oder Char. @SleepyMaster: Bist du zufällig unter einem anderen Namen ab zu auch im Spotlight-Forum? :wink: |
Re: memset in Delphi
Ja, FillChar benutze ich auch immer, etwa zum initialisieren:
Delphi-Quellcode:
FillChar(aRecord, SizeOf(aRecord), #0);
|
Re: memset in Delphi
OK! Vielen Dank!
@Giantics: Wie kommst du darauf??? Nein! |
Re: memset in Delphi
Zitat:
|
Re: memset in Delphi
Weiß jemand, ob sich an FillChar etwas durch die Umstellung auf Unicode-Strings ändern wird bzw. ob es sinnvoll ist die Funktion zum Füllen von Byte-Arrays zu benutzen?
|
Re: memset in Delphi
hoffe, man vergibt mir das :wink:
push |
Re: memset in Delphi
Wenn du (P)Char array verwendest, dann musst du die Größenangabe ändern. Bei String natürlich auch.
|
Re: memset in Delphi
Also wird an der Funktion selbst nichts verändert werden und sie schreibt weiter die Anzahl Bytes im zweiten Argument.
|
Re: memset in Delphi
Und immer im Hinterkopf behalten: FillChar und ZeroMemory sind brandgefährliche Prozeduren.
Damit kann man sich den Speicher so zerschiesen, dass das Programm nichteinmal in der Lage ist noch eine Fehlermeldung auszugeben. Manchmal stürzt das Programm auch erst Minuten nach der falschen Verwendung dieser Prozeduren ab. Solche Fehler sind dann extrem schwer zu finden. |
Re: memset in Delphi
was wird denn an dessen stelle empfohlen um den speicher entsprechend zu initialisieren?
|
Re: memset in Delphi
Du kannst einfach eine Schleife (mit Bereichsprüfung) nehmen, das ist allerdings langsamer.
Solange man weiß man tut, finde ich die Verwendung von FillChar und ZeroMemory allerdings nicht verkehrt. |
Re: memset in Delphi
Ich denke nämlich auch so...
Habe noch in Erinnerung, dass es in C++ die Funktion SecureZeroMemory gibt (wegen Compileroptimierungen). Wüsste jetzt aber kein Pendant für Delphi. |
Re: memset in Delphi
Zitat:
|
Re: memset in Delphi
nja in C ist ZeroMemory ein Macro, welches eventuell wegoptimiert wird, wenn die Variable zu den zu überschreibenden Daten danach nicht mehr verwendet wird.
Es würde also praktisch der Speicher nicht überschrieben. SecureZeroMemory ist dagegen wohl eine Funktion und wird nicht wegoptimiert. in Delphi wird ZeroMemory dagegen immer ausgeführt, also ist es quasi das Selbe wie SecureZeroMemory und darum gibt es diese Secure-Version in Delphi nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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