Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поможите с ошибкой / 8 сообщений из 8, страница 1 из 1
26.08.2003, 12:21
    #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
26.08.2003, 12:27
    #32247354
Speaker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с ошибкой
У меня на W2K + D6 этот код стабильно выдает "Error" без всяких AV
...
Рейтинг: 0 / 0
26.08.2003, 12:31
    #32247363
bjohny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с ошибкой
Win2k+D7, Все работает, username- имя пользователя в домене.
Домен выдается, фукция работает, но ошибка остается.
...
Рейтинг: 0 / 0
26.08.2003, 12:33
    #32247368
Luchkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с ошибкой
W2k3 server +D3 || D6 - тоже всегда Еррор
...
Рейтинг: 0 / 0
26.08.2003, 12:43
    #32247393
bjohny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с ошибкой
Если Error, тогда подскажите как без него
...
Рейтинг: 0 / 0
26.08.2003, 12:55
    #32247419
Luchkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с ошибкой
а если передавать не @Sid, a Sid?
...
Рейтинг: 0 / 0
26.08.2003, 12:59
    #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
26.08.2003, 13:08
    #32247450
bjohny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поможите с ошибкой
О огромный спасиб )
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поможите с ошибкой / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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