Habe für mein Problemchen sehr lange im Netz gesucht und natürlich auch hier im Forum, aber keine passende Hilfe gefunden.
Darum wende ich mich hoffnungsvoll an euch!
Mein Problemchen:
Ich möchte für eine Messtechnikanwendung Messwerte in ein Textfile schreiben.
Wenn die Datei mit den Messwerten noch nicht existiert, wird sie erstellt, andernfalls sollen die neuen Messwerte mit append
an das Ende der bestehenden Textdatei hinzugefügt werden.
Compilieren funktioniert ohne Fehlermeldung aber bei der Ausführung gibt`s bei Append die Fehlermeldung, dass das
File nicht existiert! Ist echt schräg, weil beim FileExists kommt er drüber....
Bitte um eure Hilfe!
Hardware: Raspberry Pi 4
Betriebssystem Raspbian Buster
Lazarus 2.0.0
FPC 3.0.4
Mein Code:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
fileutil;
type
{ TForm1 }
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Timer1: TTimer;
Timer2: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
var
i:integer;
{$R *.lfm}
procedure Messwerte_schreiben();
var
DateiName, Pfad :String;
DatumUhrzeitString :String;
Datei :Textfile;
begin
DatumUhrzeitString:=FormatDateTime('yyyy.mm.dd hh:nn:ss', now);
DateiName:='Test.txt';
Pfad:= ExtractFilePath(paramstr(0));
if not DirectoryExists(Pfad+DateiName) then
ForceDirectories(Pfad+'Daten');
if FileExists(Pfad+'Daten/'+DateiName) then
begin
AssignFile(Datei,Pfad+'Test.txt');
try
Append(Datei);
except
on E: EInOutError do
Form1.Label3.Caption:=E.Message;
end;
Form1.Label1.Caption:=Pfad;
Form1.Label2.Caption:=DateiName;
writeln(Datei,DatumUhrzeitString+'OK!');
Closefile(Datei);
i:=i+1;
end
else
begin
AssignFile(Datei,Pfad+'Daten/'+DateiName);
Rewrite(Datei);
Form1.Label1.Caption:=Pfad;
Form1.Label2.Caption:=DateiName;
writeln(Datei,DatumUhrzeitString+'OK!');
Close(Datei);
end;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Label1.Caption:='';
Form1.Label2.Caption:='';
Form1.Timer1.Enabled:=True;
i:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Timer2.Enabled:=True;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Messwerte_schreiben;
Form1.Label3.Caption:=IntToStr(i);
end;
end.