![]() |
Fehler: Inkompatible Typen - 'Char' und 'String'?
Hallo,
habe gerade ein Problem und irgendwie ein Brett vorm Kopf - finde keine Lösung:
Delphi-Quellcode:
Da spuckt Delphi doch glatt die Fehlermeldung aus:
function TForm1.wert(zeichenkette : string) : Integer;
var i, zaehler : Integer; begin for i := 1 to Length(zeichenkette) do begin case zeichenkette[i] of 'A..Z' : zaehler := zaehler + 1; 'a..z' : zaehler := zaehler + 1; '0..9' : zaehler := zaehler + 2; end; end; result := zaehler; end; Zitat:
Danke! |
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
'A..Z' ist ein String. 'A'..'Z' wäre ein Unterbereich von Char.
|
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Danke!
|
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Hallo
Noch ein kleiner tip, verwende wenn möglich "const" bei Zeichenketten bei der Parameterübergabe von Funktionen. Das spart eine kopie des strings auf dem Stack ein ... (besser für performance und speicherverbrauch). Desweiteren hast du deine Variable "Zaehler" nicht initialisiert, aber besser noch verwende gleich "result" anstelle "zaehler" ... Vorschlag ...
Delphi-Quellcode:
function TForm1.wert(const zeichenkette : string) : Integer;
var i : Integer; begin result := 0; for i := 1 to Length(zeichenkette) do begin case zeichenkette[i] of 'A'..'Z' : result := result + 1; 'a'..'z' : result := result + 1; '0'..'9' : result := result + 2; end; end; end; |
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Man kann's auch so schreiben
Delphi-Quellcode:
Gerd
var
i : Integer; begin result := 0; for i := 1 to Length(zeichenkette) do if zeichenkette[i] in ['A'..'Z','a'..'z','0'..'9'] then result := result + 1; end; |
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Stimmt nicht ganz, bei Ziffern soll um 2 erhöht werden ;)
|
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Zitat:
|
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Zitat:
Wenn ich mich recht erinnere, dann können Delphi-Sets nur 256 Elemente abbilden. Man müsste dann wieder eine case-Abfrage daraus machen. |
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Zitat:
Gerd |
Re: Fehler: Inkompatible Typen - 'Char' und 'String'?
Zitat:
Ein 'SET' (Menge) wird intern als 32 Byte langer Bitvektor abgebildet, das entspricht einem 'Packed Array [0..255] Of Boolean'. Daraus folgt nun, das die Elemente einer Menge nur aus einem ordinalen Typ bestehen kann, der 1. maximal 256 verschiedene Werte annehmen kann und 2. dessen höchster Ordinalwert (also Ord(High(TType))) kleiner als 256 sein muss. Ein "Char" ist somit der größte Datentyp, bei dem man mit Mengen arbeiten kann ("Byte" ist äquivalent) Es kann sein, das Delphi 2009 dies für 'Set Of Char'-Ausdrücke anders implementiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 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 by Thomas Breitkreuz