Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Val-probelm (fehlermeldung incompatible types)


Hazer - Mi 16.03.05 08:32
Titel: Val-probelm (fehlermeldung incompatible types)
hi, ich habe ein Problem mit der VAL Funktion.
Immer wenn ich sie einsetze, kommt ne fehlermeldung, die sagt 'Incompatible Types'
Ich kann das einfach nicht verstehen hier der Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
program aufgabe;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  s,c:string;
  i:integer;
begin
  write('-----Geben Sie nun ein ASCII-Dezimalcode ein und trennen Sie die Zeichen mit einem ; ');
  readln(s);
  repeat
      i:=pos(';',s);
      c:=copy(s,1,i);
      delete(c,i-1,i);
      val(c,i,0); //Hier kommt die Fehlermeldung
      write(chr(i));
      delete(s,0,pos(';',s));
  until length(s) = 0;
  readln;
end.


Echt schon alles versucht ;(


AXMD - Mi 16.03.05 08:42

Klar, weilm der letzte Parameter von Val eine Variable sein muss. Zwecks Werte, die diese annehmen kann, schau bitte in der Onlinehilfe nach

AXMD


wdbee - Mi 16.03.05 08:43

Du muss eine Variable übergeben, keine Konstante, denn es ist ein var-Parameter.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
program Project1;
{$APPTYPE CONSOLE}
uses sysutils;

var
  s,c:string;
  i:integer;
  code: integer;
begin
  write('-----Geben Sie nun ein ASCII-Dezimalcode ein und trennen Sie die Zeichen mit einem ; ');
  readln(s);
  repeat
      i:=pos(';',s);
      c:=copy(s,1,i);
      delete(c,i-1,i);
      val(c,i,code); //Hier kommt keine Fehlermeldung mehr
      write(chr(i));
      delete(s,0,pos(';',s));
  until length(s) = 0;
  readln;
end.

Aber ob das Programm sonst richtig ist habe ich nicht geprüft!


Hazer - Do 17.03.05 08:21

danke funtzt jetzt ;)

Nur noch eine Frage:

Was macht denn CODE?
Bei delphi-surce und so kann ich nichts finden :(


wdbee - Do 17.03.05 08:29

Warum denn einfach, wenn es auch kompliziert geht? Oder was?
Was sucht du im Internet, wenn die Antwort nur einen (F1-)Tastendruck weit weg ist?

Delphi-Hilfe: zu Val (Prozedur)

Val konvertiert einen String in seine numerische Entsprechung.

Unit
System

Kategorie
String-Verarbeitung

procedure Val(S; var V; var Code: Integer);

Beschreibung
Val konvertiert den mit S angegebenen String in einen numerischen Wert, der dem Ergebnis einer Leseoperation mit Read aus einer Textdatei entspricht.
S ist ein String-Ausdruck und muß einer vorzeichenbehafteten reellen Zahl entsprechen.
V ist eine Gleitkomma- oder Integer-Variable. Wenn V eine Variable des Typs Integerist, muß S eine ganze zahl ergeben.
Code ist eine Variable des Typs Integer.

Ist der String ungültig, wird der Index des betreffenden Zeichens im Parameter Code gespeichert. Andernfalls wird Code der Wert Null zugewiesen. Bei einem nullterminierten String ist die in Code zurückgegebene Fehlerposition um eins größer als der auf Null basierende Index des Zeichens.

Die von Val durchgeführte Bereichsprüfung ist von der Einstellung des Compiler-Schalters $R und vom Typ des Parameters V abhängig.

Einstellung Ergebnis
{$R+} Eine Bereichsüberschreitung führt immer zu einem Laufzeitfehler.
{$R-} Die Bereichswerte sind vom Datentyp des Parameters V abhängig.


Hazer - Do 17.03.05 10:36

o.0?
Da stehen ja alle Funktionen :shock:

Danke :oops: