powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поможите с ошибкой
8 сообщений из 8, страница 1 из 1
Поможите с ошибкой
    #32247341
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обработчик нажатия кнопки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
procedure TForm1.Button2Click(Sender: TObject);
var username, domain:PChar;
    SID:PSID;
    sizesid, sizedomain:dword;
    siduse:SID_NAME_USE;
begin
  try
    username:='user';
    domain:=nil;
    sizesid:= 128 ;
    sizedomain:= 16 ;
    Sid:=HeapAlloc(GetProcessHeap(),  0 , sizesid);
     if(sid=nil)  then
      raise Exception.Create('Error');
    domain:=HeapAlloc(GetProcessHeap(),  0 , sizedomain);
    sizedomain:=sizeof(domain);

    if LookupAccountName(nil, 
                      username, @Sid,sizesid,Domain,sizedomain,siduse) then
      showmessage(domain)
    else
      showmessage('Error');

    HeapFree(GetProcessHeap(),  0 , domain);

    if sid <>nil then
      begin
        HeapFree(GetProcessHeap(),  0 , SID);
        Sid :=nil;
      end;
  finally
  end;
end;


При выходе из процедуры выдается эксепшн
Access violation at address 00000015. Read of address 00000015.

Подскажите в чем прабл?
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247354
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня на W2K + D6 этот код стабильно выдает "Error" без всяких AV
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247363
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win2k+D7, Все работает, username- имя пользователя в домене.
Домен выдается, фукция работает, но ошибка остается.
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247368
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W2k3 server +D3 || D6 - тоже всегда Еррор
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247393
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Error, тогда подскажите как без него
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247419
Фотография Luchkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если передавать не @Sid, a Sid?
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247427
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совершенно точно, PSID это уже указатель.
короче, вот этот код у меня работает без ошибок и выдает то, что нужно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
procedure TfmMain.FormDblClick(Sender: TObject);
var domain : array [ 0 .. 15 ] of Char;
    SID    : PSID;
    siduse : SID_NAME_USE;
    sizesid, sizedomain : DWORD;
begin
  try
    sizesid :=  128 ;
    SID     := HeapAlloc( GetProcessHeap(),  0 , sizesid );
    if not Assigned(SID) then raise Exception.Create( 'Exception: SID is NULL' );

    sizedomain := SizeOf( domain );
    if LookupAccountName( nil,
                          PChar('Anton'),
                          SID,
                          sizesid,
                          domain,
                          sizedomain,
                          siduse )
    then ShowMessage( domain )
    else ShowMessage( 'Error: cannot get domain.' );

    if Assigned(SID) then
      begin
        HeapFree( GetProcessHeap(),  0 , SID );
//        SID := nil;
      end;
  finally
  end;
end;

А насколько необходимо использовать HeapAlloc & HeapFree, с этой задачей
прекрасно справляются и GetMem & FreeMem?
...
Рейтинг: 0 / 0
Поможите с ошибкой
    #32247450
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О огромный спасиб )
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поможите с ошибкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]