Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi const zur Laufzeit zuweisen (https://www.delphipraxis.net/50872-const-zur-laufzeit-zuweisen.html)

Surrounder 2. Aug 2005 07:51


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:
const
   Msg1000: string = ''; (* Test *)
und macht dann einen Aufruf im FormCreate

Delphi-Quellcode:
procedure TMain.UpdateString;
begin
   Msg1000 := siLang1.GetTextOrDefault( 'strMsg1000' );
end;
Nur hat der Compiler damit ein Problem und sagt "Der linken Seite kann nix zugewiesen werden"

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.

Bernhard Geyer 2. Aug 2005 08:12

Re: const zur Laufzeit zuweisen
 
Es geht, wenn Du die entsprechenden Compilerschalter setzt: Compiler/Syntaxoptionen -> "Zuweisbare Typisierte Konstanten"

The-X 4. Aug 2005 01:24

Re: const zur Laufzeit zuweisen
 
oder mit ein wenig Zeiger-Biege-Kunst :mrgreen:

Delphi-Quellcode:
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.
Ausgabe: "this is a test"

alcaeus 4. Aug 2005 01:35

Re: const zur Laufzeit zuweisen
 
Zitat:

Zitat von Surrounder
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.

Ja, es geht, leider :cry: In Delphi 7 war die Compilereinstellung auch defaultmaessig an, in Delphi 2005 ist sie aus, deshalb kracht es bei manchen Komponenten/Programmen immer wieder :wall:
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

Flocke 4. Aug 2005 06:54

Re: const zur Laufzeit zuweisen
 
Zitat:

Zitat von alcaeus
Warum einige Programmierer typisierte Konstanten als Variablen mit Default-Wert missbrauchen, ist mir ein Raetsel :gruebel:

Ist doch eigentlich ganz klar (bei mir auf jeden Fall) - bis Delphi 5 (6 weiß ich nicht), konnte man initialisierte Variablen NUR so schreiben, also im folgenden Fall:
Delphi-Quellcode:
var
  Init1: integer = 5;
const
  Init2: integer = 5;
... 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).

Union 4. Aug 2005 08:22

Re: const zur Laufzeit zuweisen
 
Verwende doch resourcestring anstelle der Konstanten.

Chewie 4. Aug 2005 17:26

Re: const zur Laufzeit zuweisen
 
[quote="alcaeus"]
Zitat:

Zitat von Surrounder
Warum einige Programmierer typisierte Konstanten als Variablen mit Default-Wert missbrauchen, ist mir ein Raetsel :gruebel:

Das sind wohl diejenigen, die typisierte Konstanten nicht als Konstanten, sondern als statische Variablen, wie man sie z.B. von C kennt, betrachten ;)

Aber ich glaube, die Dikussion gabs hier schonmal...

malo 4. Aug 2005 19:18

Re: const zur Laufzeit zuweisen
 
[quote="Chewie"]
Zitat:

Zitat von alcaeus
Zitat:

Zitat von Surrounder
Warum einige Programmierer typisierte Konstanten als Variablen mit Default-Wert missbrauchen, ist mir ein Raetsel :gruebel:

Das sind wohl diejenigen, die typisierte Konstanten nicht als Konstanten, sondern als statische Variablen, wie man sie z.B. von C kennt, betrachten ;)

Aber ich glaube, die Dikussion gabs hier schonmal...

KLICK

Surrounder 5. Aug 2005 19:17

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 23:47 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