Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с CSV как с таблицей 
V
    Опции темы
Mephisto
  Дата 21.2.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Люди, можно ли работать с обычными CSV файлами как с обычными таблицами??? Без всяких шаманств с разрывом файлов ручками!!!
PM   Вверх
Snowy
Дата 21.2.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 2
Всего: 484



Натравить на него ODBC
PM MAIL   Вверх
DimW
Дата 21.2.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



в ODBC есть нужные драйвера
PM MAIL ICQ   Вверх
Mephisto
Дата 21.2.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Пасип.  smile 
Жаль. Мну ODBC не устраивает. Мне банальный импорт нужно будет сделать... 
PM   Вверх
SergeBS
Дата 21.2.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Mephisto
1.
Цитата

Обязательно указание:
1. Базы данных (Paradox, Oracle и т.п.)
2. Способа доступа (ADO, BDE и т.д.)

Телепатов нет.
2. Импорт из csv - как правило есть. Не только в ODBC.
PM MAIL   Вверх
Snowy
Дата 21.2.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 2
Всего: 484



Код

unit csvunit;

interface

uses SysUtils, Classes;

type
  TCSVTable = class(TPersistent)
  private
    FData: TStringList;
    FRow:  TStringList;
    FDelimiter: Char;
    function GetCells(ACol, ARow: Integer): string;
    procedure SetCells(ACol, ARow: Integer; const Value: string);
    function GetRows(Index: integer): TStringList;
  public
    constructor Create;
    destructor Destroy; override;
    property Data: TStringList read FData;
    property  Cells[ACol, ARow: Integer]: string read GetCells write SetCells; default;
    property  Rows[Index: integer]: TStringList read GetRows;
    property  Delimiter: Char read FDelimiter write FDelimiter default ';';
  end;


implementation

{ TCSVTable }

constructor TCSVTable.Create;
begin
  FData := TStringList.Create;
  FRow := TStringList.Create;
  FDelimiter := ';';
end;

destructor TCSVTable.Destroy;
begin
  FData.Free; FRow.Free;
  inherited;
end;

function TCSVTable.GetRows(Index: integer): TStringList;
begin
  FRow.Text := StringReplace(FData[Index], FDelimiter, #13, [rfReplaceAll]);
  result := FRow;
end;

function TCSVTable.GetCells(ACol, ARow: Integer): string;
begin
  try
    Result := Rows[ARow][ACol];
  except
    Result := '';
  end;
end;

procedure TCSVTable.SetCells(ACol, ARow: Integer; const Value: string);
begin
  Rows[ARow][ACol] := Value;
  FData[ARow] := StringReplace(FRow.Text, #13, FDelimiter, [rfReplaceAll]);
end;

end.


Пример работы:
Код

var
  csv: TCSVTable;
  i, j: integer;
begin
  csv := TCSVTable.Create;
  csv.Data.LoadFromFile('C:\1.csv');
  for i := 0 to csv.Data.Count-1 do
    with csv.Rows[i] do
      for j := 0 to Count-1 do
        StringGrid1.Cells[j+1, i+1] := Strings[j];
  csv.Free;
end;


Добавлено @ 18:58 
По сути варианты доступа к ячейкам:
Код

  csv.Data.LoadFromFile('zzz.csv');
  s := csv[1, 2];
  cvs[2,4] := s + 'жу-жу';
  csv.Data.SaveToFile('Newzzz.csv');

PM MAIL   Вверх
Mephisto
Дата 22.2.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(SergeBS @  21.2.2007,  19:28 Найти цитируемый пост)
Mephisto, 
1.
Цитата

Обязательно указание:
1. Базы данных (Paradox, Oracle и т.п.)
2. Способа доступа (ADO, BDE и т.д.)

Я же сказал 
Цитата(Mephisto @  21.2.2007,  16:47 Найти цитируемый пост)
CSV файлами

Если можно работать через ADO, то как через ADO, если BDE, то как?  smile 
Цитата(SergeBS @  21.2.2007,  19:28 Найти цитируемый пост)
Импорт из csv - как правило есть. Не только в ODBC. 

я уж понил.  smile 
2Snowy, сенкс, буду смотреть. Пасип  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0763 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.