Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Constant Expressions (https://www.delphipraxis.net/70840-constant-expressions.html)

Prototypjack 5. Jun 2006 16:16


Constant Expressions
 
Hallo,
Ich habe hier einen Fehler, und er ist Einer der wenigen, deren Auftreten ich vollkommen verstehe, mir die Lösung jedoch unklar bleibt:
Ich habe eine Liste von Strings(Benötigt für die Multilingualität des Programmes, es dürfen keine Resourcestrings sein, da man die afaik nicht zur Laufzeit verändern darf/kann). Jedoch will ein Array keinen dieser Strings annehmen(vorher wurde es mit Ressorcestrings geregelt), weil diese eben nicht Konstant sind.
Folglich ergibt sich ein Fehler, einer der vollkommen verständlich ist, meine Frage lautet also:
Gibt es eine Möglichkeit Resourcestrings zur Laufzeit zu verändern? Oder, gibt es eine Möglichkeit das Array dazu zu bringen die Nicht-Konstanten Strings anzunehmen?

Danke, für die Aufmerksamkeit, das wars auch schon
Gruß,
Max

Zacherl 5. Jun 2006 16:22

Re: Constant Expressions
 
Du könntest versuchen die Strings zu Laufzeit z.B. im OnCreate Ereigniss zuzuweisen.

Florian

Prototypjack 5. Jun 2006 16:27

Re: Constant Expressions
 
Ja, das mache ich ja sowieso, aber:
Resourcestrings sind afaik nicht zu verändern,
Normale Strings(mit denen alles möglich wäre, was ich benötige) nimmt das array nicht
Gruß,
Max

Zacherl 5. Jun 2006 16:33

Re: Constant Expressions
 
Wieso nimmt das Array keine normalen Strings?
Einfach so deklarieren: LanguageArray: array [0..100] of string;
Dann so die Strings zuweisen: LanguageArray[0] := 'Irgendein String';

Was für ein Fehler kommt denn bisher bei dir, wenn du normale Strings zuweisen willst?

Prototypjack 5. Jun 2006 16:35

Re: Constant Expressions
 
Delphi-Quellcode:
  Sci_KeyboardCommandMap: array[0..95] of TIdentMapEntry = (
    (Value: SCI_Null; Name: sKeyNoCommand),
Tja, er erwartet eine Konstante Expressions, jedoch ist sKeyNoCommand(welche ein String ist) keine.
Gruß,
Max

Zacherl 5. Jun 2006 16:38

Re: Constant Expressions
 
Was wäre, wenn du das Array so deklarierst:
Delphi-Quellcode:
Sci_KeyboardCommandMap: array[0..95] of TIdentMapEntry;
und dann beispielsweise im OnCreate Ereigniss folgendes machst:
Delphi-Quellcode:
Sci_KeyboardCommandMap[0].Name := sKeyNoCommand;
Sci_KeyboardCommandMap[0].Value := SCI_Null;
//Edit: Fällt mir grade noch ein: Das ganze kann nat. nicht gehen, wenn der Wert "Name" des TIdentMapEntry Konstrukts nicht als String deklariert wurde.

Prototypjack 5. Jun 2006 16:43

Re: Constant Expressions
 
Hmm, naja.
Ich schreibe gerade eine Komponente um die aus mehreren Units besteht und ich habe keine Ahnung wo ich das dann Füllen soll ;)

Gibt's nicht vielleicht doch einen anderen Weg?

Gruß,
Max

Btw, der Wert "Name" ist ein String.

Zacherl 5. Jun 2006 16:45

Re: Constant Expressions
 
Poste mal den Aufbau von TIdentMapEntry. Also in der Art sowas:
Delphi-Quellcode:
type
  TIdentMapEntry = class(TObject)

end;
//Edit:
Zitat:

Ich schreibe gerade eine Komponente um die aus mehreren Units besteht und ich habe keine Ahnung wo ich das dann Füllen soll
Im OnCreate Ereigniss der Komponente. Z.B. constructor MyComponent.Create(AOwner: TComponent);

Prototypjack 5. Jun 2006 16:46

Re: Constant Expressions
 
Klar, kein Problem:
Delphi-Quellcode:
  TIdentMapEntry = record
    Value: Integer;
    Name: String;
  end;
Das ganze befindet sich in der allseits bekannten Units Classes.
Gruß,
Max

Dax 5. Jun 2006 16:46

Re: Constant Expressions
 
Zitat:

Zitat von Prototypjack
Ich schreibe gerade eine Komponente um die aus mehreren Units besteht und ich habe keine Ahnung wo ich das dann Füllen soll ;)

Wie wärs denn mit dem initialization-Abschnitt der Unit? ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Seite 1 von 2  1 2      

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