Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

обработка сообщения из файла   Найти похожие ветки 

 
fiascko ©   (2010-03-24 08:13) [0]

Ребята, помогите, пожалуйста! Обращается далеко не профессионал к профессионалам.Необходимо составить программу по обработке данных из файла.txt . Сам файл состоит из повторяющихся 4 строк:$GPGGA,072520.000,5553.8635,N ,03805.6086,E,1,07,1.8,141.5,M,14.1 ,M,,0000*5D
$GPGSA,A,3,18,19,21,22,26,06,03,,,, ,,3.8,1.8,3.3*33
$GPGSV,3,1,12,22,75,160,42,06,58,21 4,41,03,57,236,42,18,53,072,37*7C
$GPGSV,3,2,12,19,51,289,42,26,38,11 8,44,21,28,103,38,14,17,159,28*71
$GPGSV,3,3,12,15,13,032,,24,12,099, 24,27,08,065,20,09,04,075,*7D
$GPRMC,072520.000,A,5553.8635,N,038 05.6086,E,0.11,200.74,040310,,*0E

Далее цикл повторяется, но уже без строк $GPGSV. Эта строка повторяется через 5 циклов, то есть в первом, шестом, одиннадцатом...
Цель заключается в том , чтобы любым методом импортировать данный файл в Delphi (можно через Мемо), а затем: ввести переменные равные соответствующим элементам строк для дальнейшей работы.
Примечания: 1.в обработке данных строк не принимают участия символы, стоящие после * (так что их можно удалить), 2.изначально каждое число в любой строке занимает строго отведенное для него место (так в $GPGSA,A,3,18,19,21,22,26,06,03,,,, ,,3.8,1.8,3.3*33 через запятые обозначаются элементы, которые просто на данном этапе отсутствуют, и таким образом, для обработки результатов число 3.8 идущее после кучи запятых должно иметь к примеру номер элемента не Аi11, а Ai17.
Был бы очень признателен, если кто-нибудь смог мне помочь. Очень нужно. Заранее благодарен.
я прошу помочь советом, а не полнотью создавать программу.
Меня интересует следующее:
1. как удобнее будет обрабатывать: напрямую из файла, или через промежточную запись, к примеру, в МЕМО?
2. Какие предварительные изменения необходимо сделать с файлом для дальнейшей обработки ( кпримеру, заменить запятые пробелами...)?
3. нужно ли, на ваш взгляд удалять ненужные символы после * для упрощения работы?


 
brother ©   (2010-03-24 08:15) [1]

размер файла какой?


 
fiascko ©   (2010-03-24 08:53) [2]

не болеее 2 мб


 
Anatoly Podgoretsky ©   (2010-03-24 08:54) [3]

> fiascko  (24.03.2010 08:13:00)  [0]

Если через мемо, то LoadFromFile


 
MBo ©   (2010-03-24 10:18) [4]

TStringList для загрузки, второй с использованием СommaText для обработки


 
oldman ©   (2010-03-24 10:25) [5]


> Меня интересует следующее:
> 1. как удобнее будет обрабатывать: напрямую из файла, или
> через промежточную запись, к примеру, в МЕМО?
> 2. Какие предварительные изменения необходимо сделать с
> файлом для дальнейшей обработки ( кпримеру, заменить запятые
> пробелами...)?
> 3. нужно ли, на ваш взгляд удалять ненужные символы после
> * для упрощения работы?


1. Все равно
2. Никаких
3. Нет

Обрабатывать построчно и посимвольно в строке. В цикле. Программа строк на 10.


 
Плохиш ©   (2010-03-24 13:25) [6]


> MBo ©   (24.03.10 10:18) [4]
>
> TStringList для загрузки, второй с использованием СommaText
> для обработки

поддерживаю


 
fiascko ©   (2010-03-28 16:32) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
f:textfile;
fname:string[100];
buf:string[100];
{GGA,GSA,GSV,RMC:string;  }
i,n:integer;
summ,summn:real;
utc:array[1..100000] of real;
utc1:array[1..100000]of string;
begin
fname:=edit1.text;
assignfile(f,fname);
reset(f);
while not EOF(f) do begin
     readln(f,buf);
     memo1.Lines.Add(buf);
     end;
    closefile(f);
     {summ:=1;}
   for i:=0 to Memo1.Lines.Count do
  if Copy(Memo1.Lines.Strings,1,6)="$GPGGA" then    begin

      utc1:=copy(memo1.Lines.Strings,8,10);
      memo2.Lines.Add(utc1);
      {summ:=summ+utc1;             }
      end;
      n:=0;
      summ:=0;
    for i:=1 to memo2.lines.count-1 do    begin
   { utc:=strtofloat(memo2.lines.strings);
    summ:=summ+utc;  }
    n:=n+1;
    end;
   summn:=summ/n;

Не моуг понять, почему не работает процедура (выделенная жирным курсивом).
Из всех строк
$GPGGA 072520.000 5553.8635 N 03805.6086 E 1 07 1.8 141.5 M 14.1 M  0000 5D
$GPGSA A 3 18 19 21 22 26 06 03      3.8 1.8 3.3 33
$GPGSV 3 1 12 22 75 160 42 06 58 214 41 03 57 236 42 18 53 072 37 7C
$GPGSV 3 2 12 19 51 289 42 26 38 118 44 21 28 103 38 14 17 159 28 71
$GPGSV 3 3 12 15 13 032  24 12 099 24 27 08 065 20 09 04 075  7D
$GPRMC 072520.000 A 5553.8635 N 03805.6086 E 0.11 200.74 040310   0E
$GPGGA 072521.000 5553.8635 N 03805.6086 E 1 07 1.8 141.5 M 14.1 M  0000 5C
Хочу подсчитать среднее время (время дается в строке $GPGGA сразу за названием строки 072520.000 ....)
Все времена загнал в МЕМО2. ошибки до компиляции программа не показывает. Когда нажимаю БАТОН , вылезает сообщение с ошибкой.


 
fiascko ©   (2010-03-28 16:52) [8]

for i:=1 to memo2.lines.count-1 do    begin
  { utc:=strtofloat(memo2.lines.strings);
   summ:=summ+utc;  }


 
Плохиш ©   (2010-03-29 14:36) [9]

слишкам многа букав


 
fiascko ©   (2010-03-29 21:05) [10]

utc:array[1..100000] of real;
utc1:array[1..100000]of string;
надо было всего лишь уменьшить длину массива с 100000



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.121 c
15-1272820362
s_t_d
2010-05-02 21:12
2010.08.27
PostgreSQL. Книги для начального изучения.


4-1236247314
kalexi
2009-03-05 13:01
2010.08.27
Как определить какую область занимает процесс в памяти.


6-1216448798
Alex_C
2008-07-19 10:26
2010.08.27
HttpOpenRequest - получаю Bad request


15-1267521403
sniknik
2010-03-02 12:16
2010.08.27
Символ + и TIdURI.URLEncode, как правильно?


15-1273264199
Юрий
2010-05-08 00:29
2010.08.27
С днем рождения ! 8 мая 2010 суббота