Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Читаем CSV текстовый файл в StringGrid

Delphi , Базы данных , ASCII и CSV

Читаем CSV текстовый файл в StringGrid


procedure ReadTabFile(FN: TFileName; FieldSeparator:
Char; SG: TStringGrid);
var 
  i: Integer; 
  S: string; 
  T: string; 
  Colonne, ligne: Integer; 
  Les_Strings: TStringList; 
  CountCols: Integer; 
  CountLines: Integer; 
  TabPos: Integer; 
  StartPos: Integer; 
  InitialCol: Integer; 
begin 
  Les_Strings := TStringList.Create; 
  try 
    // Load the file, Datei laden 
    Les_Strings.LoadFromFile(FN); 

    // Get the number of rows, Anzahl der Zeilen ermitteln 
    CountLines := Les_Strings.Count + SG.FixedRows; 

    // Get the number of columns, Anzahl der Spalten ermitteln 
    T := Les_Strings[0]; 
    for i := 0 to Length(T) - 1 do Inc(CountCols,
    Ord(IsDelimiter(FieldSeparator, T, i)));
    Inc(CountCols, 1 + SG.FixedCols); 

    // Adjust Grid dimensions, Anpassung der Grid-Gro?e 
    if CountLines > SG.RowCount then SG.RowCount := CountLines; 
    if CountCols > SG.ColCount then SG.ColCount := CountCols; 

    // Initialisierung 
    InitialCol := SG.FixedCols - 1;
    Ligne := SG.FixedRows - 1; 

    // Iterate through all rows of the table 
    // Schleife durch allen Zeilen der Tabelle 
    for i := 0 to Les_Strings.Count - 1 do 
    begin 
      Colonne := InitialCol; 
      Inc(Ligne); 
      StartPos := 1; 
      S := Les_Strings[i]; 
      TabPos := Pos(FieldSeparator, S); 
      repeat 
        Inc(Colonne); 
        SG.Cells[Colonne, Ligne] := Copy(S, StartPos, TabPos - 1); 
        S := Copy(S, TabPos + 1, 999); 
        TabPos := Pos(FieldSeparator, S); 
      until TabPos = 0; 
    end; 
  finally 
    Les_Strings.Free; 
  end; 
end; 

// Example, Beispiel: 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Screen.Cursor := crHourGlass; 
  // Open tab-delimited files 
  ReadTabFile('C:\TEST.TXT', #9, StringGrid1); 
  Screen.Cursor := crDefault; 
end;

Привет! Я переведу текст на русский язык.

Процедура ReadTabFile Процедура принимает три параметра: FN (TFileName), FieldSeparator (символ) и SG (TStringGrid). Она загружает файл CSV из FN, используя FieldSeparator как разделитель, и заполняет SG данными.

Инициализация Процедура создает объект TStringList под названием Les_Strings для загрузки файла. Затем она получает количество строк (CountLines) путем подсчета строк в файле плюс фиксированных строк в сетке. Аналогично, она получает количество столбцов (CountCols) путем разбора первой строки файла и подсчета вхождений разделителя.

Правка размеров сетки Если количество строк или столбцов превышает текущие размеры сетки, процедура корректирует счетчик строк и столбцов сетки соответственно.

Итерация по строкам Процедура затем проходит через каждую строку таблицы с помощью цикла for. Для каждой строки: 1. Она инициализирует индекс столбца (Colonne) в последнем фиксированном столбце. 2. Она увеличивает индекс строки (Ligne) на 1. 3. Она устанавливает начальный позиции (StartPos) равным 1 и текущую строку (S) равной текущей строке. 4. Она находит позицию разделителя в S с помощью функции Pos и присваивает ее TabPos. 5. Она проходит циклом, пока TabPos не будет равно 0, разбирая каждый поле: * Она копирует подстроку от StartPos до TabPos - 1 в ячейку сетки. * Она обновляет S, копируя подстроку от TabPos + 1 до конца строки (ограниченной до 999 символов). * Она находит следующее вхождение разделителя в S. 6. Когда TabPos будет равно 0, это означает, что больше нет полей в строке.

Очистка Наконец, процедура освобождает объект TStringList с помощью метода Free.

Пример использования Пример кода демонстрирует использование этой процедуры, открывая файл CSV под названием "TEST.TXT" с табуляцией (#9) как разделителем и заполняя компонент TStringGrid под названием StringGrid1.

Статья описывает процедуру чтения CSV-текстового файла в компонент TStringGrid Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: ASCII и CSV ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:35:10/0.005565881729126/1