![]() |
String und Char
Hi,
ich will abfragen, ob die 5 Vokale in einer TStringList vorhanden sind. Wie mache ich das? Hier mein Anfang:
Delphi-Quellcode:
Kommt aber die Fehlermeldung, dass es inkompatible Typen sind!
if CheckListe.Strings[i] in ['A','E','I','O','U'] then
begin // ... end; |
Re: String und Char
Der in-Operator funktioniert nur mit Ordinalen Typen. Ein String ist das nicht.
Wenn du es nur mit chars machen willst, kannst du das Erste Element des Strings nehmen. Dafür muss aber gewährleistet sein, dass überhaupt ein Element enthalten ist
Delphi-Quellcode:
klappt, aber wie gesagt, unter der Bedingung, dass der String nicht Leer ist.
if CheckListe.Strings[i][1] in ['A','E','I','O','U'] then
|
Hallo,
ich möchte aber testen, ob schon alle Vokale erraten wurden und nicht nur einer davon. Wenn alle Vokale erraten wurden, soll was passieren. Verstehst? |
Re: String und Char
Habs jetzt mal Testweise mit nem einfachen String gemacht und nicht mit ner TStringList, aber das hier müsste auch für ne TStringList passen:
Delphi-Quellcode:
Vorteil: Aufgrund er Überprüfung mit length(s) passiert nichts, wenn der String leer ist. for i := 1, weil im String das erste Element 1 ist, anders als bei anderen Typen.
procedure test;
var i,v : Integer; c : Char; s : string; erraten : array[0..4] of Boolean; begin s := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; v := 0; //Anzahl Vokale for i := 1 to length(s) do begin c := s[i]; if c in ['A','E','I','O','U'] then inc(v); if v = 5 then begin showMessage('Das waren alle Vokale!'); abort; end; end; end; Edit: Deinen letzten Post nicht gesehen. Daraufhin Code angepasst |
Re: String und Char
hi
Das ist doch aber nicht das was Kompon Ente haben will oder? So wie ich das sehe wird dir nix anderes übrig bleiben als es mit 6 if Abfragen zu machen, mit Pos zb. |
Danke für Eure Ideen! :)
Hab's anders gelöst: Hab 'ne globale Variable deklariert und bei jedem Kauf + 1 gezählt und wenn er bei 5 ist, sind alle Vokale gekauft. ;) Trotzdem danke! :) |
Re: String und Char
Zitat:
|
Re: String und Char
Zitat:
Delphi-Quellcode:
tippe :drunken:
s := 'AAAAAAAAAAAAAAAAAA';
|
Re: String und Char
Zitat:
Delphi-Quellcode:
edit: vergesst was ich da gerade geschrieben habe, man müsste natürlich eine variable des types set of char deklarieren, die zuerst alle vokale enthält und woraus dann die vokale entfehrnt werden... :wall:
if c in ['A','E','I','O','U'] then
begin inc(v); Remove(c, v); // <== end; if v = 5 then begin showMessage('Das waren alle Vokale!'); abort; end; |
Re: String und Char
Zitat:
Hatte es erst so:
Delphi-Quellcode:
Aber so hab ich wieder was dazu gelernt: remove ;-)
procedure test;
var i : Integer; c : Char; s : string; erraten : array[0..4] of Boolean; begin s := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; for i := 0 to 4 do erraten[i] := false; for i := 1 to length(s) do begin c := uppercase(s)[i]; case c of 'A' : erraten[0] := true; 'E' : erraten[1] := true; 'I' : erraten[2] := true; 'O' : erraten[3] := true; 'U' : erraten[4] := true; end; if erraten[0] and erraten[1] and erraten[2] and erraten[3] and erraten[4] then begin showMessage('Das waren alle Vokale!'); abort; end; end; end; Außerdem hab ich mal ein uppercase um den string gemacht, da Groß-/Kleinschreibung ja wahrscheinlich irrelevant sein soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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