![]() |
if Zeichen in Buchstaben then -> funktioniert nicht
Hi Leute,
wieso funktioniert
Delphi-Quellcode:
Nicht? Muss die Datenmenge immer eine konstante Größe, doer sogar konstante Werte haben?
var
Buchstaben : array of char; (...) function ZeicheninArray(Zeichen:Char); begin if Zeichen in Buchstaben then (...) end; end. Und wenn das hier nicht geht, wie finde ich möglichst performant raus, ob ein Zeichen in einem Array drin ist? Im Moment gehe ich den gesamten Array durch und prüfe, ob das Zeichen enthalten ist, aber ich denke, das geht doch sicherlich schneller, oder? tia, gordon |
Re: if Zeichen in Buchstaben then -> funktioniert nicht
Was geht denn nicht? Meine Glaskugel braucht neue Batterien, aber vielleicht ist das der Grund:
Delphi-Quellcode:
Sollte so heißen:
function ZeicheninArray8Zeichen:Char);
Delphi-Quellcode:
:zwinker:
function ZeichenInArray(Zeichen: Char);
//edit: Du könntest auch jeden Index des "Buchstaben"-Array durchgehen und abfragen (per for-Schleife) ;) |
Re: if Zeichen in Buchstaben then -> funktioniert nicht
wenns nicht eine zu große einstellung ist:
statt array of char nen string verwenden. (Is am Ende ja (fast) das selbe...) 1. Einfacher zu handhaben (wenn du buchstaben zwischendrin hinzufügen willst 2. Isses dann mit Pos ziemlich schnell lösbar @malo: ich glaube, der fehler entstand bloß beim tippen hier im forum :zwinker: |
Re: if Zeichen in Buchstaben then -> funktioniert nicht
Okay, danke Leute, werd 'nen String nehmen. Der Fehler der mir ausgespuckt wurde war:
Zitat:
|
Re: if Zeichen in Buchstaben then -> funktioniert nicht
Das kommt, weil in nur auf Mengen anwendbar ist, daher müsstest du deinen Array erst zu einer Menge machen, um das in benutzen zu können ...
|
Re: if Zeichen in Buchstaben then -> funktioniert nicht
Wie kann man denn einen Array in eine Menge umwandeln?
|
Re: if Zeichen in Buchstaben then -> funktioniert nicht
Umwandeln geht glaub och nicht, du müsstst ihn von anfang an als Menge deklarieren ... ;-)
|
Re: if Zeichen in Buchstaben then -> funktioniert nicht
Zitat:
Delphi-Quellcode:
var
buchstaben : Set of Char; function ZeicheninSet(Zeichen:Char) : Boolean; begin result := zeichen IN buchstaben; end; procedure TForm1.Button1Click(Sender: TObject); begin buchstaben := ['a'..'f','y','z']; // Set direkt setzen. if ZeichenInSet('a') then begin ShowMessage ('blubb'); end; end; procedure TForm1.Button2Click(Sender: TObject); //Arry in SET schreiben. var foo : Array Of Char; ndx : Integer; begin buchstaben := []; // Set löschen SetLength(foo,4); // Array setzen foo[0] := 'a'; // Array füllen foo[1] := 'b'; foo[2] := 'c'; foo[3] := 'd'; for ndx := Low (foo) to High(foo) do begin buchstaben := buchstaben + [foo[ndx]]; // Array in das Set schreiben end; if ZeichenInSet('x') then begin ShowMessage ('blubb'); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 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