![]() |
|
|
|
|
#1
|
|||
|
|||
|
Не могу разобраться почему функция GetProcedureAddress не работает. И GetModuleHandle и LoadLibrary возвращают 0.
Код:
procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: string);
var
ModuleHandle: HMODULE;
begin
if not Assigned(P) then
begin
ModuleHandle := GetModuleHandle(PAnsiChar(ModuleName));
if ModuleHandle = 0 then
begin
ModuleHandle := LoadLibrary(PAnsiChar(ModuleName));
if ModuleHandle = 0 then
Exit;
end;
P := Pointer(GetProcAddress(ModuleHandle, PAnsiChar(ProcName)));
if not Assigned(P) then
Exit;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
P: Pointer;
begin
P := nil;
GetProcedureAddress(P, 'kernel32.dll', 'GetVersionExA');
end; |
|
#2
|
|||
|
|||
|
Код:
AnsiString Код:
procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: AnsiString); |
| Этот пользователь сказал Спасибо Zorkov Igor за это полезное сообщение: | ||
xteam777 (19.05.2018)
| ||
|
#3
|
|||
|
|||
|
Внутри такой конструкции
Код:
PAnsiChar( AnsiString ) |
| Этот пользователь сказал Спасибо Zorkov Igor за это полезное сообщение: | ||
xteam777 (19.05.2018)
| ||
|
#4
|
|||
|
|||
|
Спасибо. Действительно.
Код:
var s: String; sa: AnsiString; p1, p2: PansiChar; begin s := 'asd123'; sa := 'asd123'; p1 := PAnsiChar(s); p2 := PAnsiChar(sa); p1 = 'a' p2 ='asd123' Почему идет обрезание строки? Последний раз редактировалось Admin, 19.05.2018 в 16:20. |
|
#5
|
|||
|
|||
F1 Help ![]() |
|
#6
|
|||
|
|||
|
1. Размер Юникод символа сколько байт?
2. Размер Анси символа сколько байт? |