![]() |
Dynamischen String exakt nach ShortString kopieren
Hallo,
Diese Prozedur leert vohrer den ShortString bevor dieser mit einem dyn. String gefüllt wird.
Delphi-Quellcode:
Benötigt wird dies z.B., wenn Records (mit ShortStrings) mittels CompareMem verglichen werden.
procedure CopyStringExactly(const Source: String; var Dest: ShortString);
var X, DestLen: Integer; begin // Gesamtgröße des Statischen Strings erfassen DestLen:=SizeOf(Dest)-1; // Dest-String von Anfang bis Ende leeren for X:=0 to DestLen do Dest[X]:=#0; // String kopieren if DestLen<Length(Source) then Dest:=Copy(Source,1,DestLen) else Dest:=Source; end; Kopiert man mittels ShortString:=String können Datenfraqmente in ShortString entstehen, wenn der vorhergehende Wert in ShortString länger war als der neue Wert. Wenn es schnellere Lösungen gibt, bitte ich um Antwort. Mit ist nichts Besseres eingefallen.:oops: Gruß MAD |
AW: Dynamischen String exakt nach ShortString kopieren
Setze
Delphi-Quellcode:
ShortString:= String +#0;
|
AW: Dynamischen String exakt nach ShortString kopieren
Zitat:
Schreibe eine methode die 2 records auf gleichheit überprüft. Dann kannst du auch nicht bei einer zuweisung vergessen, die spezialkopierfunktion aufzurufen ;-) |
AW: Dynamischen String exakt nach ShortString kopieren
Zitat:
|
AW: Dynamischen String exakt nach ShortString kopieren
FillChar? Allerdings habe ich mir die Implementation jetzt nicht angeschaut, möglicherweise wird dort auch eine Schleife oder ZeroMemory benutzt.
|
AW: Dynamischen String exakt nach ShortString kopieren
ZeroMemory nutzt FillChar
Und dieses FillChar ist etwas optimiert und seit 'ner Weile noch mehr optimiert (seitdem das FastCode-Projekt in Delphi integriert wurde) |
AW: Dynamischen String exakt nach ShortString kopieren
Ist es nicht eher umgekehrt? ZeroMemory ist eine Windows API-Funktion und FillChar eine Delphi-Funktion.
|
AW: Dynamischen String exakt nach ShortString kopieren
ZeroMemory ist ein C-Makro (mit einer Löschschleife)
FillChar ist die "native" Prozedur, um einen Speicherbereich mit Irgendwas ('nem Byte) zu füllen. ZeroMemory => FillChar + 0 |
AW: Dynamischen String exakt nach ShortString kopieren
OK, überredet. ;)
|
AW: Dynamischen String exakt nach ShortString kopieren
keine Sorge ... dachte auch mal
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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