Вверх ↑
Этот топик читают: Гость
Ответов: 964
Рейтинг: 12
#1: 2007-05-15 10:43:18 ЛС | профиль | цитата
Ошибка происходит только в случае вызова некоторых функций.
В прежних сборках HiAsm-a такого не было.
Непонятно что именно является причиной этого глюка
сам парсер кажется не менялся с "ветхозаветных времен" ..


DLL
code_1412.txt

Вызов.

Add(Hub,12695605,112,131)
{
link(onEvent1,11936383:MathStr,[(163,137)(163,144)])
link(onEvent2,11936383:calc,[(163,144)(163,137)])
}
Add(Button,15154087,14,131)
{
Left=20
Top=35
Data=String(SIN(1))
link(onClick,12695605:doEvent1,[(82,137)(82,137)])
}
Add(Label,7730049,295,131)
{
Left=215
Top=40
}
Add(UseHiDLL,11936383,203,131)
{
DLLName="calc_new_DLL"
link(Reslt,7730049:doText,[(271,137)(271,137)])
}
Add(MathParse,981498,189,182)
{
Point(doMathStr)
Point(onError)
link(onResult,13306485:doText,[])
}
Add(Label,13306485,294,182)
{
Left=200
Top=80
}
Add(Button,12568681,14,182)
{
Left=20
Top=95
Data=String(SIN(1))
link(onClick,2254641:doEvent1,[])
}
Add(Hub,2254641,91,182)
{
link(onEvent1,981498:doMathStr,[(170,188)(170,195)])
link(onEvent2,981498:doCalc,[(170,195)(170,188)])
}
Зы
Причем глюк происходит не регулярно .

карма: 0

0
файлы: 1code_1412.txt [583B] [212]
Ответов: 2125
Рейтинг: 159
#2: 2007-05-15 18:33:42 ЛС | профиль | цитата
Ошибка, кстати, не внутри .DLL происходит, а уже в .EXE, при копировании строки. Вот и думайте теперь
карма: 1

0
Ответов: 9906
Рейтинг: 351
#3: 2007-05-15 20:36:32 ЛС | профиль | цитата
Да знаю я...
Типовой случай после введения MT
Добавка
  dt.ldata := nil;
в dll_Event спасает дело, но как-то криво все там

_hi_DllInit - это метод-конструктор, а где деструктор...

destructor THIUseHiDLL.Destroy;
begin
if FID > 0 then
FreeLibrary(FID);
inherited;
end;
- ну предположим... А если еще живы другие экземпляры этого класса

Не говоря уж про InitMan

Да и языково зависимый тип TData в интерфейсе - не радует
карма: 9

0
Ответов: 964
Рейтинг: 12
#4: 2007-05-16 03:47:38 ЛС | профиль | цитата
Бред какой-то ...

procedure dll_Event(var _Data:TData; Index:word; Param:pointer);
var dt:TData;
begin // xxx: ????

dt.ldata := nil; {? Как это чудо вообще может на что-то влиять }

dt.data_type := _data.data_type;
dt.idata := _data.idata;
dt.sdata := pchar(@_data.sdata[1]);
dt.rdata := _data.rdata;
THIUseHiDLL(Param)._Dll_Event(dt,Index);
end;

Однако влияет причем странно .
на выходе 0 и неважно что-на выходе ...
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2007-05-16 10:24:56 ЛС | профиль | цитата
AlexKir писал(а):
{? Как это чудо вообще может на что-то влиять }

Осваиваем МТ...
карма: 27
0
Ответов: 9906
Рейтинг: 351
#6: 2007-05-16 10:30:33 ЛС | профиль | цитата
Еще одно наблюдение: оказывается
dt.sdata := pchar(@_data.sdata[1]);[/code]и
dt.sdata := pchar(_data.sdata);[/code]
- не одно и то же :wink:
карма: 9

0
Ответов: 964
Рейтинг: 12
#7: 2007-05-16 11:02:18 ЛС | профиль | цитата
Нашел решение проблемы .
Var
dt:TData;

Помещаю в заголовок модуля .
Зы
И ни каких МТ ...
карма: 0

0
Ответов: 2125
Рейтинг: 159
#8: 2007-05-16 11:03:21 ЛС | профиль | цитата
Galkov писал(а):
Еще одно наблюдение: оказывается

Ага, во втором случае можешь быть уверен, что строка не уничтожится раньше, чем тебе надо
карма: 1

0
Ответов: 964
Рейтинг: 12
#9: 2007-05-16 11:33:57 ЛС | профиль | цитата
По-моему проблема в том что dt содеется в стеке .
А дальше что ? Вызов:
_Dll_Event( VAR _Data:TData; Index:word);

карма: 0

0
Ответов: 9906
Рейтинг: 351
#10: 2007-05-16 11:34:16 ЛС | профиль | цитата
AlexKir писал(а):
Нашел решение проблемы

Не фига ты не нашел. Проблему потому-что не знаешь
карма: 9

0
Ответов: 964
Рейтинг: 12
#11: 2007-05-16 11:45:48 ЛС | профиль | цитата
Мне важно чтобы программа работала не смотря все глюки , даже если я не влез в разные заковырки. ( мне как-то все равно нашел ли я частное решение или "смотрел в корень". )
Цель достигнута и тчк.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#12: 2007-05-16 11:58:44 ЛС | профиль | цитата
AlexKir писал(а):
Цель достигнута и т.ч.к.

Это твоя личная цель достигнута.
А Личная цель не достойна вообще публичного обсуждения.
Для твоей личной цели вообще пляска с бубном вокруг dt - неуместна
Ибо давно известно, что лучшее средство от перхоти - гильотина
procedure dll_Event(var _Data:TData; Index:word; Param:pointer);
begin
THIUseHiDLL(Param)._Dll_Event(_Data,Index);
end;
Никаких вопросов не будет, если клиент и сервер скомпилированы одной и той же кодовой версией HiAsm

Радиолюбители, блин
Притулят конденсатор, и - Цель достигнута и т.ч.к.
Ясно, разбираться почему через пару месяцев работы выгорают раскачивающие каскады - не им
карма: 9

0
Ответов: 964
Рейтинг: 12
#13: 2007-05-18 11:45:47 ЛС | профиль | цитата
Я между прочим обнаружил ошибку и предложил совместными усилиями ее исправить .
Это , я надеюсь, тоже вклад в развитие проекта.
Если ее исправили более качественно чем предложил я то это как раз то на что я надеялся
создавая тему..
Зы
Извиняюсь, но меня всегда интересует само дело а не обстоятельства "около дела".
Для разговоров о «цветах и звездах» существуют другие форумы . Да, не плохо
когда поддерживается общий фон общения но я надеюсь фон не вытеснит суть дела .

С уважением и верой в проект , Алексей.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#14: 2007-05-18 12:21:46 ЛС | профиль | цитата
AlexKir, давай так: мухи отдельно, котлеты отдельно.

1) Первый пост этого топика - сообщение о баге.
Спасибо
Чего-то делать с DLL-ками обязательно будем, там и еще есть проблемы.
И они связаны.

2) Вот эти посты (как бы тоже между прочим):
http://hiasm.com/xf/topic.php?p=55949#P55949
http://hiasm.com/xf/topic.php?p=55953#P55953
- бред сивой кобылы. Это даже не мое личное мнение, это - медицинский факт
И не самое плохое, что любой, читающий этот топик, будет знать, что это НЕ ЕСТЬ фиксинг.
А уж аргументация к тому, что это фиксинг:
http://hiasm.com/xf/topic.php?p=55955#P55955
просто свидетельствует о не понимании базовых истин
Тут я, конечно, не сдержался, открыл уже ВСЮ правду.
Сложно профессионалу (дело даже не в программировании - ВЫШЕ) смотреть, как грязными ногами по святому.

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

И цель моих постов бесконечно проста (из возраста для словесных разборок я вышел лет эдак 30 назад, мне это совершенно не интересно) - поставить штамп "не правда" в нужных местах, для тех, кто вдруг прочтет это потом.
И все
карма: 9

0
Ответов: 964
Рейтинг: 12
#15: 2007-05-19 03:53:10 ЛС | профиль | цитата
Давайте с разу договоримося профессионалов в проекте хайасм пока что нет . Я то же не раз находил решения которые мне казались самоочевидными .
Ну и что ?
ЗЫ
Сейчас проект хайасм для меня пожаллуй лучшее средство всотновить здавый смысл и навыки в прогрмировании - за что я очень благодарен всем активным участникам этого проекта.
Я надеюсь что довольно скоро проект дстигнет новых высот , не так уж много сейчас ему подобных ...
карма: 0

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