Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Einige konstanten direkt im programm speichern (https://www.delphipraxis.net/22826-einige-konstanten-direkt-im-programm-speichern.html)

Pseudemys Nelsoni 24. Mai 2004 16:42


Einige konstanten direkt im programm speichern
 
moin,

ich brauche in meinem programm eine liste, ich weiss schon wie sie auszusehen hat. Sagen wir mal es wären "wort1-wort10" wie kann ich die mit einkompilieren?
ich brauche nämlich ein set, da ich nachher prüfen möchte ob sich ein wort in diesem befindet.
Die Wörter selbst behinhalten auch "." usw daher kann ich kein typ definieren weil da ja keine sonderzeichen erlaubt sind.
Ich hatte es bis jetzt immer so gemacht, das ich eine stringliste im onactivate die ganzen wörter hinzugefügt habe, aber das kanns doch nicht sein oder?
Gibt es nicht so eine art set of string?

mirage228 24. Mai 2004 16:50

Re: Einige konstanten direkt im programm speichern
 
Schau mal in der Hilfe unter typsierte Konstanten.

mfG
mirage228

IngoD7 24. Mai 2004 16:51

Re: Einige konstanten direkt im programm speichern
 
Tja, es leben die Basic-Zeiten, in denen man DATA-zeilen einbauen konnte ... :stupid:

Ich schreibe solche Dinge immer in eine Text-Datei und ziehe sie dann bei Programmstart per TStringList.LoadFromFile in eine StringList.

Aber das ist nicht das, was du meintest.

Pseudemys Nelsoni 24. Mai 2004 16:55

Re: Einige konstanten direkt im programm speichern
 
hallo mirage,

ich brauch einen typ der sie alle enthält, also ca so:

Delphi-Quellcode:
Type
  TMyWords = ('hi+hallo', 'irgendwas.irgendwas2', { ...usw });
  TSMyWords = Set of TMyWords;

var
  MyWords: TSMyWords;

...

if ('irgendwas.irgendwas2' in MyWords) then
  ShowMessage('hi');

geht das mit typisierten konstanten?


@Ingo: Kein VB bitte :mrgreen: .

So wie du hab ichs bis jetzt auch gemacht, aber ich will die wörter direkt haben, im programm, geht das nicht irgendwie?

IngoD7 24. Mai 2004 17:23

Re: Einige konstanten direkt im programm speichern
 
Zitat:

Zitat von Pseudemys Nelsoni
hallo mirage,

ich brauch einen typ der sie alle enthält, also ca so:

Delphi-Quellcode:
Type
  TMyWords = ('hi+hallo', 'irgendwas.irgendwas2', { ...usw });
  TSMyWords = Set of TMyWords;

var
  MyWords: TSMyWords;

...

if ('irgendwas.irgendwas2' in MyWords) then
  ShowMessage('hi');

geht das mit typisierten konstanten?


@Ingo: Kein VB bitte :mrgreen: .

So wie du hab ichs bis jetzt auch gemacht, aber ich will die wörter direkt haben, im programm, geht das nicht irgendwie?

Mit Strings geht Set of - glaube ich - nicht. Direkt ins Programm könntest du die Strings z.B. mit
Delphi-Quellcode:
const Woerter : array[1..3] of string = ('Seins', 'Szei', 'Sdrei');
bringen.

Wenn's hilft ....

Pseudemys Nelsoni 24. Mai 2004 17:32

Re: Einige konstanten direkt im programm speichern
 
hallo ingo,

könnt ich dort auch den "in" operator benutzen? also "word in array" oder so?

IngoD7 24. Mai 2004 17:42

Re: Einige konstanten direkt im programm speichern
 
Zitat:

Zitat von Pseudemys Nelsoni
hallo ingo,

könnt ich dort auch den "in" operator benutzen? also "word in array" oder so?

Glaub' ich nicht - weiss ich aber nicht 300%-ig ....

Ich würde das Array dann bei Programmstart in eine StringListe laden (ach was! :lol: ) und die Abfrage mit
Delphi-Quellcode:
if StringList.IndexOf('Diesen String suche ich') > -1 then ...
machen.

CalganX 24. Mai 2004 17:43

Re: Einige konstanten direkt im programm speichern
 
Hi,
nein. Zumindest hat es bei mir noch nie funktioniert. :mrgreen:

Aber du kannst dir schnell eine solche Funktion schreiben:
Delphi-Quellcode:
for i:=0 to High(aArray)-1 do
  if aArray[i] = sSearch then Result := true;
Chris

maximov 24. Mai 2004 21:09

Re: Einige konstanten direkt im programm speichern
 
Hi!

Wie wäre es mit folgenden konstrukt?

Delphi-Quellcode:
Type
  TMyWordID = (mw_hi_hallo, mw_irgendwas, mw_irgendwas2);
  TSMyWordIDs = Set of TMyWordIDs;

const
  cMyWords: array[TMyWordID] of string = ('hi+hallo', 'irgendwas.foo', 'irgendwas2.bar');
...

var WordSet:TSMyWordIDs = [mw_hi_hallo, mw_irgendwas];
...

if wm_irgendwas in WordSet then
  ShowMessage(cMyWords[wm_irgendwas]);
oder hab ich dich falsch verstanden? ...hier hat man zu den eigentlichen string noch IDs, mit denen man rechnen kann, dass kann in vielen fällen sehr hilfreich sein :-D




// edit: string war nicht zu
// edit2: war unlogisch :wall:

SirThornberry 24. Mai 2004 21:32

Re: Einige konstanten direkt im programm speichern
 
du könntest die Worte in eine Extra-Datei packen und diese dann als ressource einbinden. Und dann einfach TStringlist.LoadFromStream


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 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