|
Вопрос # 6 504/ вопрос решён / |
|
Здравствуйте!
- Memo3 переводит строку после каждого знака. А надо просто в строку написать.
- Теряются данные посланные в AfComPort1.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Примечание #1 (23 декабря 2013, 23:34): Form1.Memo3.Lines.Add(ASCIIsimvol); // Только построчно? Методами Add() или Insert()?
 |
Вопрос задал: zvygin1964 (статус: Посетитель)
Вопрос отправлен: 22 декабря 2013, 16:03
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 27; последнее сообщение — 31 января 2014, 21:59; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2]
|
dmistand (статус: 1-ый класс), 30 декабря 2013, 11:39 [#21]:
zvygin1964 21урок Еремина:
1 - rtl140 нужен был как раз для UCADControls. У меня Delphi 2010, у вас, видимо, ранняя - если у вас нету rtl140
2 - UCADControls - это компонент моей большой группы проектов, из которой я выдрал проектик, на котором всё тестирую. Я думал, что всё лишнее вытер из него, чтобы у вас таких проблем не было, но не учёл, что в свойствах проекта ссылка осталась. Не важно, просто удалите её, правильно сделали.
3 - Вы код читали?? Конечно, он заменяет цифры на случайные в случайных позициях строки. Так же написано - Random! Строк две, чтобы было видно, что вычислить нужное место для замены не составляет труда, если это место всегда одинаково. Это ДЕМОНСТРАЦИЯ того, как можно менять нужную вам часть строки. Вам разве не это нужно - записывать в одной и той же строке в нужной позиции нужные данные?
|
|
zvygin1964 (статус: Посетитель), 30 декабря 2013, 16:07 [#22]:
Мне нужна просто печатная машинка (если вы, конечно, застали такое устройство).
Неужели нет стандартного решения и мне придется изобретать велосипед?
dmistand:"А вы код читали?",- вопрос хороший, особенно ко мне, с моим то уровнем!!! Да вы мне льстите!
Часть вопроса о потере данных отпадает: данные начинают поступать в момент перезагрузки микроконтроллера, а моя программа в это время ищет и пытается опознать устройство (каждый занят своим делом, и им нет дела о проблемах периферийных устройств в этот момент).
С Новым Годом! (исправления внесены 01.01.2014)
Может быть на другом примере подскажете?
|
|
zvygin1964 (статус: Посетитель), 3 января 2014, 23:17 [#23]:
unit form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, Menus, Buttons;
type
TForm1 = class(TForm)
Timer1: TTimer;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
port: Integer;
implementation uses StrUtils;
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
RandASCII: Integer;
begin
//Timer1.Enabled:=False; //сработает один раз и остановится
RandASCII := Random(78)+48;//случайное число Integer из таблицы ASCII 126
Memo2.Lines.Add(IntToStr(RandASCII)) ;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
y: Integer;
begin
Memo1.Lines.Clear;
for i := 48 to 126 do //эти знаки из таблицы ASCII хорошо различимы
begin
y:=i;
Memo1.Lines.Add(IntToStr(i)+': '+chr(i)) //знаки ASCII (до 126)
end;
end;
end.
|
|
Drinkenz (статус: 1-ый класс), 4 января 2014, 18:01 [#24]:
Разбирая подарки, принесенные Снеговиком, обнаружил пакет с надписью "Печатная машинка". Мне он ни к чему, авось кому пригодится
unit Unit1; // печатная машинка
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.readonly:=true;
end;
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8:
begin
memo1.text:=copy(memo1.text,1,length(memo1.text)-1);
end;
#13:
begin
memo1.lines.add('');
end;
else
begin
memo1.Text:=memo1.Text+key;
end;
end;
memo1.SelStart:=length(memo1.Text);
sendmessage(memo1.handle,EM_SCROLLCARET,0,0);
end;
end.
|
|
zvygin1964 (статус: Посетитель), 5 января 2014, 14:02 [#25]:
Drinkenz: Как же сделать, чтобы ваша:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
запускалась от моей:
procedure TForm1.Timer1Timer(Sender: TObject); //?
Тогда, наверное, будет работать.
procedure TForm1.Memo3KeyPress(Sender: TObject; var Key: Char);
begin
Key:= forKey ;{ forKey:= chr(RandASCII) вот это мне и надо вывести в строку!!! }
case Key of
#8:
begin
memo3.text:=copy(memo3.text,1,length(memo3.text)-1);
end;
#13:
begin
memo3.lines.add('');
end;
else
begin
memo3.Text:=memo3.Text+key;
end;
end;
memo3.SelStart:=length(memo3.Text);
sendmessage(memo3.handle,EM_SCROLLCARET,0,0); //без этого работает
end;
|
|
zvygin1964 (статус: Посетитель), 6 января 2014, 15:52 [#26]:
Всё получилось:
unit form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, Menus, Buttons, StrUtils;
type
TForm1 = class(TForm)
Timer1: TTimer;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure M3KeyPress(Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
port: Integer;
forKey: Char ;
Key: Char ;
implementation
{$R *.dfm}
procedure TForm1.M3KeyPress(Key: Char);
begin
Key:= forKey ; //forKey:= chr(RandASCII) вот это мне и надо!!!
case Key of
#8:
begin
memo3.text:=copy(memo3.text,1,length(memo3.text)-1);
end;
#13:
begin
memo3.lines.add('');
end;
else
begin
memo3.Text:=memo3.Text+key;
end;
end;
memo3.SelStart:=length(memo3.Text);
sendmessage(memo3.handle,EM_SCROLLCARET,0,0); //без этого работает
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
RandASCII: Integer;
begin
//Timer1.Enabled:=False; //сработает один раз и остановится
RandASCII := Random(78)+48;//случайное число Integer из таблицы ASCII 126
forKey:= chr(RandASCII) ;
Memo2.Lines.Add(IntToStr(RandASCII)) ;
Memo4.Lines.Add(forKey) ; //знаки ASCII (до 126)
M3KeyPress(Key);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
y: Integer;
begin
Memo1.Lines.Clear;
for i := 48 to 126 do //эти знаки из таблицы ASCII хорошо различимы
begin
y:=i;
Memo1.Lines.Add(IntToStr(i)+': '+chr(i)); //знаки ASCII (до 126)
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo3.readonly:=true; //без этого работает
end;
end.
Правильный ответ дал Drinkenz !!!
|
6 января 2014, 15:53: Статус вопроса изменён на решённый (изменил автор вопроса — zvygin1964): Правильный ответ дал Drinkenz
|
zvygin1964 (статус: Посетитель), 31 января 2014, 21:59 [#27]:
Первая строка всегда была пустой.
Помогло такое лекарство:
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Delete(0); //Удаление строки с индексом i :Memo1.Lines.Delete(i)
end;
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|