![]() |
Resourcestring vs. const
Hallo zusammen,
ich bin jetzt seit Mai dabei Delphi zu lernen und dabei bin ich über diesen ![]()
Delphi-Quellcode:
Hier ist von einem sogenannten "resourcestring" die Rede, klingt extrem kompliziert und da fragt man sich was das eigendlich den macht. Allerdings wenn man dann über den Code drüber ließt findet man nur eine Anwendung von diesem Intressanten Construkt. Und genau an dieser Stelle wird es benutzt wie eine Constante. Warum also nicht einfach "const" nehmen?procedure TForm1.Button1Click(Sender: TObject); var retValue : DWORD; ProcessList : TPIDList; i : Integer; ProcessName : string; PID : DWORD; resourcestring // <- diese Stelle rsUnknown = 'unbekannt'; begin // VCL causes last error to be set, even nothing has already happend :-/ SetLastError(0); retValue := GetProcessList(ProcessList); if retValue = 0 then begin for i := 0 to length(ProcessList) - 1 do begin PID := ProcessList[i]; if GetProcessName(ProcessList[i], ProcessName) <> 0 then ProcessName := rsUnknown;// <- hier Listbox1.Items.Add(IntToStr(PID) + ' - ' + ProcessName); end; end else ShowMessage(SysErrorMessage(retValue)); end; Ich hab dann mal weiter gesucht und hab dann intressante Sachen gefunden wo das verwendet wird, ![]() ![]() Vielen Dank fürs Helfen, Tobi |
Re: Resourcestring vs. const
Ressource-Strings haben den Vorteil, dass sie, wie der Name schon sagt, in Ressourcen gespeichert werden. Dadurch lassen sich die Anwendungen leichter übersetzen (dann muss im Grunde nur noch die Ressoucre ausgetauscht oder eine andere DLL eingebunden werden).
|
Re: Resourcestring vs. const
Also zusammengefasst kann man sagen:
Resourcestrings sind wie Const, heißen nur anders damit man sie beim lesen als solche erkennt? Und haben KEINE Besonderheiten wie zum Beispiel das sie anderes im Speicher abgelegt werden? |
Re: Resourcestring vs. const
Zitat:
|
Re: Resourcestring vs. const
Zitat:
|
Re: Resourcestring vs. const
Sie werden im Programm genauso behandelt, allerdings muss man das Programm nicht neu kompilieren, um diese auszutauschen.
Wenn du eine andere Sprache unterstützen möchtest, genügt es eine DLL mit zu geben oder nach zu liefern, die noch einmal alle Resourcen in der jeweiligen Sprache enthält. |
Re: Resourcestring vs. const
Zitat:
|
Re: Resourcestring vs. const
Liste der Anhänge anzeigen (Anzahl: 1)
Konstanden werden quasi direkt ersetzt
Delphi-Quellcode:
// Delphi macht intern aus
const c = 'abc'; MyProc(C); // ein MyProc('abc'); // und aus resourcestring c = 'abc'; MyProc(C); MyProc(LoadString(ID)); // ID = die StringID in den Resourcen ![]() [edit] Zitat:
|
Re: Resourcestring vs. const
Zitat:
Delphi-Quellcode:
Delphi 2007 sagt: Adresse ist gleich
const
s = 'abcd'; var a, b: string; begin a := s; b := s; if Pointer(a) = Pointer(b) then ShowMessage('Adresse ist gleich') else ShowMessage('Adresse ist ungleich'); end; Ich glaube der Delphi-Compiler macht das schon immer so. |
Re: Resourcestring vs. const
Zitat:
Oder meinst du das nach dem Kompiliern, vor dem Linken? Also irgendwo in den Objektdateien, wenn es sowas bei Delphi noch gibt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 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