Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - inkompatible Typen - wieso?


newbie333 - Sa 27.06.09 22:28
Titel: inkompatible Typen - wieso?
Hallo,
ich bekomme die Fehlermeldung angezeigt, dass folgendes inkompatible Typen sind:

Delphi-Quelltext
1:
if [length(edit1.text)-a] = strtoint('e'then                    

leider finde ich den Fehler nicht. :(
Wäre nett wenn ihr mir helfen könntet!
Danke schonmal.


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 28.06.2009 um 00:58


jakobwenzel - Sa 27.06.09 22:30

wieso benutzt du eckige Klammern?
Von welchem Typ ist a?
Und wenns kompilieren täte würds abstürzen, da e keine Zahl ist...


newbie333 - Sa 27.06.09 22:37

ok habs abgeändert:

Delphi-Quelltext
1:
b:=[length(edit1.text)-a];                    

b und a sind jeweils integer typen.

immer noch falsch :(

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Dunkel - Sa 27.06.09 22:43

'e' ist aber kein Integer!


newbie333 - Sa 27.06.09 22:43

Hab den Fehler entdeckt und schon wieder ein neues Problem.(Tut mir leid bin Anfänger :()

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button1Click(Sender: TObject);
var zaehler,b, a,n:integer;

begin
n:=strtoint(edit1.text);
zaehler:=0;
a:=1;


while a <= length(edit1.text) do
begin
b:=edit1.text[a]; // hier Fehlermeldung: Inkompaible Typen 'Integer' und 'Char'?
if b = 'E' then
inc(zaehler);
inc(a);
end;
label1.caption:=inttostr(zaehler);

end;

end.


jaenicke - Sa 27.06.09 22:43

user profile iconnewbie333 hat folgendes geschrieben Zum zitierten Posting springen:
b:=[length(edit1.text)-a];
Was sollen die eckigen Klammern? Ich sehe kein Array oder so, auf das du damit zugreifen könntest?

// EDIT:
Und bei der Zeile:
Edit1.Text[a] ist ein Buchstabe und keine Zahl. Ord(Edit1.Text[a]) ginge, aber in der nächsten Zeile brauchst du wiederum einen Buchstaben, also wozu überhaupt die Zwischenvariable? :gruebel:

Delphi-Quelltext
1:
2:
if Edit1.Text[a] = 'E' then
  ...


// EDIT2:
Und warum überhaupt so kompliziert?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
begin
  zaehler := 0;
  for a := 1 to Length(Edit1.Text) do
    if Edit1.Text[a] = 'E' then
      Inc(zaehler);
  Label1.Caption := IntToStr(zaehler);
end;


newbie333 - Sa 27.06.09 23:25

weil wir noch keine for-Schleifen können ;)
Aber danke! :)