Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Глобальные переменные и вызов native API из Delphi 6
Посл.ответ Сообщение


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 12 апреля 2007 13:42
· Личное сообщение · #1

Всем hi, народ, подскажите, как рашеть проблему с делфями. Дело в том, что при вызове АПИ функций глобальные переменные тупо затираются, что, в общем-то, нежелательно. Что делать?

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 апреля 2007 13:49
· Личное сообщение · #2

???
Можно подробнее, пример кода и т.д. АПИ функции никак не могут затереть глобальные переменные, как и локальные если не захочишь

-----
Yann Tiersen best and do not fuck





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 12 апреля 2007 13:55
· Личное сообщение · #3

PE_Kill
...\поскипано
filehandle:=GetFileHandle(fileName);
MessageboxA(0,'Name',fileName,MB_OK);
...//поскипано
function GetFileHandle(fileName:PChar):Cardinal;
begin
result:=CreateFileA(fileName,...//ну, дальше сам допиши, думаю, суть ясна);
end;


-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 12 апреля 2007 14:21
· Личное сообщение · #4

ARCHANGEL
И что у тебя здесь затирается? fileName затираться не может...




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 12 апреля 2007 14:23
· Личное сообщение · #5

HoBleen
Может, и не может, однако, собака, затирается. Под Олькой смотрел - его значение копируется в ESI из EAX, а потом оба прекрасно затираются, и messageboxa нихрена не показывает

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 12 апреля 2007 14:32 · Поправил: Ara
· Личное сообщение · #6

хз, специально скомпилял тока что проект с предложенным кодом - ничего не затирается.
ЗЫ: компилял в дельфи 7



Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 12 апреля 2007 14:46
· Личное сообщение · #7

Ничего не затирается, проверяй:
const
NameOfFile = 'C:\Hacker\Tools\Necessary\brain.vxd';
//======
procedure TForm1.Button1Click(Sender: TObject);
function GetFileHandle(fileName:PChar):Cardinal;
begin
result:=CreateFileA(fileName,GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
end;
var
FileName: PChar;
FileHandle: Cardinal;
begin
FileName := PChar(NameOfFile);
Filehandle:=GetFileHandle(fileName);
MessageboxA(0,fileName,'Name',MB_OK);
//CloseHandle(filehandle);
end;




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 апреля 2007 14:48
· Личное сообщение · #8

ARCHANGEL попробуй сделать fileName типа String, а там где надо PChar вызывай PChar(fileName)

-----
Yann Tiersen best and do not fuck




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 12 апреля 2007 15:00
· Личное сообщение · #9

> , а там где надо PChar вызывай PChar(fileName)
имхо красивее @fileName[1] ;)

-----
Shalom ebanats!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 апреля 2007 06:23
· Личное сообщение · #10

SLV пишет:
имхо красивее @fileName[1] ;)

Кому как, мне наоборот...

-----
Yann Tiersen best and do not fuck




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 13 апреля 2007 08:49
· Личное сообщение · #11

PE_Kill, лучше самому задавать адреса, чем полагаться на приведение типов компилятором имхо

-----
Shalom ebanats!





Ранг: 85.4 (постоянный)
Активность: 0.080
Статус: Участник

Создано: 13 апреля 2007 09:15
· Личное сообщение · #12

SLV пишет:
чем полагаться на приведение типов компилятором

А есть примеры проблем с привидением типов компилятором? Помоему он сам всё неплохо приводит

-----
radio uno in ibisa ...




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 13 апреля 2007 09:33
· Личное сообщение · #13

так как я написал проще отлаживать код :P

-----
Shalom ebanats!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 апреля 2007 10:04 · Поправил: PE_Kill
· Личное сообщение · #14

SLV чем проще?

-----
Yann Tiersen best and do not fuck




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 13 апреля 2007 12:16
· Личное сообщение · #15

PE_Kill, ну если задача другая... например надо обратиться к N'ной букве... там индекс если перепутаешь... в общем моё мнение так лучше...

-----
Shalom ebanats!



 eXeL@B —› Программирование —› Глобальные переменные и вызов native API из Delphi 6
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати