![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. Если получилось - значит число. |