3. Mai 2017 09:56
3. Mai 2017 10:02
3. Mai 2017 10:33
OnPreReport
TempServerdatei := Filemgt.UploadFile(...);
File.open(TempServerdatei);
File.createInstream(instr);
while not instr.eos do begin
instr.readtext(TextLine);
if Split(TextLine, FieldArr,Splitchar) <> 0 then begin
rec.FieldA := fieldarr[1];
rec.FieldB := fieldarr[2];
// oder was auch immer du mit den Feldern machen möchtest;
end;
end;
Split(var pTextLine:Text;var pFieldArr[100] Text;pSplittchar Text[1]) NoOfFields :integer
var
i:integer;
begin
clear(pFieldArr);
for i:= 1 to strlen(pTextLine) do
if pTextLine[i] = pSplittchr[1] then
NoOfFields+=1
else
pFieldArr[NoOfields+1] += copystr(pTextLine,i,1);
if NoOfFields <>0 then
NoOfFields +1;
end;
3. Mai 2017 11:48
9. August 2017 13:33
GetFileEncoding(ServerFileName,Encoding); //Funktion von Vjeko. Encoding wird »by reference« durchgeschliffen. http://vjeko.com/detect-file-encoding-in-cal-using-net-interop/
FileStream := FileStream.FileStream(ServerFileName,FileMode.Open);
StreamReader := StreamReader.StreamReader(FileStream,Encoding,TRUE);
//Lese Spaltenköpfe (1. Zeile) und ermittle Anzahl Spalten und Feldnummern
IF StreamReader.EndOfStream THEN
ERROR('Datei enthält keine relevanten Daten!');
ColumnCaptionString := StreamReader.ReadLine;
ColumnCaptionString := CONVERTSTR(ColumnCaptionString,';',',');
ColumnCount := STRLEN(DELCHR(ColumnCaptionString, '=', DELCHR(ColumnCaptionString , '=', ','))) +1; //Anz. Spalten
FieldNoString := GetFldNoString(RecRef,ColumnCaptionString); //Collect FieldNos from ColumnCaptionString
//Lese weitere Zeilen
WHILE NOT StreamReader.EndOfStream DO BEGIN
ProcessCSVLine(RecRef,FieldNoString,ColumnCount,StreamReader.ReadLine);
//...
END;
StreamReader.Close;
FileStream.Close;
RecRef.CLOSE;
9. August 2017 14:20