![]() |
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Mit "readln" werden vermutlich alle Zeichen bis zum Zeilenende in die erste String-Variable gelesen. Da bleibt für die zweite Variable nichts übrig.
Zwei Variablen in einer "readln"-Anweisung zu lesen funktioniert nur mit Variablen fester Länge. Wie wird den die Datei erstellt? |
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Axo, ok ... ja, die Datei hatte ich auch mit writeln geschrieben ...
|
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Und wie? Beide Werte in eine Zeile oder untereinander? Ich hätte mir die Stringumwandlung übrigens gespart und stattdessen dann doch lieber einen Record deklariert und diesen dann in einer typisierten Datei abgelegt, aber das muss ja jeder selber wissen.
|
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Also sieht mein Quellcode aus, wie ich ihn jetzt für zwei Datein habe ...
Delphi-Quellcode:
Und so hatte ich es versucht, das in eines zu packen ...
procedure TForm1.FormCreate(Sender: TObject);
var s, c : String; x : Integer; begin assignfile(f,'SinWerte.txt'); // Erste Tabelle erstellen rewrite(f); for x:=0 to 900 do begin s:=floattostr(sin((x/10)*(pi/180))); write(f, s); end; closefile(f); assignfile(f,'SinWerte.txt'); // Zweite Tabelle erstellen rewrite(f); for x:=0 to 900 do begin c:=floattostr(cos((x/10)*(Pi/180))); write(f, c); end; closefile(f); end;
Delphi-Quellcode:
Aber hast recht, der schreibt dann ja in eine Zeile z.B.
procedure TForm1.FormCreate(Sender: TObject);
var s, c : String; x : Integer; begin assignfile(f,'Werte.txt'); rewrite(f); for x:=0 to 900 do begin s:=floattostr(sin((x/10)*(pi/180))); c:=floattostr(cos((x/10)*(Pi/180))); write(f, s, c); end; closefile(f); end; 0,001745328365890,99999847691328 Wenn er die komplette Zeile einmal so liest, dann kommt nur blödsinn raus ... |
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Siehste, das ist der Unterschied zwischen write und writeln ;)
|
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Ah, aber jetzt schein ich es fast zu haben ... du hattest mich da auf ne Idee gebracht, mit dem "untereinander"-schreiben ;-)
Habe das jetzt so geschrieben, dass er die Werte untereinander schreibt, abwechselnd Sinus und Cosinus ... das hat auch gut geklappt. Nur eine Datei und er schmeißt die richtigen Werte raus ... aber nun scheint das Programm nurnoch einmal zu laufen :-( wenn ich eine neue Zahl eingebe und wieder auf den Button klicke, dann kommt nen Error und das Programm schließt sich :-( ... mist *lol* |
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Und welcher Error? :glaskugel:
|
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
"Project project1.exe raised exception class 'RunError(5)'"
Dann wechselt er in die Zeile "for x:=0 to 900 do begin", dem Beginn der Schleife zum Auslesen der Daten ...
Delphi-Quellcode:
assignfile(f,'Werte.txt');
reset(f); for x:=0 to 900 do begin readln(f, s); sinWert[x] := strtofloat(s); readln(f, c); cosWert[x] := strtofloat(c); end; |
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
Und wenn Du einmal einen absoluten Pfad angibst?
|
AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
RunError(5)
Vermutlich Zugriff verweigert weil "closefile(f)" an einer Stelle vergessen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz