Delphi-Quellcode:
procedure TForm1.DateieinlesenClick(Sender: TObject);
var
Liste : TStringList;
i, x, differenzwert : Integer;
data, filename : string;
F: TextFile;
prdwerte : array of integer;
begin
//Init
Liste := TStringList.Create;
//Main Proc
if OpenDialog1.Execute then { Dialog zum Dateiöffnen anzeigen }
begin
filename := OpenDialog1.FileName;
try
Liste.LoadFromFile(filename);
for i := 0 to Liste.Count-1 do
begin
apdcomport1.putstring(Liste[i]);
apdcomport1.putstring(#13);
repeat
apdcomport1.putstring('prd');
apdcomport1.putstring(#13);
//repeat
//until data = '-->';
Setlength(prdwerte,length(prdwerte)+length(data));
for x:=1 to Length(Data) do
prdwerte[Length(prdwerte) - Length(Data)] := strtoint(Data[x]);
//differenzwert := prdwerte[high(prdwerte)-1]-prdwerte[high(prdwerte)];
until abs(x)<=10;
end
finally
end;
end;
Liste.Free;
end;
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
Data: String;
I: Integer;
begin
data := '';
for I:= 0 to Count-1 do
Data :=data + ApdComPort1.GetChar;
Memo1.text:= data;
end;
das is fast dasselbe nur nochma vernünftig formatiert
die verbesserungen(find dich):
ich hab das create an den anfang getan
integer() durch strtoint() ersetzt
nun ein fehler (glaub ich):
Delphi-Quellcode:
for x:=1 to Length(Data) do
prdwerte[Length(prdwerte) - Length(Data)] := strtoint(Data[x]);
du willst glaube ich jede stelle von data einzeln zu prdwerte hinzufügen....
aber du schreibst jedes mal in die zelbe zelle von prdwerte....
es müsste so lauten:
Delphi-Quellcode:
data_length:=length(data);//länge nehmen
for x:=1 to data_length do
begin
prdwerte[Length(prdwerte) - Length(Data)] := strtoint(Data[x]);
delete(data,0,1); //durch das löschen verringert sich die länge von data und der index beim nächsten durchlauf ist erhöht...
end;
dann..was soll diese abfrage "until abs(x)<=10"
abs is hier für die tonne, weil x nie negtiv sein kann, da davor diese schleife ist:
for x:=1 to data_length do
und wenn data_length negativ wäre (kannes aber auch nicht sein) dann würde die schleife nicht ausgeführt, und x wäre 0 oder 1 (bin mir nicht sicher) aber auf jeden fall nicht <0
so, und x<10, da kannst du auch sagen data_length, das is verständlicher
aber da haste recht, das geht nur mit meiner version
das is so das was mir spontan aufgefallen ist....
hoffe es hilft dir erst mal...
ADD: die wegkommentierten sachen habbich erstmal ignoriert