Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Вниз

Чтение данных из текстового файла   Найти похожие ветки 

 
Andrew Volkov   (2002-09-07 22:32) [0]

Не подсажете каким образом можно производить чтение из текстового файла имеющего к примеру след. структуру

данное 1, данное 2, данное3,
д4, д5, д6, д7, д8,
д9,
д10, д11,

д12, д13, д14
д15.

Реально нужно просто вытащить эти данные, но как двигаться по файлу и читать данные я из хелпа как-то не сообразил.
Спасибо


 
Aleks1   (2002-09-08 03:32) [1]

Что в данном вопросе означают запятые?
Что в данном вопросе означают "переводы строки"?
И какое это все имеет отношение к "текстовому" файлу?
И что такое "структура" текстового файла в вашем понимании?
Может лучше привести пример файла, а тогда будут и ответы.


 
Poirot   (2002-09-08 08:53) [2]


> Aleks1

Прикольно!!! Вопросов больше чем ответов!!
> Может лучше привести пример файла, а тогда будут и ответы.

А выше это не примет, так Бред!!! ДА????

Слухай сюда!!!
Еслии идти стандартно, то надо вам читать построчьно, а потом разбивать эту строку по запятым....
Можно читать посоимвольно, то придётся отслеживать EOLN и EOF...
Надеюсь понятно!!! Если нет говори, пример напишу....
Ага чуть незабыл... С пустыми строками лучше наверное будет посимвольное чтение, т.к. в построчном надо добавить , хоть и не много, но строчку на проверку пустой строчки!!!


 
Andrew Volkov   (2002-09-08 11:04) [3]

to Aleks: если можно пример.
А пример я вроде понятно написал.
Есть файл где записано определенное колличество данных.
Они расположены грубо говоря так как я написал
д1, д2, д3 (к примеру эти данные 16.45, 56, Moscow)
Разделены данные к примеру запятыми.
Следующая строка не имеет такую же структуру как первая.

д4, д5, д6, д7, д8, (к примеру 0.11111, 1, 1, Russia, 500)

К тому же могут быть "нулевые" строки.
д10, д11,
"нулевая" строка
д12, д13, д14





 
Andrew Volkov   (2002-09-08 11:05) [4]

to Poirot: если можно пример.


 
MBo   (2002-09-08 11:07) [5]

изучи TStringList, обрати внимание на CommaText


 
Poirot   (2002-09-08 12:59) [6]

Вот что предлагает MBo

var T:TStringList;
begin
T:=TStringList.create;
T.CommaText:="dddd, dddd, ddd";
T.Free;
end;

Ну а двльше надо просто читать строку, присваивать её CommaText и потом анализировать StringList!!!
А свой код при большей необходимости напишу на мыло, пиши!!!


 
Andrew Volkov   (2002-09-08 15:23) [7]

Можно на мыло прислать, чтобы сразу разобраться. Если не трудно.


 
Юрий Зотов   (2002-09-08 22:00) [8]

> , но как двигаться по файлу и читать данные

А что, разве Read и ReadLn уже отменили?

var
F: TextFile;
д1: ...;
д2: ...;
...
д15: ...;
begin
AssignFile(FileName, F);
Reset(F);
ReadLn(F, д1, д2, д3);
ReadLn(F, д4, д5, д6, д7, д8);
ReadLn(F, д9);
ReadLn(F, д10, д11);
ReadLn(F); // это пропуск пустой строки
ReadLn(F, д12, д13, д14);
Read(F, д15);
Close(F);
end;


> Еслии идти стандартно, то надо вам читать построчьно, а потом
> разбивать эту строку по запятым....
> Можно читать посоимвольно, то придётся отслеживать EOLN и EOF

Боже, какой кошмар!

> Ну а двльше надо просто читать строку, присваивать её
> CommaText и потом анализировать StringList!!!

Стрельба из пушки по воробьям.

Есть такой язык - Паскаль называется. Советую изучить, очень пригодится.


 
Aleks1   (2002-09-09 06:10) [9]

Спасибо Юрий, что помимо прочего и ответили за меня на Poirot © (08.09.02 08:53)

Хотя с исходным форматом файла все-таки остались непонятности.
То ли форматирование сообщения испорчено, то ли?
Поскольку действительно грамотный вариант Юрия Зотова
> ReadLn(F, д1, д2, д3);
> ReadLn(F, д4, д5, д6, д7, д8);
ну никак не подойдет, если у автора в тексте вопроса возник лишний перевод строки вместе с возвратом каретки, допустим из-за несовпадение форматов браузера и форума.
Именно это я и имел в виду, поскольку видимые мне строки, частью заканчиваются запятыми, частью ничем, частью точкой.


 
Andrew Volkov   (2002-09-09 23:55) [10]

>Юрий Зотов
Спасибо.
Только я не совсем понял строку
> ReadLn(F, д1, д2, д3);
Вы имели в виду что должно быть
> ReadLn(F, D1{д1, д2, д3});
я имею в виду 1 переменная в которую считывается вся строка.
Или там дейтвительно 3 переменных, потому-что я попробовал у меня строка пишется в первую переменную.
Если 1 переменная, то дальше все ясно, а если 3 то тогда не ясно как все попадает во 2 и 3 переменные.
Если можно объясните этот момент.

П.С. И вот такой вопрос еще возник, а можно как-нибудь читать с какой-то позиции в файле, и если да то как?


 
Юрий Зотов   (2002-09-10 00:05) [11]

> Если можно объясните этот момент.

Можно, конечно, но лучше на примере, а то очень много писать придется. Приведите текст конкретного файла данных.

> а можно как-нибудь читать с какой-то позиции в файле

См. Seek в справке Delphi или SetFilePointer в справке API.


 
Andrew Volkov   (2002-09-10 00:10) [12]

>Юрий Зотов
Это получается я только могу жестко задать
д1: string[3];
д2: string[5];
И тогда он автоматом пойдет в след. переменную?
Если так то этот момент я понял.


 
Andrew Volkov   (2002-09-10 00:15) [13]

пример файла


12, 34, 45,
245,Russia, Yes, 0, 0, 0

412, 0.000012,

Yes, 1, 0



 
Юрий Зотов   (2002-09-10 00:25) [14]

> Andrew Volkov (10.09.02 00:10)

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

Сел писать пример чтения Вашего файла, чуть позже выдам код.


 
Andrew Volkov   (2002-09-10 00:27) [15]

Спасибо что мучаетесь со мной


 
Юрий Зотов   (2002-09-10 01:30) [16]

Да, насчет форматированного ввода - это я погорячился. Вывод такой есть, а вот ввода - нет. Сам уже Паскаль забывать начал, тоже подучить нужно.
:о)

Пришлось делать с короткими строками и слегка подправить файл данных. Вот что получилось.

Данные:

12 34 45
245 Russia Yes 0 0 0

412 0.000012

Yes 1 0


Программа:

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;
D1, D2, D3, D4, D7, D8, D9, D10, D13, D14: integer;
D5, D6, D12: string[7]; // Поленился делать разные строки.
D11: double;

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F, "Example.txt");
Reset(F);
ReadLn(F, D1, D2, D3);
ReadLn(F, D4, D5, D6, D7, D8, D9);
ReadLn(F);
ReadLn(F, D10, D11);
ReadLn(F);
Read(F, D12, D13, D14);
CloseFile(F);
D5 := Trim(D5);
D6 := Trim(D6);
D12 := Trim(D12);
Memo1.Lines.Add(Format("%d %d %d", [D1, D2, D3]));
Memo1.Lines.Add(Format("%d %s %s %d %d %d", [D4, D5, D6, D7, D8, D9]));
Memo1.Lines.Add("");
Memo1.Lines.Add(Format("%d %8.6f", [D10, D11]));
Memo1.Lines.Add("");
Memo1.Lines.Add(Format("%s %d %d", [D12, D13, D14]));
end;


В общем - никаких откровений, конечно, но файл читает без проблем. Лишь бы был точно известен его формат.


 
Poirot   (2002-09-10 06:49) [17]


> Юрий Зотов © (

Зашибись!!! Я что-то не то сказал???
Типа читаем мы непострочно, а тады как!!!
Паскаль я 5 лет учу и 3 курсовика сдал....


 
Andrew Volkov   (2002-09-10 21:22) [18]

Большое спасибо. Яснее не бывает. :-)))


 
Стрелочник   (2002-09-11 03:37) [19]

2 Пуаро
Ты действительно не то сказал, не так понял и не то сдавал 3 раза.
Шутка.
Твоя главная ошибка состоит в том, что ты не жаворонок. Посему тебе лучше не пытаться выступать на форуме рано утром. Имхо, результатом, в лучшем случае, являются сплошные "очепятки".

В более позднее время суток ты гораздо "длиннее" (как удав в попугаях).



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.007 c
1-73715
liho26
2002-09-11 06:43
2002.09.23
версию программы в Form1.Caption. Как это сделать?


1-73752
Anar
2002-09-11 10:10
2002.09.23
Delphi 7


1-73629
Jony
2002-09-11 18:49
2002.09.23
Маразмы сравнения


14-73841
Алик
2002-08-25 23:05
2002.09.23
Скачать Delphi 6


1-73643
grigorys
2002-09-12 17:09
2002.09.23
VB И DELPHI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский