Вверх ↑
Этот топик читают: Гость
Ответов: 9
Рейтинг: 0
#1: 2018-10-31 22:33:13 ЛС | профиль | цитата
Доброго времени суток.
Я сейчас изучаю HiAsm в универе и озадачился на предпоследней лабораторной работе. На данный момент в лабораторной работе изучается элемент InlineCode и в ней же был предоставлен текст проекта, но он оказался не рабочим и я не могу понять, в чём его неработоспособность заключается.
Как я понял, дело в коде Delphi (там где в проекте начинается строка "Code=#15:unit...") и компилятор ругается на символ | в коде, но почему он ругается и на какой именно, я не имею понятия. Я перепробовал всё, начиная от полного стирания кода и добавления его по кусочку, но всё без толку. Ошибка не пропадала, а наоборот, порой появлялось их еще больше.

Сам текст проекта ↓
Add(MainForm,2953706,21,105)
{
Width=344
Height=116
}
Add(InlineCode,5600559,343,154)
{
WorkPoints=#7:doWork1|
EventPoints=#7:onEvent|0:|
VarPoints=#3:Var|
DataPoints=#7:MyValue|0:|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: s:string;|9: public|23: onEvent:THI_Event;| 23: MyValue:THI_Event;|5: |51: procedure doWork1(var Data:TData; index:word);|50: procedure Result(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|14: s0 = '### ';|14: s2 = ' ###';|0:|58:procedure THiAsmClass.doWork1(var Data:TData; index:word);|3:var| 16: s1, s3:string;|5:begin|33: s1 := ReadString(Data,MyValue);|23: s3 := toString(Data);|25: s := s0 + s1 + s2 + s3;|0:|26: _hi_OnEvent(onEvent, s);|4:end;|0:|57:procedure THiAsmClass.Result(var Data:TData; index:word);|5:begin|20: dtString(Data, s);|4:end;|0:|4:end.|
link(onEvent,16334128:doText,[])
link(MyValue,7701069:Text,[])
}
Add(Button,2115245,154,154)
{
Left=5
Top=5
Width=65
Caption="Open"
Data=Real(0)
link(onClick,4781423:doData,[])
}
Add(Edit,9663791,253,77)
{
Left=75
Top=5
Width=250
Text="Edit1"
}
Add(DoData,4781423,252,154)
{
link(onEventData,5600559:doWork1,[])
link(Data,9663791:Text,[(258,131)(259,131)])
}
Add(Label,16334128,441,154)
{
Left=75
Top=55
Width=40
Height=17
Caption="0"
}
Add(Edit,7701069,343,77)
{
Left=75
Top=30
Width=250
Text="Edit2"
}
Да, уточню сразу, что в Delphi я полный ноль. Больше специализируюсь на html/css/C#

Редактировалось 4 раз(а), последний 2018-11-03 05:16:00
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 16884
Рейтинг: 1239
#2: 2018-10-31 22:40:12 ЛС | профиль | цитата
Geramtur писал(а):
Сам текст проекта ↓
Add(InlineCode,5600559,343,154)
{
WorkPoints=#7:doWork1|
EventPoints=#7nEvent|0
VarPoints=#3:Var|
DataPoints=#7:MyValue|0
Code=#15:unit HiAsmUnit;|09:interface|021:uses kol,Share,Debug;|04:type|28: THiAsmClass = class(TDebug)|10: private|14: s:string;|9: public|23: onEvent:THI_Event;| 23: MyValue:THI_Event;|5: |51: procedure doWork1(var Data:TData; index:word);|50: procedure Result(var Data:TData; index:word);|5: end;|014:implementation|05:const|14: s0 = '### ';|14: s2 = ' ###';|058:procedure THiAsmClass.doWork1(var Data:TData; index:word);|3:var| 16: s1, s3:string;|5:begin|33: s1 := ReadString(Data,MyValue);|23: s3 := toString(Data);|25: s := s0 + s1 + s2 + s3;|026: _hi_OnEvent(onEvent, s);|4:end;|057:procedure THiAsmClass.Result(var Data:TData; index:word);|5:begin|20: dtString(Data, s);|4:end;|04:end.|
link(onEvent,16334128:doText,[])
link(MyValue,7701069:Text,[])
}
Перезалей.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9
Рейтинг: 0
#3: 2018-10-31 22:42:32 ЛС | профиль | цитата
Tad писал(а):
Перезалей.

Странно, что у вас символы в смайлики переделались, у меня нормально отображается. Вот еще раз:

Add(MainForm,2953706,21,105)
{
Width=344
Height=116
}
Add(InlineCode,5600559,343,154)
{
WorkPoints=#7:doWork1|
EventPoints=#7:onEvent|0:|
VarPoints=#3:Var|
DataPoints=#7:MyValue|0:|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: s:string;|9: public|23: onEvent:THI_Event;| 23: MyValue:THI_Event;|5: |51: procedure doWork1(var Data:TData; index:word);|50: procedure Result(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|14: s0 = '### ';|14: s2 = ' ###';|0:|58:procedure THiAsmClass.doWork1(var Data:TData; index:word);|3:var| 16: s1, s3:string;|5:begin|33: s1 := ReadString(Data,MyValue);|23: s3 := toString(Data);|25: s := s0 + s1 + s2 + s3;|0:|26: _hi_OnEvent(onEvent, s);|4:end;|0:|57:procedure THiAsmClass.Result(var Data:TData; index:word);|5:begin|20: dtString(Data, s);|4:end;|0:|4:end.|
link(onEvent,16334128:doText,[])
link(MyValue,7701069:Text,[])
}
Add(Button,2115245,154,154)
{
Left=5
Top=5
Width=65
Caption="Open"
Data=Real(0)
link(onClick,4781423:doData,[])
}
Add(Edit,9663791,253,77)
{
Left=75
Top=5
Width=250
Text="Edit1"
}
Add(DoData,4781423,252,154)
{
link(onEventData,5600559:doWork1,[])
link(Data,9663791:Text,[(258,131)(259,131)])
}
Add(Label,16334128,441,154)
{
Left=75
Top=55
Width=40
Height=17
Caption="0"
}
Add(Edit,7701069,343,77)
{
Left=75
Top=30
Width=250
Text="Edit2"
}
карма: 0

0
Ответов: 8888
Рейтинг: 823
#4: 2018-10-31 23:38:54 ЛС | профиль | цитата
Geramtur, зачем вы вообще этот символ "|" ставите Вот код от коллеги Tad-а:


Add(InlineCode,13474183,140,42)
{
WorkPoints=#6:doTest|
EventPoints=#5:onRes|
VarPoints=#
DataPoints=#
Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|4: |24: onRes : THI_Event;|51: PROCEDURE doTest(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doTest;|16:var s,ss:string;|16: i,j:integer;|5:BEGIN|9: ss:='';|21: s:=toString(_Data);|15: j:=Length(s);|19: for i:=1 to j do|9: begin|40: if s[i] in ['0'..'9',',','.'] then|12: begin|35: if s[i]=',' then ss:=ss+'.'|24: else ss:=ss+s[i];|10: end;|10: end; |24: _hi_onEvent(onRes,ss);|4:END;|0:|0:|4:end.|
link(onRes,2951335:doText2,[(179,48)(179,34)(123,34)(123,104)])
}
Add(Edit,2951335,140,91)
{
Left=115
Top=10
Width=120
link(onChange,13474183:doTest,[(179,97)(179,83)(130,83)(130,48)])
}
Add(Label,6351598,84,91)
{
Left=25
Top=10
Width=83
Height=17
Caption="Только цифры"
}

карма: 19

0
Ответов: 9
Рейтинг: 0
#5: 2018-11-01 00:00:14 ЛС | профиль | цитата
Леонид писал(а):
Geramtur, зачем вы вообще этот символ "|" ставите

Это не я, делал всё как в лабораторной было написано, вот вам даже фото-подтверждение
Спасибо, сейчас буду пробовать

--- Добавлено в 2018-11-01 00:17:28

Леонид писал(а):
Вот код от коллеги Tad-а:

Так, попробовал заменить InLine, Edit и Label в своем тексте проекта на ваши предоставленные.
Хорошая новость, что программа стала запускаться без ошибок, но она точно рабочая? Ввожу цифры в поля, нажимаю кнопку и ничего не происходит. Попробовал переделать схему под ту, которая у меня была, лучше не стало...

Редактировалось 2 раз(а), последний 2018-11-03 05:16:24
карма: 0

0
Ответов: 9906
Рейтинг: 351
#6: 2018-11-01 00:26:33 ЛС | профиль | цитата
Леонид писал(а):
Вот код от коллеги Tad

Мда....
За такое количество лет, проведенных на форуме.... Такие ребусы надо махом разгадывать:
Add(MainForm,15373319,525,140)
{
Width=344
Height=116
}
Add(InlineCode,5600559,714,217)
{
WorkPoints=#7:doWork1|
EventPoints=#7:onEvent|0:|
VarPoints=#3:Var|
DataPoints=#7:MyValue|0:|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: s:string;|9: public|23: onEvent:THI_Event;|23: MyValue:THI_Event;|0:|51: procedure doWork1(var Data:TData; index:word);|50: procedure Result(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|14: s0 = '### ';|14: s2 = ' ###';|0:|58:procedure THiAsmClass.doWork1(var Data:TData; index:word);|3:var|16: s1, s3:string;|5:begin|33: s1 := ReadString(Data,MyValue);|23: s3 := toString(Data);|25: s := s0 + s1 + s2 + s3;|0:|26: _hi_OnEvent(onEvent, s);|4:end;|0:|57:procedure THiAsmClass.Result(var Data:TData; index:word);|5:begin|20: dtString(Data, s);|4:end;|0:|4:end.|0:|
link(onEvent,16334128:doText,[])
link(MyValue,7701069:Text,[])
}
Add(Button,2115245,525,217)
{
Left=5
Top=5
Width=65
Caption="Open"
Data=Real(0)
link(onClick,4781423:doData,[])
}
Add(Edit,9663791,623,140)
{
Left=75
Top=5
Width=250
Text="Edit1"
}
Add(DoData,4781423,623,217)
{
link(onEventData,5600559:doWork1,[])
link(Data,9663791:Text,[])
}
Add(Label,16334128,812,217)
{
Left=75
Top=55
Width=40
Height=17
Caption="0"
}
Add(Edit,7701069,714,140)
{
Left=75
Top=30
Width=250
Text="Edit2"
}
Просто какая-то, не побоюсь этого слова -- лошадь, позаменяла все пробелы на одиночные

Редактировалось 1 раз(а), последний 2018-11-01 00:26:59
карма: 9

0
Ответов: 9
Рейтинг: 0
#7: 2018-11-01 00:46:13 ЛС | профиль | цитата
Galkov писал(а):
Леонид писал(а):
Вот код от коллеги Tad-а

Мда....
За такое количество лет, проведенных на форуме.... Такие ребусы надо махом разгадывать:

Просто какая-то, не побоюсь этого слова -- лошадь, позаменяла все пробелы на одиночные


Заработало! Одиночные пробелы так и были в методичке по лабораторке, видимо к составителю задания нужно претензии предъявлять У меня еще были на них подозрения, но я не стал их перебирать, уж больно бы много для меня это времени заняло, да и не факт для меня был, что именно из-за них не работало.
От души благодарю, Родина вас не забудет

Редактировалось 2 раз(а), последний 2018-11-01 00:47:15
карма: 0

0
Ответов: 9
Рейтинг: 0
#8: 2018-11-03 05:32:44 ЛС | профиль | цитата
Народ, еще одна последняя просьба, возможно я наглею, но вся надежда только на вас
Всё по этой же лабораторной с этим же заданием, там теперь самое последнее задание звучит так:
Измените пример таким образом, чтобы в элементе «Вставка кода» было две точки методов, две точки событий и две точки ввода данных. Обеспечьте их программным кодом и покажите примеры их работы.
Т.е. сейчас там одна точка метода, события и данных. Точки я добавил в проект через конструктор без проблем, но вот каким их обеспечить кодом, чтобы они заработали, я ума не приложу. Я выше писал, что я не силён в Delphi и после того, как пользователь Galkov предоставил код, я со вчерашнего дня колдую над ним с последним заданием, но у меня ничего не получается. Можете ли вы изменить код так, чтобы в моей программе у элемента "InlineCode" появились доп. рабочая точка методов, событий и данных? И чтобы хоть самый простяцкий код к ним добавьте, например чтобы была кнопка и окошко по нажатию выводилось, потому что у меня такой трюк не через конструктор, а через чистый код Delphi не вышло сделать.

Вот еще раз текст проекта, с которым выше мне помог Galkov:

Add(MainForm,15373319,525,140)
{
Width=344
Height=116
}
Add(InlineCode,5600559,714,217)
{
WorkPoints=#7:doWork1|
EventPoints=#7:onEvent|0:|
VarPoints=#3:Var|
DataPoints=#7:MyValue|0:|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: s:string;|9: public|23: onEvent:THI_Event;|23: MyValue:THI_Event;|0:|51: procedure doWork1(var Data:TData; index:word);|50: procedure Result(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|14: s0 = '### ';|14: s2 = ' ###';|0:|58:procedure THiAsmClass.doWork1(var Data:TData; index:word);|3:var|16: s1, s3:string;|5:begin|33: s1 := ReadString(Data,MyValue);|23: s3 := toString(Data);|25: s := s0 + s1 + s2 + s3;|0:|26: _hi_OnEvent(onEvent, s);|4:end;|0:|57:procedure THiAsmClass.Result(var Data:TData; index:word);|5:begin|20: dtString(Data, s);|4:end;|0:|4:end.|0:|
link(onEvent,16334128:doText,[])
link(MyValue,7701069:Text,[])
}
Add(Button,2115245,525,217)
{
Left=5
Top=5
Width=65
Caption="Open"
Data=Real(0)
link(onClick,4781423:doData,[])
}
Add(Edit,9663791,623,140)
{
Left=75
Top=5
Width=250
Text="Edit1"
}
Add(DoData,4781423,623,217)
{
link(onEventData,5600559:doWork1,[])
link(Data,9663791:Text,[])
}
Add(Label,16334128,812,217)
{
Left=75
Top=55
Width=40
Height=17
Caption="0"
}
Add(Edit,7701069,714,140)
{
Left=75
Top=30
Width=250
Text="Edit2"
}

А вот код Delphi, который находится в элементе InlineCode:

unit HiAsmUnit;

interface

uses kol,Share,Debug;

type
THiAsmClass = class(TDebug)
private
s:string;
public
onEvent:THI_Event;
MyValue:THI_Event;

procedure doWork1(var Data:TData; index:word);
procedure Result(var Data:TData; index:word);
end;

implementation

const
s0 = '### ';
s2 = ' ###';

procedure THiAsmClass.doWork1(var Data:TData; index:word);
var
s1, s3:string;
begin
s1 := ReadString(Data,MyValue);
s3 := toString(Data);
s := s0 + s1 + s2 + s3;

_hi_OnEvent(onEvent, s);
end;

procedure THiAsmClass.Result(var Data:TData; index:word);
begin
dtString(Data, s);
end;

end.

Вот еще скриншот схемы проекта, на всякий случай
http://immage.biz/image/S0Yx
карма: 0

0
Ответов: 8888
Рейтинг: 823
#9: 2018-11-03 10:09:38 ЛС | профиль | цитата
Geramtur, а что, NiAsm в школе начали "проходить"?
Выделить InlineCode, в панель "Свойства" выбрать соответствующее поле и в появившемся Редакторе текста дописать нужную точку. Не забывая добавить в код для новой точки необходимые описания.
ДобавлениеТочек.jpg
карма: 19

0
Ответов: 9
Рейтинг: 0
#10: 2018-11-03 16:12:24 ЛС | профиль | цитата
Леонид писал(а):
Geramtur, а что, NiAsm в школе начали "проходить"?

Не, в универе, 4 курс
Леонид писал(а):
Выделить InlineCode, в панель "Свойства" выбрать соответствующее поле и в появившемся Редакторе текста дописать нужную точку. Не забывая добавить в код для новой точки необходимые описания.
ДобавлениеТочек.jpg

Нее, как просто точки добавить это я знаю, но вот проблема в том, что их нужно снабдить кодом каким-нибудь и вот тут я уже бессилен. Я Delphi до этого не изучал поэтому вообще не знаю, какой код написать и как его разместить там можно. Нужно хоть какой-нибудь, хоть окошко по нажатию кнопки, но чтобы работало с новыми точками и предыдущим кодом в паре.
карма: 0

0
Ответов: 8888
Рейтинг: 823
#11: 2018-11-03 17:05:19 ЛС | профиль | цитата
Geramtur, так и правильно:
Леонид писал(а):
Не забывая добавить в код для новой точки необходимые описания.

Ставьте на поле элемент, осуществляющий ~подходящую функцию, нажимайте CTRL+F, откроется его КОД, изучайте и копируйте что подойдёт.
Почти все, кто здесь тусуется именно так Delphi (Паскаль) и изучали
Вот и помощник: http://shiva16.narod.ru/Index.htm
карма: 19

0
Ответов: 9
Рейтинг: 0
#12: 2018-11-03 17:31:31 ЛС | профиль | цитата
Леонид писал(а):

Ставьте на поле элемент, осуществляющий ~подходящую функцию, нажимайте CTRL+F, откроется его КОД, изучайте и копируйте что подойдёт.
Почти все, кто здесь тусуется именно так Delphi (Паскаль) и изучали
Вот и помощник: http://shiva16.narod.ru/Index.htm

Открыл искомый код каждого подсоединенного элемента ко вторым точкам, покопался, попробовал скопировать что-то в элемент InlineCode, но лучше не стало. Изучать целый язык ради одной лабораторной это сильно Мне бы свои языки еще до конца освоить)
карма: 0

0
Ответов: 8888
Рейтинг: 823
#13: 2018-11-03 23:27:51 ЛС | профиль | цитата
Geramtur, так если не надо "изучать целый язык ради одной лабораторной", то сам HiAsm в вашем распоряжении, любую лабораторную работу мышкой можно сделать (странно, что вы в InlineCode упёрлись, для обработки текста и так всё есть), но ведь и его изучать надо, да ещё и логически мыслить :-)
карма: 19

0
Ответов: 9
Рейтинг: 0
#14: 2018-11-04 04:21:18 ЛС | профиль | цитата
Леонид писал(а):
Geramtur, так если не надо "изучать целый язык ради одной лабораторной", то сам HiAsm в вашем распоряжении, любую лабораторную работу мышкой можно сделать (странно, что вы в InlineCode упёрлись, для обработки текста и так всё есть), но ведь и его изучать надо, да ещё и логически мыслить :-)

Вы наверное задание не совсем поняли...
Измените пример таким образом, чтобы в элементе «Вставка кода» было две точки методов, две точки событий и две точки ввода данных. Обеспечьте их программным кодом и покажите примеры их работы.
До этого 7 лабораторок HiAsm я и правду делал в основном мышкой, но тут именно просят набрать код в задании, его одной мышкой не сделаешь И нужно написать код именно в элемент "Вставка кода" aka InlineCode, это в задании так прописано, не я придумал и решил упереться
Изучать Delphi надо было б, если б я планировал в будущем серьёзно работать с этим языком или с HiAsm, однако помимо этого мы в универе еще 5 языков изучали и зацепили меня из них только два, остальные же я проходил вскользь только чтобы сделать лабораторные задания, думаю так будет и в случае с Delphi) Но сам HiAsm мне понравился относительной простотой, может однажды я возьмусь за него в будущем вместе с Delphi, но не сейчас, тем более, что еще диплом на носу

В общем, помощь с кодом всё еще актуальна.

Редактировалось 3 раз(а), последний 2018-11-04 04:25:19
карма: 0

0
Ответов: 8888
Рейтинг: 823
#15: 2018-11-04 10:44:21 ЛС | профиль | цитата
Geramtur,
Так пойдёт?


Add(MainForm,15373319,343,77)
{
Width=344
Height=155
}
Add(InlineCode,5600559,532,154)
{
WorkPoints=#7:doWork1|6:Result|13:doOnlyNumbers|0:|
EventPoints=#7:onEvent|12:onOnlyNumber|
VarPoints=#3:Var|
DataPoints=#7:MyValue|8:OnlyNumb|0:|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: s:string;|9: public|23: onEvent:THI_Event;|23: MyValue:THI_Event;|24: OnlyNumb:THI_Event;|28: onOnlyNumber:THI_Event;|0:|51: procedure doWork1(var Data:TData; index:word);|50: procedure Result(var Data:TData; index:word);|57: procedure doOnlyNumbers(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|14: s0 = '### ';|14: s2 = ' ###';|0:|58:procedure THiAsmClass.doWork1(var Data:TData; index:word);|3:var|16: s1, s3:string;|5:begin|33: s1 := ReadString(Data,MyValue);|23: s3 := toString(Data);|25: s := s0 + s1 + s2 + s3;|0:|26: _hi_OnEvent(onEvent, s);|4:end;|0:|57:procedure THiAsmClass.Result(var Data:TData; index:word);|5:begin|20: dtString(Data, s);|4:end;|0:|36:procedure THiAsmClass.doOnlyNumbers;|16:var s,ss:string;|16: i,j:integer;|5:begin|9: ss:='';|34: s:=ReadString(Data,OnlyNumb,'');|15: j:=Length(s);|19: for i:=1 to j do|9: begin|40: if s[i] in ['0'..'9',',','.'] then|12: begin|35: if s[i]=',' then ss:=ss+'.'|24: else ss:=ss+s[i];|10: end;|10: end; |31: _hi_onEvent(onOnlyNumber,ss);|4:end;|0:|4:end.|
link(onEvent,16334128:doText,[])
link(MyValue,7701069:Text,[])
link(onOnlyNumber,12895733:doText2,[(571,167)(571,90)])
link(OnlyNumb,12895733:Text,[(545,117)(601,117)])
}
Add(Button,2115245,343,154)
{
Left=5
Top=5
Width=65
Caption="Open"
Data=Real(0)
link(onClick,4781423:doData,[])
}
Add(Edit,9663791,441,77)
{
Left=75
Top=5
Width=250
Text="Edit1"
}
Add(DoData,4781423,441,154)
{
link(onEventData,5600559:doWork1,[])
link(Data,9663791:Text,[])
}
Add(Label,16334128,630,154)
{
Left=75
Top=55
Width=40
Height=17
Caption="0"
}
Add(Edit,7701069,532,77)
{
Left=75
Top=30
Width=250
Text="Edit2"
}
Add(Edit,12895733,595,77)
{
Left=70
Top=85
Width=245
link(onChange,5600559:doOnlyNumbers,[(634,83)(634,69)(522,69)(522,174)])
}

карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)