Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузить файл и получить несколько массивов 
:(
    Опции темы
supervladislav
Дата 26.9.2012, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


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

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



Здравствуйте , у меня есть файл , в нём распологаются строки.
время задержки,время работы,алгоритм
время задержки,время работы,алгоритм
время задержки,время работы,алгоритм
время задержки,время работы,алгоритм 

Я его считываю функцие TstringList , потом мне нужно каждый столбец каким то макаром отделить друг от друга в
отдельный массив.
Я не разобрался пока 
1. в каком виде мне вернутся все строки файла ,какую функцию лучше ждля этого использовать?

Код

function loadnew(path:string):string;
var i:integer;
var str:TStringList;
begin
str:=TStringList.Create;
str.LoadFromFile(path);
for i:=1 to str.count do
ShowMessage(str.Strings[i]);
end;


Это сообщение отредактировал(а) supervladislav - 26.9.2012, 21:03
PM MAIL   Вверх
Данкинг
Дата 26.9.2012, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Код

function TForm1.getwordnum(slovo,razd,nomer: string): string;
var i,c,int1,int2:integer;
res,ss:string;
begin
result:=slovo;
if (length(trim(slovo))=0) or (length(trim(razd))<>1)then exit;
slovo:=trim(razd)+trim(slovo)+trim(razd);
c:=0;
int1:=0;
int2:=0;
for i:=1 to length(slovo) do
 begin
  ss:=copy(slovo,i,1);
  if ss=razd then
    begin
     inc(c);
     if c=strtoint(nomer) then int1:=i;
     if c=strtoint(nomer)+1 then int2:=i;
    end;
 end;
result:=copy(slovo,int1+1,int2-int1-1);
end;


function loadnew(path:string):string;
var i,j:integer;
 str:TStringList;
begin
 str:=TStringList.Create;
 str.LoadFromFile(path);
 for i:=0 to str.count-1 do
  for j:=1 to 3 do
   ShowMessage(getwordnum(str.Strings[i],',',inttostr(j)));
 str.Free;
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 26.9.2012, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


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

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



Данкинг, пасибо неработоспособность данного участка кода была вызвано тем ,что событие слетело.
Я проанализировал предыдущую тему ,не очень просто понимаю ,чтобы получить отдельно каждую строку разделённую запятыми 
как мне это указать  в контексте моего кода.
Код

strs.QuoteChar:=',';
strs.DelimitedText:=load(OpenDialog1.FileName);

Что нужно прировнять к данному методу 
Код

strs.DelimitedText

чтобы получить значения каждой строки через запятую.
Код

function loadnew(path:string):string;
var i:integer;
var str:TStringList;
begin
str:=TStringList.Create;
str.LoadFromFile(path);
str.QuoteChar:=',';
for i:=1 to str.count do
ShowMessage(str.[i]);

end;

PM MAIL   Вверх
MetalFan
Дата 26.9.2012, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Данкинг, функция конечно полезная, но для единичного применения.
В данном же случае, оптимальнее использовать либо TStringList.CommaText, либо StrUtils.SplitString

Добавлено @ 22:41
supervladislav, при чем тут QuoteChar вообще? либо Delimeter+DelimetedText, либо в твоем случае достаточно CommaText

Добавлено @ 22:48
Код

var
  lLine: string;
  i: integer;
...
begin
...
  with TStringList.Create do
  try
    for lLine in TFile.ReadAllLines(AFileName) do
    begin
       CommaText := lLine;
       for i := 0 to pred(Count) do
       begin
         //делаем что-то с i-тым параметром строки - Strings[i]
       end; 
    end;
  finally
     Free;
  end;
 


Домашнее задание - подключить нужные юниты.
Ну и код актуален для делфи не старее D2010, а возможно и DXE.

Это сообщение отредактировал(а) MetalFan - 26.9.2012, 22:49


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
northener
Дата 27.9.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(MetalFan @  26.9.2012,  22:35 Найти цитируемый пост)
Ну и код актуален для делфи не старее D2010, а возможно и DXE.

У автора вроде Д7.


Цитата(supervladislav @  26.9.2012,  20:49 Найти цитируемый пост)
Здравствуйте , у меня есть файл , в нём распологаются строки.
время задержки,время работы,алгоритм
время задержки,время работы,алгоритм
время задержки,время работы,алгоритм
время задержки,время работы,алгоритм 

Давай пока забудем про вопрос. Озвучь сначала задачу. Что тебе нужно сделать с данными, которые содержатся в этом файле? Тогда проще будет дать наиболее правильный ответ/совет.

P.S. Кстати. Формат этого файла весьма хорошо известный - Comma-Separated Values


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Данкинг
Дата 27.9.2012, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(MetalFan @  26.9.2012,  23:35 Найти цитируемый пост)
функция конечно полезная, но для единичного применения.

Ну, кому как - я её постоянно использую, в том числе и для парсинга CSV. Такая функция есть в FoxPro, и там она весьма удобна. Поэтому я решил и в Дельфи сделать одноимённую функцию.
Цитата(northener @  27.9.2012,  01:30 Найти цитируемый пост)
Comma-Separated Values 

А CSV даже расшифровку имеет - никогда не знал, что именно так расшифровывается.

Добавлено через 48 секунд
Цитата(northener @  27.9.2012,  01:30 Найти цитируемый пост)
У автора вроде Д7.

А этот топик?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
northener
Дата 27.9.2012, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(Данкинг @  27.9.2012,  00:35 Найти цитируемый пост)
А этот топик? 

Знать я не заметил как автор не сумев решить проблемы с установкой Д7 установил Д2010. smile
Но имхо (сам лично не пробовал никакие версии старше Д2007), пример MetalFan именно от линейки ХЕ.

Это сообщение отредактировал(а) northener - 27.9.2012, 01:00


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
supervladislav
Дата 27.9.2012, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


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

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



northener, считать информацию из файла , по запятой распарсить каждую строку ,потом каждую отдельную распарсенную строку поместить в массив .
Мне надо получить 3 столбца.
Тоесть речь идёт о записи в массив ,но конкретно с записью я разберусь сам.
Как мне использую только компонент TStringList 
1.Считать строку 
2.распарсить её на по запятой

Добавлено через 12 минут и 30 секунд
Нашёл вот такой вот пример ,но он ввёл меня в заблуждение.
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  sdata, srow: TStrings;
  i:integer;
begin
  sdata:=TStringList.Create;
  srow:=TStringList.Create;
  srow.Delimiter:=',';
  sdata.LoadFromFile('c:\table.csv');
  StringGrid1.RowCount:=sdata.Count;
  for i:=0 to sdata.Count-1 do begin
    srow.DelimitedText:=sdata[i];
    if srow.Count>StringGrid1.ColCount then
      StringGrid1.ColCount:=srow.Count;
    StringGrid1.Rows[i].Assign(srow);
  end;
  srow.Free;
  sdata.Free;
end;

PM MAIL   Вверх
supervladislav
Дата 27.9.2012, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


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

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



что вот это такое никак не пойму.
Код

StringGrid1.RowCount


Это сообщение отредактировал(а) supervladislav - 27.9.2012, 16:51
PM MAIL   Вверх
Данкинг
Дата 27.9.2012, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(supervladislav @  27.9.2012,  17:49 Найти цитируемый пост)
что вот это такое никак не помйму.

Число строк в Стринггриде.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 27.9.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


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

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



Данкинг, откуда такой компонент то взялся в контексте вышеуказанного кода?
Код

StringGrid1


Добавлено через 1 минуту и 48 секунд
Но откудова данная переменная взялась, я не понимаю?
PM MAIL   Вверх
MetalFan
Дата 27.9.2012, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(supervladislav @  27.9.2012,  16:55 Найти цитируемый пост)
откуда такой компонент то взялся в контексте вышеуказанного кода

а откуда взялся данный код вообще? StringGrid - визуальный компонент. Если нужно всего лишь распарсить CSV файл, то он нафиг не нужен.
Чем не устроил мною приведенный пример? или он под твоей делфей не компилится?



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Данкинг
Дата 27.9.2012, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(supervladislav @  27.9.2012,  17:55 Найти цитируемый пост)
Данкинг, откуда такой компонент то взялся в контексте вышеуказанного кода?

Ну, парсили файл и результаты выводили в Стрингрид.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
supervladislav
Дата 27.9.2012, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


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

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



Данкинг, почему он не объявлен через new 
Код

StringGrid1


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


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(supervladislav @  27.9.2012,  22:35 Найти цитируемый пост)
почему он не объявлен через new 

Какой new? smile Это компонент обычный.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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