БОЛЬШОЙ FAQ ПО DELPHI



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

Скачивание файла.
Размер: неизвестно (скачено 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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ