Hallo,
ich erstelle gerade ein Programm, mit dem man in einer Tabelle (TStringgrid) arbeiten kann.
Jetzt habe ich folgendes Problem:
Ich möchte es so haben, dass man eine Datei auf mein Formular zieht und diese dann in die Tabelle geladen wird.
Delphi-Quellcode:
procedure TForm3.WMDROPFILES(
var Msg: TMessage);
var i, anzahl, size: Integer;
Dateiname: PChar;
Endung:
string;
begin
inherited;
anzahl := DragQueryFile(Msg.WParam, DF_NUMBEROFFILES, Dateiname, 255);
for i := 0
to (anzahl - 1)
do
begin
size := DragQueryFile(Msg.WParam, i,
nil, 0) + 1;
Dateiname := StrAlloc(size);
DragQueryFile(Msg.WParam, i, Dateiname, size);
Endung:=Dateiname;
Delete(Endung,1,Length(Endung)-3);
if Endung='
cls'
then Dazu(Dateiname);
StrDispose(Dateiname);
end;
DragFinish(Msg.WParam);
end;
Also die Einschränkung klappt und ich komme auch in die Prozedur Dazu.
Diese sieht wie folgt aus:
Delphi-Quellcode:
procedure TForm3.Dazu(Datei:PChar);
var SL:TStringlist;
i,a,v,b:integer;
Simis:tintarr;
T:string;
begin
SL:=TStringlist.create;
Sl.LoadFromFile(Datei);
for i:=0 to Sl.count-1 do
begin
Simis:=Simikolons(SL[i]);
for a:=0 to Length(Simis)-1 do
begin
if a=0 then v:=2 else v:=Simis[a-1];
b:=Simis[i];
T:=Sl[i];
Delete(T,b,Length(T)-b);
Delete(T,1,v-1);
Tabelle.Cells[a,Tabelle.RowCount-1]:=T;
end;
Tabelle.RowCount:=Tabelle.RowCount+1;
end;
SL.Free;
end;
//Die Funktion Simikolons:
function TForm3.Simikolons(Zeile:string):tintarr;
var i:integer;
begin
SetLength(Result,1);
for i:=1 to Length(Zeile) do
begin
if Zeile[i]=';' then
begin
SetLength(Result,Length(Result)+1);
Result[i-1]:=i;
end;
end;
end;
//tintarr ist Array of integer
Die Datei die ich habe ist so aufgebaut:
Code:
"Wert1";"Wert2";"Wert3";"Wert4";
"Wert1";"Wert2";"Wert3";
"Wert1";"Wert2";"Wert3";"Wert4";
"Wert1";"Wert2";"Wert3";"Wert4";
Die Tabelle hat anfangs Rowcount=X, wobei X eine leere Zeile umfasst. Also für X=2 ist eine Zeile beschrieben, die letzte ist jedoch frei.
Wo liegt der Fehler?
Ich denke mal, dass er in der Funktion Simikolons liegt, aber ich finde ihn nicht...
Liebe Grüße!