![]() |
const zur Laufzeit zuweisen
Hallo Forum,
ich experimentuiere gerade mit einem Language Tool. Jetzt schlägt mir das Tool vor auch einige Texte die ich im const Bereich habe als Strings mit in die Übersetzung auf zu nehmen. So weit auch ok. Das Tool ersetzt den const Bereich dann wie folgt:
Delphi-Quellcode:
und macht dann einen Aufruf im FormCreate
const
Msg1000: string = ''; (* Test *)
Delphi-Quellcode:
Nur hat der Compiler damit ein Problem und sagt "Der linken Seite kann nix zugewiesen werden"
procedure TMain.UpdateString;
begin Msg1000 := siLang1.GetTextOrDefault( 'strMsg1000' ); end; Ich habe so was noch nirgends gesehen, geht das denn überhaupt in Delphi. Schon klar dass ich das auch anderst machen kann, mir geht es gerade nur mal grundsätzlich darum ob das überhaupt geht was das Tool da erzwingen will. |
Re: const zur Laufzeit zuweisen
Es geht, wenn Du die entsprechenden Compilerschalter setzt: Compiler/Syntaxoptionen -> "Zuweisbare Typisierte Konstanten"
|
Re: const zur Laufzeit zuweisen
oder mit ein wenig Zeiger-Biege-Kunst :mrgreen:
Delphi-Quellcode:
Ausgabe: "this is a test"
program Project1;
{$APPTYPE CONSOLE} Type PString=^String; Const S:string ='this is not a test'; var T:PString; begin T:=@S; Delete(T^,9,4); Writeln(S); Readln; end. |
Re: const zur Laufzeit zuweisen
Zitat:
IMO solltest du davon Abstand nehmen: Konstanten sind Werte, die waehrend der Programmausfuehrung nicht geaendert werden. Wenn sie geaendert werden sollen, sind es Variablen und sollten auch so deklariert werden. Warum einige Programmierer typisierte Konstanten als Variablen mit Default-Wert missbrauchen, ist mir ein Raetsel :gruebel: Greetz alcaeus |
Re: const zur Laufzeit zuweisen
Zitat:
Delphi-Quellcode:
... ging unter Delphi 5 nur die zweite Variante. Seit Delphi 7 geht auch die erste Variante und die zweite ist "verpönt", man kann sie aber per Compilerschalter aktivieren. Ich mache es jetzt auch nach Variante 1 (ist ja auch logischer), aber ich habe noch ziemlich viele alte Quellen hier herumliegen, die Variante 2 benutzen (eben weil's früher nicht anders ging).
var
Init1: integer = 5; const Init2: integer = 5; |
Re: const zur Laufzeit zuweisen
Verwende doch resourcestring anstelle der Konstanten.
|
Re: const zur Laufzeit zuweisen
[quote="alcaeus"]
Zitat:
Aber ich glaube, die Dikussion gabs hier schonmal... |
Re: const zur Laufzeit zuweisen
[quote="Chewie"]
Zitat:
![]() |
Re: const zur Laufzeit zuweisen
Danke für Eure Hinweise, wollte nur sagen dass ich nach genauerer Überlegung davon Abstand genommen habe und das über die Resource Strings gemacht habe, weil mir das etwas zu komisch war.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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