![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите плиз, есть текстовый файл:
"1 IQ -УПPABЛЯЮШИЙ ПAPAMETP 5 NR-ЧИCЛO OБPAБATЫBAEMЫX PEЖИMOB 23 NPRI-ЧИCЛO OБPAБATЫBAEMЫX ПPИЗHAKOB N HD N HD pr N НД ф P*KHД T*KHД G B CУM N СД P*KСД T*KСД N ВД Р*КВД Т*КВД ПИКСУМ Т*Г G T Р*TНД Т*ТНД КПД ЭФ NСТ/ТНД Р*ТСТ T*TCT P ГДКС KПД CУM N E 1.0000 4932.0000 2.2149 360.7209 105.7600 7379.0000 6.1462 497.2964 " Как записать из этого файла числа 1.0000 4932.0000 2.2149 360.7209 105.7600 7379.0000 6.1462 497.2964 последовательно в 8 полей edit'ов ? |
#2
|
|||
|
|||
![]() Открыть, считать, далее разбирать по формату.
Если ты уверен в формате файла, то фактически тебе надо найти строки, содержащие цифры, а затем их распихать "по пробелам". |
#3
|
|||
|
|||
![]() Можно по подробней плиз, я в делфи дуб дубом
![]() |
#4
|
|||
|
|||
![]() Ну смотри, у тебя сами данные идут после пустой строки. Это достаточный признак, т.е. все, что до пустой строки просто игнорируем.
Далее. сами данные идут через пробел в форме с плавающей точкой. Берем строку и начинаем ее пилить по пробелу с помощью функций Pos и Copy. Код:
var SL : TStringList; I, N : Integer; S : String; begin SL : =TStringList.Create; SL.LoadFromFile('data.dat'); N := -1; For I := 0 To Sl.Count-1 Do If SL[i] = '' Then // Нашли разделитель. со сл. строки идут данные Begin N := I +1; Break; End; If N > -1 Then // Данные есть. Begin For I := N To SL.Count-1 Do While (SL[i] <> '') And (Pos(' ',SL[i]) > 0) Do Begin S := Copy(SL[i],1,Pos(' ',SL[i])-1); SL[i] := Copy(SL[i],Pos(' ',SL[i])+1,Length(SL[i])); // не совсем аккуратно, длиннц можно вычислить точнее. // Теперь здесь надо выяснить в какой из контролов надо запихнуть данные из S - напишешь сам. End; End; SL.Free; end; |
#5
|
|||
|
|||
![]() Большое спасибо)
|
#6
|
|||
|
|||
![]() Слишком много условностей вроде?
Не лучше ли сделать так: 1. Разбить текст на отдельные слова (к примеру, заменить все пробелы на #13#10) 2. Для каждого слова использовать TryStrToFloat (при учете что DecimalSeparator = '.') 3. Если получилось - значит число. |