![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Петрович |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 15 Всего: 55 |
Дафай. ![]()
Конечно не столь важно, если не столь важен результат ![]()
Ну тогда, в ListBox1.Items.Add('Stroka ' + inttostr(j)+' = '+inttostr(dword(buf))); последний inttostr "хапнет" лишних три байта. Хороше если они там будут, а то и AV схлопотать не долго. А в ListBox1.Items.Add('Stroka ' + inttostr(j)+' = '+inttohex(pbyte(p+8)^,1)+' '+strpas(pc));, как ты думаешь, куда ссылается pbyte(p+8)? Какому процессу принадлежит память на которую ты таким образом получаешь указатель? И что будет когда произойет обращение к pbyte(p+8)^?
Ну тогда, это применимо только к тому приложению, которое участок кода которого был дизассемблирован. Причем, только той же самой его версии. Поскольку от версии к версии данное смещение может легко измениться.
А вот кстати и пример ![]() Какая версия Delphi у тебя? Могу тебя поздравить ![]() Вот текст TListBoxStrings.Get из Delphi 6:
Вот именно так и должно быть, поскольку размер строки, которая будет возвращена SendMessage(..., LB_GETTEXT,...), заранее неизвестен, а соответственно, заранее и неизвестен размер необходимого буфера. Кстати, а у тебя может сломаться уже на строках длинной более 254 символа (pc: array [byte] of char).
Ну... Трудно предположить что при выпуске релиза программист будет скорпулезно проходиться по всему тексту и расставлять обработку ошибок. По крайней мере я такого не видел. Лично я, сразу-же прописываю обработку ошибок. Особенно, учитывая то, что это часто влияет на построение текста программы. Да и при отладке, частенько можно получить ошибку там где ее не получаешь в уже отлаженной программе. В этом случае гораздо приятнее узнать о ней сразу, а не выискивать "почему программа ведет себя не правильно?". -------------------- Все знать невозможно, но хочется |
||||||||||||||
|
|||||||||||||||
Romikgy |
|
||||||||||||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Аналогично ![]()
К словам дафай не будем цеплятся , а !?
dword(buf) - это не захват 4 байт, это преобразование захваченного байта в переменную типа дворд , так что ничего я хватать лишнего не буду !!!
Здеся признаю , лажанулся ![]()
Да у меня стоит третья дельфя, есть разница сначала берется длинна текста ![]() а вот это что:
И последнее
Я на 100 процентов уверен , что длинны у меня не будут превышать даже 50 символов, так что все окей ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||||||||||||
|
|||||||||||||||
Петрович |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 15 Всего: 55 |
Дык не к словам. У тебя так в программе написано.
Согласен. Я что-то стормозил, здесь же не указатель преобразовывается, а непосредственно переменная.
Просто существуют ListBox'ы для которых текст вообще не хранится. Он прорисовывается программой по событию.
Хозяин барин. Я лично в своей жизни никогда ни в чем на все 100% не уверен ![]() Ну и в конце концов, так я понял у тебя теперь все нормально работает? -------------------- Все знать невозможно, но хочется |
||||||||
|
|||||||||
Romikgy |
|
||||||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Дык это только переменная ![]()
Оригинально , не встречал .
Угу
На н-ное кол-во процентов, с Checklistbox я разобрался, с TreeView разбираюсь (никак не пойму как программно к детю обратится/выделить , апи или мессагой?) с DBGrid вооще мрак, здеся подсказали ридонли параметр подравить и можно в принципе , через энтер или двойной щелчек мыши , к данным добратся , но как подправить? еслиб тоже через апи или мессаги, былоб гуд ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||||||
|
|||||||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 15 Всего: 55 |
Не, ну если тебя интересует конкретное приложение, с конкретными компонентами. И если тебе известна версия Delphi которой оно было создано, то можно сделать наверное проще. -------------------- Все знать невозможно, но хочется |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Конкретное приложение мне известно, а вот версия дельфи ... ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
alexkras |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 10.11.2009 Репутация: нет Всего: нет |
Обнаружил одну особенность. После вызова CreateThread в теле функции-задачи пытаюсь оператором cin ввести целое число(scanf тоже не помогает), но у меня первая цифра "пропадает", т.е. если я ввожу 430, то в переменную записывается 30, 12 - 2, 1999 - 999 и т.д. С чем это связано? Я решил эту проблему, передавая в качестве четвертого параметра CreateThread это самое число(приведенное к типу LPVOID, естественно), которое ввожу с консоли еще до вызова CreateThread, т.е. в функции main. Но все-таки хочу разобраться с этой особенностью.
Предлагаю код(тот, что проблемный):
Все в обычной консоли Win32. Может, у кого-то по-другому? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
скорее всего стандартным потоком ввода-вывода владеет основной поток, поэтому он первый символ съедает,
имхо не красиво работать с такими потоками из программных потоков, вся работа должна оставаться в основном потоке , а обработка данных , там где хочешь ..... PS сорри за тавтологию -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |