![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Offset на строковую константу [D7, ME]
Ллирик © (2010-10-22 00:57:00)У меня не хочет компилироваться такой код:
const
Keymouse = 'Keymouse.sys';
............
asm
.......
push offset Keymouse
..........
end;
Будьте добры, подскажите, что мне сделать.
Ллирик (2010-10-24 16:45:00) [61]
> Германн © (24.10.10 04:01) [34]
>
>
> > пишу их на асме, и представьте себе они работают
>
> Готов поверить, что они работают ибо заготовок для написания
> несложных драйверов полно.
>
Если фильтр клавиатуры, написанный с чистого листа, считается простеньким, то да, я пишу не сложные драйвера)
> Anatoly Podgoretsky © (24.10.10 09:44) [35]
>
> > я цитирую учебник Никиты Кулькина "Основы программирования
> > в Delphi 2007"
>
> Врешь ты все и Кулькина зря опускаешь.
Правда, вру) Не в "Основы программирования Delphi 2007", а в "Основы программирования Delphi 7"
Anatoly Podgoretsky (2010-10-24 09:45:00) [62]> Ллирик (24.10.2010 03:24:33) [33]
Врешь ты все.
Anatoly Podgoretsky (2010-10-24 09:44:00) [63]
> я цитирую учебник Никиты Кулькина "Основы программирования
> в Delphi 2007"
Врешь ты все и Кулькина зря опускаешь.
Германн (2010-10-24 04:01:00) [64]
> пишу их на асме, и представьте себе они работают
Готов поверить, что они работают ибо заготовок для написания несложных драйверов полно.
Ллирик (2010-10-24 03:24:00) [65]да) пишу их на асме, и представьте себе они работают)
Похиш (2010-10-24 03:07:00) [66]
> Тип String эквивалентен типу ShortString. Вам разве было
> об этом не известно?
И эти кадры пишут драйвера :-))) Моя гоготать...
Юрий Зотов (2010-10-24 01:48:00) [67]Что ж, тогда продолжайте упражняться в выдумывании проблем.
Ллирик (2010-10-24 01:15:00) [68]по этому и скачал учебник на русском
Ллирик (2010-10-24 01:11:00) [69]а я английского не знаю)
Юрий Зотов (2010-10-24 00:49:00) [70]
> Ллирик © (24.10.10 00:41) [27]
А я, с Вашего разрешения, процитирую справку по Delphi 7:
The reserved word string functions like a generic type identifier. For example,
var S: string;
creates a variable S that holds a string. In the default {$H+} state, the compiler interprets string (when it appears without a bracketed number after it) as AnsiString.Use the {$H-} directive to turn string into ShortString.
Не думаю, что Delphi 2007 что-то изменилось.
Ллирик (2010-10-24 00:41:00) [71]я цитирую учебник Никиты Кулькина "Основы программирования в Delphi 2007"
Amoeba_ (2010-10-23 21:25:00) [72]
> Тип String эквивалентен типу ShortString. Вам разве было
> об этом не известно?
Ты что, с дуба рухнул?
Anatoly Podgoretsky (2010-10-23 21:25:00) [73]> Ллирик (23.10.2010 21:17:24) [24]
Мне это не известно, но я находил "странных" программистов, которые
принудительно это делали. Ты из них?
Ллирик (2010-10-23 21:17:00) [74]
> Anatoly Podgoretsky © (23.10.10 20:47) [21]
>
> > Ллирик (23.10.2010 20:44:20) [20]
>
> И где тут ShortString?
Тип String эквивалентен типу ShortString. Вам разве было об этом не известно?
Anatoly Podgoretsky (2010-10-23 21:12:00) [75]> Ллирик (23.10.2010 20:58:22) [22]
Чем лучше?
Ллирик (2010-10-23 20:58:00) [76]а лучше так
const
Keymouse: pansichar = 'Keymouse.sys';
...........
push [Keymouse]
Anatoly Podgoretsky (2010-10-23 20:47:00) [77]> Ллирик (23.10.2010 20:44:20) [20]
И где тут ShortString?
Ллирик (2010-10-23 20:44:00) [78]
> sniknik © (22.10.10 22:46) [7]
>
> > Наверное, там нужен PChar?
> не нужен.
> push offset Keymouse[1];
> аналог PChar будет, и даже #0 в конце будет. дельфи магия
> работы со строками...
>
Надо не так, а вот так:
const
Keymouse: string = 'Keymouse.sys';
.........
push [Keymouse]
Anatoly Podgoretsky (2010-10-23 19:30:00) [79]В приведеном коде никакой ShortString не обнаружен.
Ллирик (2010-10-23 18:54:00) [80]
> Фокус_Ник (23.10.10 01:46) [13]
>
> > PChar пробовал. Компилируется
> Значит, должно работать. Конечно, если все сделано правильно.
>
>
> > но потом глянул в OllyDebugger`е, по этому адресу находится
> не строка,
> > а какая-то ерунда.
> Значит, что-то сделано неправильно.
>
Так подскажите, что именно неправильно
>
> > Если вызывать api, не на ассемблере, то Делфи ругается
> не на строки,
> > а на 0 или nil, да на 1.
> Если ругается - значит, вызов неправильный.
>
> ================
>
> Не могу понять - зачем Вам ассемблер, если даже такая элементарщина
> уже вызывает проблемы?
>
> Ругается тут, ругается там... каждое такое "ругательство"
> как раз и говорят о причине ошибки, поэтому их надо читать,
> переводить, думать, въезжать и устранять. А не думать,
> что, мол, вызову из Ассемблера - и сразу все заработает.
> Потому что никакой Ассемблер неверный код верным не сделает.
Извините, но 0 или nil я взял не с неба, а прочитал в цикле статей написаных, конечно, на ассемблере, но правильность значения от этого ни чуть не уменьшается! С 1 это, конечно, моя придумка, но моем случае API с этим значением работает как надо.
> Германн © (23.10.10 02:18) [16]
>
> Присоединяюсь к вопросу. Любую процедуру/функцию WinAPI
> можно вызвать из программы на Дельфи без всяких ассемблеров.
>
> Но вот ".sys" и "offset" меня смущают. Не пытается ли автор
> лезть в функции драйвера "по старинке"?
Да, я пишу программу управления для моего драйвера.
> Anatoly Podgoretsky © (23.10.10 07:18) [17]
>
> Я уже спрашивал, но вопрос был проигнорировал - какой string?
>
>
ShortString