Вверх ↑
Этот топик читают: Гость
Ответов: 3889
Рейтинг: 362
#61: 2011-11-18 11:56:40 ЛС | профиль | цитата
nesco писал(а):
что скажешь, Indigo

CriDos писал(а):
мне давали даже уже скомпилированный exe с этим элементов, та же ошибка)

Та же история, дело явно зависит от операционной системы и того, что на ней стоит и работает. Чужие EXE у меня выдают ту же ошибку, а те, что созданы на проблемных ОС, прекрасно запускаются на одной чистой.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#62: 2011-11-18 12:01:44 ЛС | профиль | цитата
Меня волнует, почему в оригинале не доходит до создания контрола, а при некоторых правках кода все начинает работать
карма: 22

0
Ответов: 1841
Рейтинг: 369
#63: 2011-11-18 12:05:35 ЛС | профиль | цитата
nesco писал(а):
но канал обмена очень дохлый, тяжело так работать

днём 256 кб
с 00:00 - 5 мб.

кстати, на удалённой машине поставил ремарку на
CriDos писал(а):
SetDriveName(Drv);

но ошибка всё равно была, потом вспомнил что обновил элемент до ревизии 302.
проверил на прошлой ревизии элемента и ошибка пропала после комента этой строки.

только что поставил офф сборку HiAsm, поставил ремарку, ошибки нету, убрал - ошибка
карма: 1
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#64: 2011-11-18 12:12:53 ЛС | профиль | цитата
CriDos писал(а):
но ошибка всё равно была, потом вспомнил что обновил элемент до ревизии 302.
проверил на прошлой ревизии элемента и ошибка пропала после комента этой строки

Ага, значит на новой ошибка есть всегда. Это уже очень интересно. Значит проблема находится в списке ссылок на контролы -- DriveBoxs.
Попробуй в новой версии сделать так, должны сработать оба дебага



initialization
_debug;
DriveBoxs := NewList;
_debug;
карма: 22

0
Ответов: 1841
Рейтинг: 369
#65: 2011-11-18 14:24:14 ЛС | профиль | цитата
nesco писал(а):
Попробуй в новой версии сделать так, должны сработать оба дебага

1 msg: не удаётся найти указанный файл
2 msg: операция успешно завершена
3 msg: runtime error
------------ Дoбавленo в 14.24:
system32*.dll не причём.
попробую ещё с winsxs поиграться, а потом с реестром...
карма: 1
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#66: 2011-11-18 14:30:17 ЛС | профиль | цитата
CriDos писал(а):
3 msg: runtime error

Говорит о том, что крах происходит где-то в Win.pas до метода Init в основном компоненте, вот почему я просил тебя добиться результата с методом конструктора Create, там надо будет проверить до inherited и после него
карма: 22

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#67: 2011-11-20 11:54:55 ЛС | профиль | цитата
Баг найден и устранен. Обновление на SVN
------------ Дoбавленo в 11.54:
1nd1g0, все оказалось гораздо банальнее. Вот почему я не шибко жалую системные отладчики в таком деле, как поиск багов в exe, на который имеется написанный код. Зачастую именном в этом коде и кроется баг
карма: 22

2
Голосовали:1nd1g0, CriDos
Ответов: 3889
Рейтинг: 362
#68: 2011-11-20 12:00:11 ЛС | профиль | цитата
nesco писал(а):
все оказалось гораздо банальнее

Интересно узнать подробности.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#69: 2011-11-20 12:06:57 ЛС | профиль | цитата
1nd1g0 писал(а):
Интересно узнать подробности

Ошибка крылась в функции DisplayName, вот в этом месте


  if Pos('(', Result) <> 0 then
SetLength(Result, Pos('(', Result) - 2);

Дело в это, что по непонятной причине, на разных системах, по-разному представлена строка отображения устройства.
У CriDos-а она имеет структуру --


(A:) Дисковод
а у меня


Дисковод (A:)
Естественно, что у CriDos-а, вышепреведенная часть формулы выдаст ошибку, тк длина строки станет отрицательной
карма: 22

1
Голосовали:ser_davkin
Ответов: 3889
Рейтинг: 362
#70: 2011-11-20 12:22:39 ЛС | профиль | цитата
nesco писал(а):
по непонятной причине, на разных системах, по-разному представлена строка отображения устройства

Тогда, полагаю, причина понятна. У нас добавлена опция системы, меняющая расположение буквы диска: либо перед, либо после метки.
------------ Дoбавленo в 12.22:
Тогда тут самое целесообразное - удалить из строки "(?:)" и сделать тримминг. В надежде, что кто-то умный не назвал диск (Ы:)
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#71: 2011-11-20 12:26:00 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:46:09
карма: 0

0
Ответов: 3889
Рейтинг: 362
#72: 2011-11-20 12:31:47 ЛС | профиль | цитата
[offtop]Очередное подтверждение порочности "программирования на жёстких предположениях". Кто-то надеялся на совпадение индексов курсоров с его системой, кто-то - на совпадение положения меток и т.п.[/offtop]
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#73: 2011-11-20 15:04:05 ЛС | профиль | цитата
1nd1g0 писал(а):
Тогда тут самое целесообразное - удалить из строки "(?" и сделать тримминг. В надежде, что кто-то умный не назвал диск (Ы

А ты попробуй его так назвать. К тому же, стоит ли с эти заморачиваться
г. ость писал(а):
операционная система Windows XP позволяет определить, в каком месте названия будет находиться буква логического диска

Ага, мы еще в реестр не лазили. А вот у CriDos-а кто-то поменял значение по-умолчанию
------------ Дoбавленo в 15.04:
Добавил определение концевого ":)"
карма: 22

0
Ответов: 1841
Рейтинг: 369
#74: 2011-11-21 08:33:34 ЛС | профиль | цитата
г. ость писал(а):
■ 1 — установлено по умолчанию, что как раз и соответствует отображению значка диска справа от его метки;

■ 2 — вообще скрывает букву диска из его названия;

■ 4 — буква диска будет отображаться слева от его метки, то есть название, которое раньше отображалось как, например, System (С, после присвоения данному параметру значения 4 и последующей перезагрузки компьютера будет отображаться как (С System.

догадывался что дело в одном из параметров в реестре, но проверить так и не удалось т.к. был занят, находил время только для помощи nesco в поиске рантайма

p.s. ShowDriveLettersFirst=4 кстати стоит
карма: 1
1
Голосовали:nesco
74
Сообщение
...
Прикрепленные файлы
(файлы не залиты)