Entwickler-Ecke

Sonstiges (Delphi) - Inkompatible Typen


Jenny - Mo 31.03.03 18:40
Titel: Inkompatible Typen
Zitat:
procedure TForm1.Memo1Change(Sender: TObject);
var i, z, s,anz_buchstaben, anz_sonderzeichen, anz_leerzeichen, anz_steuerzeichen,
anz_ziffern, anz_vokale, anz_konsonanten, anz_w, w_len, w_max, w, x, y:integer;

txt: string;

begin
anz_buchstaben:=0;
anz_sonderzeichen:=0;
anz_leerzeichen:=0;
anz_steuerzeichen:=0;
anz_ziffern:=0;
anz_vokale:=0;
anz_konsonanten:=0;
anz_w:=0;
w_len:=0;
w_max:=0;
txt:=Memo1.text;
for i:=1 to length(txt) do
begin
s:=KleinInGross (txt[i]);
if s=#32 // #32=leerzeichen
then inc(anz_leerzeichen)
else
begin
if s in buchstaben
then begin inc(anz_buchstaben);
if s in vokale
then inc(anz_vokale)
else
inc(anz_konsonanten); }
end;
end;
end;


an der fettgedruckten stelle sagt delphi das da inkompatible typen integer und char sind... was bedeutet das und was mach ich da?


dankeschön :)


Jenny


Moderiert von user profile icontommie-lie: Code-Tags wieder entfernt, Fett-Tag übersehen


UGrohne - Mo 31.03.03 18:43

Da s ein integer ist, wird die Funktion KleinInGross wohl einen Char-Wert zurückliefern, das ist ein einzelnes Zeichen, versuch mal dieses mit Ord() in einen integer umzuwandeln, wenn Du nicht selbst die Funktion umschreiben willst/kannst sodass sie einen integer zurückliefert.


madigeMade - Mo 31.03.03 19:19

Hi Jenny!

Ich denke es würde reichen wenn du s nicht als integer, sondern als string oder char deklarierst.

Gruß de Made


Jenny - Mo 31.03.03 20:52

danke made :) in der zeile is der fehler nu weg...

aber jetzt sagt er das gleiche bei:

then begin inc(anz_buchstaben);

:?


Delete - Mo 31.03.03 20:58

Was hat anz_buchstaben für einen Datentyp?


Jenny - Mo 31.03.03 21:07

steht doch oben bei den variablen... alles integer :?


Delete - Mo 31.03.03 21:15

Ich frage nur, weil es eigentlich gehen müßte, bzw. die Fehlermeldung dürfte an dieser Stelle nicht auftreten. Kuck mal, ob du in der richtigen Zeile bist.


Jenny - Mo 31.03.03 21:20

ja das wundert mich ja auch die ganze zeit weil die ganzen anz variablen logischerweise integer sind... der markiert die angegebene zeile als fehlermeldung bei der syntaxprüfung


waldmeister - Mo 31.03.03 21:52

ich glaub der fehler liegt in der zeile darüber!


Quelltext
1:
if s=#32 // #32=leerzeichen                    


s is doch en integer un #32 is kein integer! oder seh ich das falsch?


Brueggendiek - Di 01.04.03 00:58

Hallo Jenny!

Deklariere S als Char und gut is!

KleinInGross liefert wohl ein Char und der Vergleich ist ein Zeichenvergleich (#32 ist ein Char).
Auch die weiteren Vergleiche sollten einen Char erwarten.

Gruß

Dietmar Brüggendiek


Jenny - Di 01.04.03 14:09

wow super das funktioniert, dankeschön :)

das einem solche simplen kleinigkeiten alles kaputt machen können :roll: :mrgreen: