Текущий архив: 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;
надо было всего лишь уменьшить длину массива с 100000
utc1:array[1..100000]of string;
Страницы: 1 вся ветка
Текущий архив: 2010.08.27;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.066 c