|
Вопрос # 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-ый класс), 24 декабря 2013, 17:48 [#1]:
Form1.Memo3.Lines[i] := Form1.Memo3.Lines[i] + str;
нет?
А вообще - было бы неплохо и *.dfm файл прикреплять...
|
|
zvygin1964 (статус: Посетитель), 25 декабря 2013, 16:05 [#2]:
*.dfm файл прикрепить на expert.delphi.int.ru уже не получается.
Попробовал ваше предложение (если я его понял правильно):
Form1.Memo3.Lines[data]:=Form1.Memo3.Lines[data]+dat;
//в окно Memo3 ничего не вывелось.
Ещё предложения? Буду рад всему...
Далее Unit1.dfm :
|
|
zvygin1964 (статус: Посетитель), 25 декабря 2013, 17:30 [#3]:
object Form1: TForm1
Left = 1036
Top = -14
Width = 1036
Height = 780
Caption = 'AsyncFree'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object Label7: TLabel
Left = 920
Top = 40
Width = 32
Height = 13
Caption = 'Label7'
end
object Label8: TLabel
Left = 912
Top = 60
Width = 63
Height = 13
Caption = #1047#1072#1076#1072#1090#1100' '#1057#1054#1052
end
object Button1: TButton
Left = 912
Top = 80
Width = 75
Height = 25
Caption = #1047#1072#1087#1088#1086#1089
TabOrder = 0
OnClick = Button1Click
end
object ComboBox1: TComboBox
Left = 904
Top = 8
Width = 89
Height = 21
ItemHeight = 13
TabOrder = 1
Text = 'COM1'
OnSelect = ComboBox1Select
Items.Strings = (
'COM1'
'COM2'
'COM3'
'COM4')
end
object Memo1: TMemo
Left = 16
Top = 16
Width = 857
Height = 81
Color = clNavy
Font.Charset = DEFAULT_CHARSET
Font.Color = clAqua
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 2
end
object Memo2: TMemo
Left = 16
Top = 192
Width = 153
Height = 305
Lines.Strings = (
'Memo2')
TabOrder = 3
end
object Memo3: TMemo
Left = 24
Top = 528
Width = 337
Height = 65
Lines.Strings = (
'Memo3')
TabOrder = 4
end
object Timer1: TTimer
Enabled = False
OnTimer = Timer1Timer
Left = 920
Top = 112
end
object AfComPort1: TAfComPort
OnDataRecived = AfComPort1DataRecived
Left = 976
Top = 104
end
end
|
|
DNK (статус: Студент), 25 декабря 2013, 17:59 [#4]:
Цитата (zvygin1964):
Попробовал ваше предложение (если я его понял правильно):
Form1.Memo3.Lines[data]:=Form1.Memo3.Lines[data]+dat;
//в окно Memo3 ничего не вывелось.
Архистранно.
"Digital Networked Knight"
|
|
zvygin1964 (статус: Посетитель), 25 декабря 2013, 18:08 [#5]:
Да. Мои познания на таком уровне.
|
|
Drinkenz (статус: 1-ый класс), 25 декабря 2013, 18:11 [#6]:
for i:=1 to count do
dat:=IntToStr(ab[i]);
st:=st+dat+' ';
Может быть где то здесь пропущены begin end?
|
|
zvygin1964 (статус: Посетитель), 25 декабря 2013, 19:37 [#7]:
Нет, begin end на своих местах. Тут все как надо. Исходный (как в вопросе) работает и все что нужно выдает.
|
|
dmistand (статус: 1-ый класс), 26 декабря 2013, 13:34 [#8]:
zvygin1964 21урок Еремина: а что здесь data? Индекс? Насколько я понимаю, он должен быть в допустимых пределах. Это так? Вот пример, можете попробовать повторить:
DFM:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 267
ClientWidth = 535
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Memo1: TMemo
Left = 72
Top = 56
Width = 185
Height = 89
Lines.Strings = (
'Memo1')
TabOrder = 0
end
end
PAS:
unit form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, UCADControls, Menus, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
Memo1.Lines[0] := Memo1.Lines[0] + 'qwe';
Memo1.Lines[1] := Memo1.Lines[1] + '--';
Memo1.Lines[2] := Memo1.Lines[2] + 'rty';
end;
end.
И тогда да, строка 'rty' не появляется.
|
|
zvygin1964 (статус: Посетитель), 26 декабря 2013, 22:28 [#9]:
dmistand: Попробовал повторить Ваш пример. Первая строка так и вывелась 'qwe'; на второй '--' и курсор. Третья строка не вывелась.
Не понял, как я могу это использовать.
Даю пояснение о моих переменных:
data:=StrToInt(dat);//для использования стандартной функции StrToInt , которая преобразует строку (номер знака таблицы ASCII приходящей из COM порта) в тип данных Integer;
dat: string;// десятичный номер знака таблицы ASCII (приходит из COM порта);
j: string;// бинарное (8 знаков) изображение номера знака в таблице ASCII (спасибо Доктору наук Min@y™ , я ему должен за это пиво!);
ASCIIsimvol: string; // знак ASCII полученный из COM порта .
Буду рад другим советам!
|
|
dmistand (статус: 1-ый класс), 26 декабря 2013, 23:24 [#10]:
zvygin1964 21урок Еремина: то, что написал, использовать не надо. Это пример, показывающий, почему у вас не выводятся данные в memo. Это объяснение причин. Очевидно, вы пытаетесь писать в строку по индексу data, которой нет (строк в memo меньше, чем этот индекс).
|
|
zvygin1964 (статус: Посетитель), 27 декабря 2013, 00:03 [#11]:
Все прекрасно выводится! Во всех трех многострочных редакторах Memo.
Но в последнем (Memo3) нужно символы выводить не по одному в каждой строке, а друг за другом до полного заполнения строки, и только затем переводить каретку.
А что? Строк в компоненте Memo меньше 255?
|
|
dmistand (статус: 1-ый класс), 27 декабря 2013, 00:19 [#12]:
zvygin1964 21урок Еремина: строк в мемо столько, сколько вы добавили в Memo.Lines. По умолчанию - две.
А если вам нужно выводить данные в одну строку то индексировать нужно соответственно так: Memo.Lines[0][StrToInt(dat)] := dat;
Или использовать функции замещения подстроки в строке.
Если я правильно понял цель...
|
|
zvygin1964 (статус: Посетитель), 27 декабря 2013, 21:07 [#13]:
dmistand: Да! Да! Вероятно, именно это мне и надо:"функции замещения подстроки в строке",- если она не полная и сдвиг всех строк наверх на одну строку, когда поле видимости заполнится полностью (так, чтобы были видны последние строки).
Подскажите, где это срисовать.
Google моих просьб не понимает.
|
|
dmistand (статус: 1-ый класс), 27 декабря 2013, 22:59 [#14]:
zvygin1964 21урок Еремина: пробуйте различные комбинации функций, начинающихся на Str* и String*, из SysUtils. Возможно, понадобится что-то из StrUtils.
|
|
zvygin1964 (статус: Посетитель), 28 декабря 2013, 12:13 [#15]:
dmistand: Memo3.Lines[0][StrToInt(dat)] := dat;
//не работает:[Error](147): Левая сторона не может быть назначена.
|
|
zvygin1964 (статус: Посетитель), 28 декабря 2013, 14:00 [#16]:
Посмотрел SysUtils и StrUtils, ничего подходящего не вижу. function StuffString немного похожа.
Может быть я компонент выбрал неудачно?
А существуют ли другие компоненты выводящие данные (многострочные), но не по строкам, а по знакам?
|
|
Drinkenz (статус: 1-ый класс), 28 декабря 2013, 14:28 [#17]:
Memo1.Text:='Предыдущий текст'+#13+#10+'Это уже новая строка'
Когда-то я вот так добавлял символы в мемо. Очень полезное свойство.
|
|
zvygin1964 (статус: Посетитель), 29 декабря 2013, 20:02 [#19]:
dmistand: .ЕХЕ вашего примера не запускался и просил найти ему rtl140.bpl файл. А при Ctrl+F9 проекта выдало [Fatal Error] form.pas(7): File not found: 'UCADControls.dcu' . Удалил эту UCADControls из uses, заработало по смешному. В случайном порядке заменяет цифры в двух строках. Это имеет отношение к моей проблеме?
|
|
zvygin1964 (статус: Посетитель), 29 декабря 2013, 20:24 [#20]:
Drinkenz:
Предложенный вами пример не добавляет символ в строку, а добавляет новую строку.
Мне как раз и нужно избавиться от этих +#13+#10 . А они в
Form1.Memo2.Lines.Add(j); // делаются автоматически, против моего желания. Я же не вывожу существующий текст. Он формируется во времени. Вот после каждого знака и добавляется +#13+#10. Мне надо их убрать.
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|