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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.085 c
6-1220349221
Guest
2008-09-02 13:53
2010.08.27
Работа с ТIdTCPServer


15-1264519606
Igor_guest
2010-01-26 18:26
2010.08.27
распространение продукта на Delphi


2-1268982904
M@G30
2010-03-19 10:15
2010.08.27
Как хранить данные в TreeNode?


6-1221336424
Рафик
2008-09-14 00:07
2010.08.27
Есть задача, нужно отсылать сообщения


2-1274359047
РП
2010-05-20 16:37
2010.08.27
Байты в число и число в байты нужной размерности





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский