Jetzt hast Du einen Fehler beseitigt, aber dadurch einen neuen eingebaut:
c := e[ff] vor der Schleife war falsch, wenn Du die Anweisung aber einfach streichst, ist
c nicht initialisiert. Außerdem brauchst Du in der Schleife das
ii nicht und solltest nur mit
ff weiterarbeiten:
Code: Alles auswählen
var
c : string;
e : string[125];
ff : byte;
ii : integer;
p : array[1..49] of real;
begin
e := 'P35,-56.7 P36,6';
if pos('P35',e)>0 then begin
writeln(fo,'!!!!!!! HIER habe ich den Parameter P35 gefunden !!!!!!!!');
ff:=pos('P35',e)+4;
c := '';
while (e[ff] in ['.','-','+','0'..'9']) and (ff<=length(e)) do begin
c := c+e[ff];
ff := ff+1;
end;
val(c,p[35],ii);
writeln(fo,'Wert des Parameters P35: ',p[35]:9:3);
end;
end;
Das Stück ergibt dann zumindest bei mir
Code: Alles auswählen
!!!!!!! HIER habe ich den Parameter P35 gefunden !!!!!!!!
Wert des Parameters P35: -56.700
Soweit das Grundgerüst. Es können allerdings immer noch Probleme auftauchen: ZB wenn die Eingabe 'P35,-5.6.7 P36,6' ist, erhältst Du 0 als Ausgabe. Diese Situation kann man erkennnen, wenn bei der Umwandlung
val(c,p[35],ii) ein Fehlercode
ii<>0 geliefert wird.