Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

Точка входа в проц-у ConvertToGlobalHandle не найден в kernel32   Найти похожие ветки 

 
Shlomo ©   (2006-10-27 10:12) [0]

Здравствуйте!
Подскажите, пожалуйста, в чём тут проблема.

Программа выдаёт ошибку «"Точка входа в процедуру ConvertToGlobalHandle не найден в библиотеке DLL KERNEL32.dll"»

Программа для открытия и закрытия сетевых ресурсов. Скачал с delphikingdom.ru


unit Unit1;
interface
uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls ;
type
   TForm1 = class(TForm)
       Button1: TButton;
       Button2: TButton;
       procedure Button1Click(Sender: TObject);
       procedure Button2Click(Sender: TObject);
private
   { Private declarations }
public
   { Public declarations }
end;
//подключаем две функции из библиотеки svrapi.dll
Function NetShareAdd(Servername : PChar; Level : Integer; Buffer : Pointer;
   BufferSize : Integer) : Integer; stdcall; external "svrapi.dll";
Function NetShareDel(Servername : PChar; NetName : PChar; Reserved:DWORD): DWORD;
   stdcall; external "svrapi.dll";
//необходимые константы
const
{см. LmCons.pas}
   LM20_NNLEN = 12;
   SHPWLEN = 8;
   SHI50F_RDONLY = 1;
   SHI50F_FULL = 2;
   STYPE_DISKTREE = 0;
   SHI50F_PERSIST = $0100;
   SHI50F_SYSTEM = $0200;
{см. LmErr.pas}
   NERR_BASE = 2100;
   NERR_NetNotStarted = NERR_BASE+2;
   NERR_UnknownServer = NERR_BASE+3;
   NERR_ServerNotStarted = NERR_BASE+14;
   NERR_UnknownDevDir = NERR_BASE+16;
   NERR_RedirectedPath = NERR_BASE+17;
   NERR_DuplicateShare = NERR_BASE+18;
   NERR_BufTooSmall = NERR_BASE+23;
   NERR_NetNameNotFound = NERR_BASE+210;
   NERR_InvalidComputer = NERR_BASE+251;
   NERR_ShareNotFound = NERR_BASE+292;
//формируем тип для записи с необходимыми параметрами
Type
TShareInfo50 = Record
   shi50_netname: Array[0..LM20_NNLEN] Of Char; //сетевое имя
   shi50_type: Byte; //тип ресурса
   shi50_flags: Short; //флаг доступа
   shi50_remark: PChar; // комментарий
   shi50_path: PChar; // путь к ресурсу
   shi50_rw_password: Array[0..SHPWLEN] Of Char;//пароль полного доступа
   shi50_ro_password: Array[0..SHPWLEN] Of Char;//пароль "только чтение" доступа
End; {Record}
var
   Form1: TForm1;
implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
Var
   info50: TShareInfo50;
   rc, cb: Integer;
   ServerName, Path, NetName, ErrMes, ErrCap, Comment:String;
   MessIconBtn:Byte;
begin
//установим необходимые параметры
ServerName:="";
Path:="C:\TEMP";
NetName:="TEST";
Comment:="This is a network machine""s commentary";
//заполним буфер
FillChar(info50, sizeof(info50), 0);
With info50 Do
Begin{With}
StrCopy(shi50_netname, PChar(NetName)); //сетевое имя
shi50_type := STYPE_DISKTREE; //подключать будем диск
shi50_remark:=PChar(Comment); //комментарий
shi50_flags:= SHI50F_RDONLY OR SHI50F_FULL //доступ определяется паролем
                   OR SHI50F_PERSIST;//и пишется в Registry
shi50_path:=PChar(Path); //путь
StrPCopy(shi50_rw_password,"ASDF"); //пароль для полного доступа
StrPCopy(shi50_ro_password,"QWE"); // пароль для "только чтение"
End;{With}
//установим размер буфера
cb := sizeof(info50);
//основная функция
rc := NetShareAdd(PChar(ServerName), 50, @info50, cb);
//сформируем текст сообщений об успехе или ошибках
ErrMes:="Доступ к устройству ""+NetName+"" открыт!";
ErrCap:="Все в порядке!";
MessIconBtn:=MB_OK OR MB_ICONINFORMATION;
//проверка ошибок
If rc <> 0 Then
Begin {ошибка}
ErrCap:="Ошибка!";
MessIconBtn:=MB_OK OR MB_ICONERROR;
Case rc Of
//расшифровка ошибок
   ERROR_NOT_ENOUGH_MEMORY : ErrMes:="Недостаточно памяти";
   ERROR_BAD_NETPATH : ErrMes:="""+Servername+ "" - неверное сетевое имя!";
   ERROR_NETNAME_DELETED : ErrMes:="Сетевой ресурс более недоступен";
   ERROR_NETWORK_ACCESS_DENIED: ErrMes:="Отсутствует доступ к сети";
   ERROR_BAD_DEV_TYPE : ErrMes:="Неверный тип сетевого ресурса";
   ERROR_BAD_NET_NAME : ErrMes:="Не найдено сетевое имя";
   ERROR_INVALID_PARAMETER : ErrMes:="Неверный параметр";
   ERROR_INVALID_LEVEL : ErrMes:="Неверный уровень администрирования";


   NERR_InvalidComputer:ErrMes:="Неверное имя компьютера!";
   NERR_UnknownServer:ErrMes:="Неизвестный сервер!";
   NERR_UnknownDevDir:ErrMes:="Устройство ""+Path+"" отсутствует!";
   NERR_ServerNotStarted:ErrMes:="Сервер не работает!";
   NERR_RedirectedPath:ErrMes:="Переназначенный путь!";
   NERR_DuplicateShare:ErrMes:="Сетевое имя ""+NetName+"" уже существует!";
   NERR_BufTooSmall:ErrMes:="Слишком маленький буфер для данных!";
Else
End; {Case}
End; {ошибка}
//выдадим сообщение
MessageBox(Application.Handle,PChar(ErrMes),PChar(ErrCap),MessIconBtn);
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
rc:DWord;
Servername,NetName, ErrMes, ErrCap:String;
MessIconBtn:Byte;
begin
ServerName:="";
NetName:="TEST";
rc:=NetShareDel(PChar(ServerName),PChar(NetName),0);
ErrMes:="Доступ к устройству ""+NetName+"" закрыт!";
ErrCap:="Все в порядке!";
MessIconBtn:=MB_OK OR MB_ICONINFORMATION;

If rc <> 0 Then
Begin {ошибка}
//ошибка
ErrCap:="Ошибка!";
MessIconBtn:=MB_OK OR MB_ICONERROR;

Case rc Of
//расшифровка ошибок
   ERROR_BAD_NETPATH:ErrMes:="""+Servername+ "" - неверное сетевое имя!";
   ERROR_INVALID_PARAMETER:ErrMes:="Неверный параметр!";
   NERR_NetNotStarted:ErrMes:="Сеть недоступна!";
   NERR_ServerNotStarted:ErrMes:="Сервер не работает!";
   NERR_NetNameNotFound:ErrMes:="Устройство не существует!";
   NERR_ShareNotFound:ErrMes:="Сетевое имя ""+NetName+"" не найдено!";
Else
//смотри ошибки для NetShareAdd или
   ErrMes:="Неизвестная сетевая ошибка!";
End; {Case}
End;{ошибка}
MessageBox(Application.Handle,PChar(ErrMes),PChar(ErrCap),MessIconBtn);
end;
end.


 
Сергей М. ©   (2006-10-27 10:27) [1]

svrapi.dll - это для Win9x

Для НТ - NetApi32.dll


 
Elen ©   (2006-10-27 10:27) [2]


> svrapi.dll

А где лежит эта библи-отика?


 
Сергей М. ©   (2006-10-27 10:33) [3]


> Elen ©   (27.10.06 10:27) [2]


В НТ-системах этой библ-ки нет, вместо нее фигурирует NetApi32.dll.
Автор просто невнимательно отнесся к комментариям по ОС-платформе, когда передирал код.


 
Shlomo ©   (2006-10-27 10:45) [4]


> svrapi.dll - это для Win9x
>
> Для НТ - NetApi32.dll
>

Спасибо, исправил!
Эта ошибка не появляется, но программа всё равно не работает.



Страницы: 1 вся ветка

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
3-1160118755
__dmitry
2006-10-06 11:12
2006.12.10
сортировка вычисляемых полей


15-1163815002
Tirael
2006-11-18 04:56
2006.12.10
готов признать что вы крутые программеры


2-1163773206
KyRo
2006-11-17 17:20
2006.12.10
не могу передать файл через TServerSocket


2-1164126737
Kolan
2006-11-21 19:32
2006.12.10
Где правильно хранить настройки/файлы программы?


11-1140316470
vvp
2006-02-19 05:34
2006.12.10
Как получить индексы выделенных элементов в ListBox е?