|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с TMemo и TSaveDialog
Есть компонент TMemo заполненый следующим текстом:
Код:
C… MENU $GPRMC,101000.00,A,5029.0706,N,03028.7410,E,000.0,000.0,230111,02.2,E,A*0D $GPRMC,101001.00,A,5029.0707,N,03028.7411,E,000.0,000.0,230111,02.2,E,A*0D VSE MENU Мне нужно сохранить только это: $GPRMC,101000.00,A,5029.0706,N,03028.7410,E,000.0, 000.0,230111,02.2,E,A*0D $GPRMC,101001.00,A,5029.0707,N,03028.7411,E,000.0, 000.0,230111,02.2,E,A*0D Я умею сохранять только определенные строки, но в моем случае строки могут быть разными… было бы идеально сохранять текст, начиная с первого символа $ и по слово VSE. Сейчас сохраняет все стандартной процедурой: Код:
procedure TForm1.Button_save_to_fileClick(Sender: TObject); var FName: string; begin SaveDialog1.FileName := FName; if SaveDialog1.Execute then begin FName := SaveDialog1.FileName; Memo.Lines.SaveToFile(FName); end; end; Буду благодарен любым соображениям. |
#2
|
||||
|
||||
Код:
var A, B: Integer; begin if SaveDialog1.Execute then begin A := Pos('$', Memo1.Text); B := Pos('VSE', Memo1.Text) - A; with TStringList.Create do begin Text := Copy(Memo1.Text, A, B); SaveToFile(SaveDialog1.FileName); Free; end; end; end; |
#3
|
|||
|
|||
Спасибо огромное!
Последний раз редактировалось Harima Hario, 08.03.2011 в 16:07. |
#4
|
|||
|
|||
Вопрос по ProgressBar.
Есть процедура чтения из COM порта и записи полученной информации в компоненту Memо:
Код:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var Str: String; begin ComPort.ReadStr(Str, Count); Memo.Text := Memo.Text + Str; end; Как в этом случае можно использовать ProgressBar? |
#5
|
|||
|
|||
а известно общее кол-во строк? я думаю из GPS-прибора это можно получить какой-то командой, если известно, то сделать не сложно.
|
#6
|
|||
|
|||
Я могу вывести в компонент TMemo общее количество строк с координатами, как тогда должна выглядеть процедура с использованием ProgressBar?
|
#7
|
|||
|
|||
дык когда ты уже получишь все строки, то ProgressBar уже не актуален будет. Просто ему нужно начальное значение, 0 например и конченое, что бы рассчитать видимую полосу.
|
#8
|
|||
|
|||
Хорошо, начало есть 0, конец допустим 167 строк, а как прогрессбар будет знать какую строчку в данный момент я обрабатываю и вывожу в memo?
|
#9
|
|||
|
|||
Цитата:
Код:
ProgressBar.Min := 1; ProgressBar.Max := 167; for i:=1 to 167 do // цикл заполнения Memo begin Application.ProcessMessages; // шоб не зависало окно ProgressBar1.Position := i; // двигаем прогресс end; Код:
ProgressBar.Min := 1; ProgressBar.Max := 167; ProgressBar1.Position := 0; procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer); var Str: String; begin ComPort.ReadStr(Str, Count); Memo.Add(Str); ProgressBar1.Position := ProgressBar1.Position + 1; // сдвигаем прогресс на +1 вперед end; Последний раз редактировалось Assistant, 08.03.2011 в 23:29. |
#10
|
|||
|
|||
Дело в том, что у меня в memo не только координаты находятся, а и менюшка запрограммированного устройства и другое, именно поэтому при сохранении координат в текстовый файл я пользовался процедурой, которой мне подсказали чуть выше в этой теме:
http://www.delphisources.ru/forum/sh...86&postcount=2 Можно сделать и так, как вы подсказали, только в этом случае ошибка измерений будет равна 10-20 строкам… |
#11
|
|||
|
|||
ну тут я думаю не получится сделать с ProgressBar, ибо мы изначально, до чтения из порта, не знаем кол-во записей.
Последний раз редактировалось Assistant, 09.03.2011 в 01:13. |
#12
|
|||
|
|||
угу, это да...
тогда я сперва попробую вывести общее количество координат, и уже после начну химичить с прогрессбаром. |
#13
|
|||
|
|||
просто давно давно я работал с GPS треккерами, и у них были команды для просмотра кол-во точек в памяти, может и у вас такое есть где нибудь в описании к прибору?
|