Theo, danke nochmals. Ich bin dank deiner unit jetzt in der Lage meine Vokabeln vom Excel/OpenofficeCalc Sheet in den Vokabeltrainer zu bekommen. Ausserdem klärt sich für mich die babylonische Verwirrung um UTF-8, ANSI, ... und andere Speicherformate.
Das Konstrukt liest fast alles ein.
Code: Alles auswählen
uses wopruniloader;
{ TForm1 }
procedure TForm1.actStartExecute(Sender: TObject);
var aFilename : string;
aStringList1,
aStringList2 : TStringList;
i,j : integer;
aString : string;
//
aStream : TFileStream;
str : string;
aUniloader: TUniLoader;
begin
aFilename := './alles.csv';
// Objekte erzeugen
aStringList1 := TStringList.Create;
aStringList2 := TStringList.Create;
// Datei in Stream einlesen
aStream := TFileStream.Create(aFilename,fmOpenRead);
// Streamzeiger sicherheitshalber an den Anfang setzen
aStream.Seek(0,soBeginning);
// Konvertieren
aUniLoader := TUniLoader.Create(aStream);
Label1.Caption := aUniloader.FileTypeStr;
aStringList1.Text:= aUniLoader.GetFullString;
Memo1.Text:= aUniLoader.GetFullString;
// In stringlist1 ist jetzt das ganze File
StringGrid1.ColCount := 9;
StringGrid1.RowCount := aStringList1.Count + 1;
for j:= 0 to aStringList1.Count -1 do
begin
aStringList2.QuoteChar:= '"';
aStringlist2.Delimiter:= ';';
aStringList2.DelimitedText:= aStringList1.Strings[j];
// falls die länge nicht stimmt, weitermachen
if aStringList2.Count <> 8 then continue;
//ins Grid bringen
for i := 0 to aStringList2.Count - 1 do
begin
aString := aStringList2.Strings[i];
StringGrid1.Cells[i+1,j+1] := aString;
end;
end;
aStringList1.free;
aStringList2.free;
aUniLoader.free;
aStream.free;
end;
Das Zerlegen der Zeile mit dem richtigen Properties von der TStringList ist ja nur noch die Pflicht.
Es waren übrigends 2975 griechische Vokabeln (Verben in allen möglichen Formen) die ich jetzt in ein paar Sekunden importieren kann. Jetzt fehlt noch, das ich die auch noch lernen muß .... aber das ist eine andere Geschichte.