Hi kann mir jemand den den oben genannten Befehl ein bischen näher erläutern. Ich weiss nämlich nicht genau wozu man ihn gebrauchen kann und wie
danke
mfg Thunder
Hi kann mir jemand den den oben genannten Befehl ein bischen näher erläutern. Ich weiss nämlich nicht genau wozu man ihn gebrauchen kann und wie
danke
mfg Thunder
Hallo,
damit machst du aus einem String einen Integer ähnlich wie bei StrToInt.
Im ersten Parameter gibst du den String an, im Zweiten eine Integervariable in der das Ergebnis gespeichert werden soll und im Dritten eine Integervariable, in der der Fehlercode gespeichert werden soll.
Steht aber eigentlich genau so in der Hilfe!
Gruß, Niels
Hey danke für die schnelle antwort ! Jetzt weiss ich wenigstens was gemeint ist !
Ich soll als Hausaufgabe nämlich ein Programm schreiben, wo er bei eingabe von z.B 14+14 prüft welches Zeichen darin vorkommt und die rechnung dann dementsprechend durchführt ! Das hab ich auch soweit hinbekommen, aber ich soll noch Prüfen lassen ob ueberhaupt nur zahlen drinn vorkommen ! Bei z.b. 1a4+14 soll er nen error melden oder sowas und ich denke das geht mit diesem VAL aber, so weiss ich nicht wie ich es in den Code einzubinden habe .
Soweit bein ich gekommen (Der Code is etwas lang geraten, es geht bestimmt kürzern, aber wusste keinen andren Weg ) :
program rechnungen1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var eingabe,a,b:String;
var i,e,c:Integer;
begin
REPEAT
writeln (‚Bitte eine Rechnung eingeben. Fuer Wurzeln „w“ vor Zahl. Bsp. w4=2‘);
writeln (‚Bei Eingabe von „ende“ endet das Programm‘);
readln (eingabe);
for i:=1 TO length(eingabe) DO
begin
if (eingabe[i])=’+’
then
begin
a:=copy(eingabe,1,i-1);
b:=copy(eingabe,i+1,length(eingabe));
writeln (‚Ergebnis:‘,strtoint(a) + strtoint(b))
end;
if (eingabe[i])=’-’
then
begin
a:=copy(eingabe,1,i-1);
b:=copy(eingabe,i+1,length(eingabe));
writeln (‚Ergebnis:‘,strtoint(a) - strtoint(b));
end;
if (eingabe[i])=’*’
then
begin
a:=copy(eingabe,1,i-1);
b:=copy(eingabe,i+1,length(eingabe));
writeln (‚Ergebnis:‘,strtoint(a) * strtoint(b));
end;
if (eingabe[i])=’:’
then
begin
a:=copy(eingabe,1,i-1);
b:=copy(eingabe,i+1,length(eingabe));
writeln (‚Ergebnis:‘,strtoint(a) / strtoint(b));
end;
if (eingabe[i])=‚w‘
then
begin
a:=copy(eingabe,2,length(eingabe));
writeln (‚Ergebnis:‘,SQRT(strtoint(a)));
end;
if (eingabe[i])=’^’
then
begin
a:=copy(eingabe,1,i-1);
b:=copy(eingabe,i+1,length(eingabe));
writeln (‚Ergebnis:‘,exp(strtoint(b) * ln (strtoint(a))));
end;
end;
writeln;
until eingabe=‚ende‘;
end.
Also, wenn ich noch richtig verstanden habe…
Fall 1- Es soll nur die Meldung bringen, wenn die Eingabe nicht OK ist …
…
Function Valid_Int (Str:String; Value : Integer) : Boolean;
Var Code : Integer;
Begin
Val (Str, Value, Code);
If COde 0 // Fehler bei der Umwandlung
then Result := False
else Result := True;
end;
…
Readln (Eingabe);
If Valid_Int(Eingabe, Value)
then writeln (‚Zahl ist OK‘)
else writeln (‚Bitte nur Zahlen eingeben‘);
…
Fall 2 - Alle falsch eingegebene Eingabe werden zusammen gestellt und als String ausgegeben werden.
// Str ist die Ausgabe String und muss als Type String definiert werden.
Str := ‚‘;
For I := 1 to Length(Eingabe)-1 do
Begin
If NOT Eingabe[i] in [0…9] then
Str := Str + Eingabe[i] + ', ';
End;
If Str ‚‘ then writeln(str+’ => nicht erlaubt’);
_______________________________________
Wenn es nicht Deine Vorstellung ist schreib mir 'n Email an [email protected]
Hallo,
da es eine Hausaufgabe ist, solltest du schon selber versuchen das zu lösen. Als kleine Hilfe:
Du brauchst noch zwei Integer-Variablen in die du a und b verwandeln kannst und eine Integervariable, die den Fehlercode aufnehmen soll.
Und als Tipp: Die Ende-Bedingung prüft man normalerweise am Anfang der Schleife und nicht am Ende.
Gruss, Niels
So fertige Lösungen sind zwar klasse, aber da sind begriffe drin die ich noch nicht kenne wie „function“.
daher hilft mir das nicht, aber trotzdem danke
Der Tipp von dir Niels hat zwar meine Zellen angeregt, aber so richtet hats noch nit gefunkt ! Ich hab jetzt auch mal nen Kumpel im ICQ gefragt
aber danke