Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 504

/ вопрос решён /

Здравствуйте!
- Memo3 переводит строку после каждого знака. А надо просто в строку написать.
- Теряются данные посланные в AfComPort1.

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Примечание #1 (23 декабря 2013, 23:34):
Form1.Memo3.Lines.Add(ASCIIsimvol); // Только построчно? Методами Add() или Insert()?

zvygin1964 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: zvygin1964 (статус: Посетитель)
Вопрос отправлен: 22 декабря 2013, 16:03
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 27; последнее сообщение — 31 января 2014, 21:59; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2]

dmistand

dmistand (статус: 1-ый класс), 30 декабря 2013, 11:39 [#21]:

zvygin1964 21урок Еремина:
1 - rtl140 нужен был как раз для UCADControls. У меня Delphi 2010, у вас, видимо, ранняя - если у вас нету rtl140
2 - UCADControls - это компонент моей большой группы проектов, из которой я выдрал проектик, на котором всё тестирую. Я думал, что всё лишнее вытер из него, чтобы у вас таких проблем не было, но не учёл, что в свойствах проекта ссылка осталась. Не важно, просто удалите её, правильно сделали.

3 - Вы код читали?? Конечно, он заменяет цифры на случайные в случайных позициях строки. Так же написано - Random! Строк две, чтобы было видно, что вычислить нужное место для замены не составляет труда, если это место всегда одинаково. Это ДЕМОНСТРАЦИЯ того, как можно менять нужную вам часть строки. Вам разве не это нужно - записывать в одной и той же строке в нужной позиции нужные данные?
zvygin1964

zvygin1964 (статус: Посетитель), 30 декабря 2013, 16:07 [#22]:

Мне нужна просто печатная машинка (если вы, конечно, застали такое устройство).
Неужели нет стандартного решения и мне придется изобретать велосипед?
dmistand:"А вы код читали?",- вопрос хороший, особенно ко мне, с моим то уровнем!!! Да вы мне льстите!
Часть вопроса о потере данных отпадает: данные начинают поступать в момент перезагрузки микроконтроллера, а моя программа в это время ищет и пытается опознать устройство (каждый занят своим делом, и им нет дела о проблемах периферийных устройств в этот момент).
С Новым Годом! (исправления внесены 01.01.2014)

Может быть на другом примере подскажете?
zvygin1964

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

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

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

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

zvygin1964 (статус: Посетитель), 31 января 2014, 21:59 [#27]:

Первая строка всегда была пустой.
Помогло такое лекарство:

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Delete(0); //Удаление строки с индексом i :Memo1.Lines.Delete(i)
end;

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 23 апреля 2026, 23:37
Выполнено за 0.05 сек.