Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Столбец из .txt в массив? [D7, XP]


Страницы:   1 2

neon-w ©   (2008-12-06 18:18:00) 

Удалено модератором
Примечание: спам


korneley   (2008-12-08 22:40:00) [1]


> В свете приведеных данных ReadlN уже не пойдет.

Да пойдёт... Делов-то: Ctrl+A (или Ctrl+H, от вероисповидания зависит). Ну, или по-старинке: оговаривать формат входа-выхода... Хотя, для кого-то это уже азиатчина :)


Anatoly Podgoretsky   (2008-12-08 18:55:00) [2]


> korneley ©   (08.12.08 18:31) [38]

В свете приведеных данных ReadlN уже не пойдет. ReadlN не работает с региональными настройками, но веры ему уже больше нет.


korneley   (2008-12-08 18:31:00) [3]

Решил "освежить". Вот:

procedure TForm1.Button1Click(Sender: TObject);
var F : TextFile;
   d1, d2, d3: double;
begin
 if OpenDialog1.Execute then begin
   AssignFile(F, OpenDialog1.FileName);
   Reset(F);
   try
     Memo1.Clear;
     while not Eof(F) do begin
       try
         Readln(F, d1, d2, d3);
         Memo1.Lines.Add(Format('%g %g %g',[d1, d2, d3]));
       except
         on E : EInOutError do Memo1.Lines.Add('Ни фига не наша строка: ' + E.Message)
       end;
     end;
   finally
     CloseFile(F);
   end;
 end;
end;

Если даблов по трое - никакого парсинга. Правда запятые на точки придётся поменять. DecimalSeparator тут не канает :)


Тын-Дын   (2008-12-08 17:59:00) [4]


> neon-w   (08.12.08 16:51) [32]


В твоём случае есть 2 простейших варианта:
1. Загружатьв TStringList. Разбирать строки с помощью алгоритма конечных автоматов.
2. Читать построчно ReadLN. Разбирать каждую строку.


Тын-Дын   (2008-12-08 17:57:00) [5]


> neon-w   (08.12.08 16:51) [32]


Вот видишь.
Задачу надо точно формулировтаь.


korneley   (2008-12-08 17:48:00) [6]


> Anatoly Podgoretsky ©   (08.12.08 15:37) [31]
> ...Тем более, очень четко видно, что строки фиксированной длины
> выровненые пробелами

Ан, не скажите... :) Кстати, в свете открывшихся обстоятельств, может [26]? Или считает три дабла подряд в одной строке, или нет(на "недаблы" упрётся :))


clickmaker   (2008-12-08 16:58:00) [7]

ну хоть какой-то формализации должен данный файл поддаваться
иначе, кроме как ручным разбором его не отпарсишь
Кроме того, непонятно, почему в заголовке так много букв, а чисел всего 3


Anatoly Podgoretsky   (2008-12-08 16:54:00) [8]

> neon-w  (08.12.2008 16:51:32)  [32]

Так нафига же ты приводил недостоверную информацию?


neon-w   (2008-12-08 16:51:00) [9]

Таак... несколько поправок. На самом деле я хотел сделать по аналогии. есстественно текстовый файл у меня несколько сложней..
и думал что будет построчное чтение например с "5 слова".
+ ко всему, значения не целочисловые, а с плавающей точкой...

 Form2                
H, m t,  grad C P, MPa Re Cp Mu Ro Alfa K          
***********   Part  1   **********                  
3000 96,9815629184216 9,00372                
2950 96,8890599221952 9,00372                
2900 96,7261221808156 8,69335450677982                
2850 96,4966591552207 8,38667561254675                
2800 96,2049715521901 8,08378779157026                
2750 95,8561033021058 7,78480273523291                
2700 95,4565235860334 7,48983960274428                
2650 95,015587686615 7,19902541518877                
2600 94,5491273017935 6,91249575825749                
2550 93,9612293375593 6,63039619540761                
2500 93,3210548528758 6,35288550936762                
***********    Part  2   **********                  
2496 94,157909178026 6,08007420225563                
***********  Part  3   **********                  
2486 99,0036506822825 6,08007420225563                
***********    Part  4   **********                  
2486 98,5674380132216 14,0641781896084                
2237,4 93,8507834637865 12,7077603706476                
1988,8 88,5638801119956 11,3513425516867                
1740,2 82,8081303897337 9,9949247327259                
1491,6 76,6519823601805 8,63850691376505                
1243 70,1319724849666 7,28208909480421                
994,400000000002 63,2481851191612 5,92567127584337                
745,800000000002 55,9481830994033 4,56925345688253                
497,200000000002 47,857399978191 3,21283563792168                
248,600000000002 38,2906756286743 1,85641781896084                
1,4495071809506E-012 25,8446189727467 0,5  


Ну и как видите, в некоторых строках исключения нужны.:(


Anatoly Podgoretsky   (2008-12-08 15:37:00) [10]

Тем более, ояень четко видно, что строки финсированой длины выровненые пробелам. Так называемый Fixed Data Format. Данный формат файлов приден в моей статье

http://www.podgoretsky.com/Redir.aspx?id=143&DownloadFile=~/ddp/PasFiles.aspx


Тын-Дын   (2008-12-08 15:25:00) [11]


> Anatoly Podgoretsky ©   (08.12.08 15:15) [29]
> > korneley  (08.12.2008 14:51:28)  [28]
>
> Чего так тебя волнует табуляция, вот справка
>
> Read skips any blanks, tabs, or end-of-line markers preceding
> the numeric string.


Да он имеет ввиду код из [8].


> korneley ©   (08.12.08 14:51) [28]


Ты в приведённом тексте тексте видишь табуляцию? Нет её там.


Anatoly Podgoretsky   (2008-12-08 15:15:00) [12]

> korneley  (08.12.2008 14:51:28)  [28]

Чего так тебя волнует табуляция, вот справка

Read skips any blanks, tabs, or end-of-line markers preceding the numeric string.


korneley   (2008-12-08 14:51:00) [13]


> Тын-Дын ©   (08.12.08 14:06) [27]

Дык, табуляция вроде :( Вполне разрешённая в _текстовых_ файлах. Просто символов при отображении может побольше оказаться, чем в файле. Вроде и колонки-столбцы, и красиво, а вот цифирьки, если на заголовок ориентироваться, не совпадут. Как-то так :)


Тын-Дын   (2008-12-08 14:06:00) [14]


> korneley ©   (08.12.08 13:05) [25]
> Всё хорошо. Но как-то тема разделителей нераскрыта. А вдруг
> там символ за номером 9?


Что за символ?

Файл текстоый. Берём, копируем приведённый пример и обрабатываем.
Всё. Какие ещё могут быть проблемы?


Anatoly Podgoretsky   (2008-12-08 13:45:00) [15]

Если все строки такие как приведно, то начиная со второй строки

READLN(F, X, Y,  Z, A, B, C);


korneley   (2008-12-08 13:05:00) [16]

Всё хорошо. Но как-то тема разделителей нераскрыта. А вдруг там символ за номером 9? И в первой строке всего 11 символов (ну, там, и ^M^J впридачу)? Нехорошо получится :)


Германн   (2008-12-08 02:39:00) [17]


> Тын-Дын ©   (08.12.08 02:14) [22]
>
>


> Тын-Дын ©   (08.12.08 02:15) [23]

Я прекращаю якобы"флуд". Далее молчу.
Но [8] - всё равно бред.


Тын-Дын   (2008-12-08 02:15:00) [18]

Сам с собой общайся. Твой флуд не стоит внимания.


Тын-Дын   (2008-12-08 02:14:00) [19]


> Германн ©   (08.12.08 02:09) [20]


Вроде бы не мелкий и не больной. А повадки дебильные.


Германн   (2008-12-08 02:13:00) [20]


> {RASkov} ©   (08.12.08 02:02) [19]

Тут чуть- чуть более!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо