Импорт большого CSV файла

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Скачивание файла.

Размер: неизвестно (скачено 45%).

var s: String; f: TextFile;

AssignFile(f, ‘D:\\INPUT.TXT);

Reset(f);

while not EOF(f) do

begin

ReadLn(s, f);

ShowMessage(GetField(s, 1)); {The first field\}

ShowMessage(GetField(s, 6)); {The sixth field\}

ShowMessage(GetField(s, 25)); {will return » if no 25 column…\}

end;

CloseFile(f);

{ ==== This function will return a field from a delimited string. ==== \}

function GetField(InpString: String; fieldpos: Integer): String;

var

c: Char;

curpos, i: Integer;

begin

curpos := 1;

for i := 1 to fieldpos do

begin

result := »; if curpos > Length(InpString) then Break;

repeat

c := InpString[curpos]; Inc(curpos, 1);

if (c = ‘»‘) or (c = #13) or (c = #10) then c := ‘ ‘;

if c ‘,’ then result := result c;

until (c = ‘,’) or (curpos > Length(InpString))

end;

if (curpos > Length(InpString)) and (i < fieldpos) then result := '';

result := Trim(result);

end;

{ ==== This function will trim a string removing spaces etc. ==== \}

function Trim(inp_str: String): String;

var

i: Integer;

begin

for i := 1 to Length(inp_str) do if inp_str[i] ‘ ‘ then Break;

if i > 1 then Delete(inp_str, 1, i — 1);

for i := Length(inp_str) downto 1 do if inp_str[i] ‘ ‘ then Break;

if i < Length(inp_str) then Delete(inp_str, i 1, Length(inp_str));

result := inp_str;

if result = ‘ ‘ then result := »;

end;

{/codecitation}

Добавить комментарий