Вниз
Скачать: CL | DM;

Как установить длину буфера? (WNetGetUniversalName)   Найти похожие ветки 

 
Tom ©   (2002-04-05 13:26) [0]

Добрый день.

Провожу смелые эксперименты с WNetGetUniversalName...

procedure TForm1.Button1Click(Sender: TObject);
var
Name: string;
UserName: TUniversalNameInfo;
Length: DWORD;
Result: integer;
begin
Name := "h:\\soft\disk4.zip" + #0;
Length := ???; // ??????????????????????????????
Result := WNetGetUniversalName(@Name[1], UNIVERSAL_NAME_INFO_LEVEL, @UserName, Length);
end;

Все почти получается, только после отработки WNetGetUniversalName
случается Access Violation. По-моему надобно память для буфера
выделить. Но сколько? И как (GetMem или что)?


 
Tom ©   (2002-04-05 13:55) [1]

помогите...... торможу, однако.........


 
Erik Ivanov   (2002-04-05 15:46) [2]

А что требуется в первом параметре? Я потозреваю что указатель на Name. Тогда напиши так PChar(Name)^ это корректнее, хотя можно и Name[1] без сабаки!


 
Tom ©   (2002-04-05 16:03) [3]

2 Erik Ivanov
Увы, с первым параметром - порядок (по-моему).
Процедура отрабатывает - если я после строки, где она
вызывается пишу:

memo1.lines.add(StrPAs(username.lpUniversalName)); - то в

мемо1 добавляется строка типа "\\servername\ и т.д.".

Я думаю все дело именно в буфере или его длине. Если указать
заведомо недостаточную длину - никаких Violation не возникает.
А если длину увеличить - см. выше - в буфер пишется результат (правильный), потом сразу же Violation



 
Tom ©   (2002-04-05 16:22) [4]

Конкретизирую еще конкретней :(((

procedure TForm1.Button1Click(Sender: TObject);
var
Name: string;
Buf: TUniversalNameInfo;
BufSize: DWORD;
Result: integer;
begin
Name := "h:\_common_\1c\soft\disk4.zip" + #0;

BufSize := SizeOf(Buf);
Result :=
WNetGetUniversalName( @Name[1],
UNIVERSAL_NAME_INFO_LEVEL,
@Buf,
BufSize );

memo1.lines.add(IntTostr(result));
memo1.lines.add(IntTostr(BufSize));

memo1.lines.add(StrPAs(Buf.lpUniversalName));
end;

Работает без Violation"а, но WNetGetUniversalName возвращает код
ошибки - 234 (БУФЕР МАЛОВАТ), а в BufSize кладет требуемую длину
буфера. Я длину увеличиваю до необходимого размера, а тут как
тут и Violation...

Помогите...........


 
Tom ©   (2002-04-05 17:31) [5]

Прошу помочь советом. Где же я не прав?



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
1-55176
vinny
2002-06-04 20:36
2002.06.17
Скриптовый язык для проекта???


1-55211
Zamiran
2002-06-05 11:45
2002.06.17
Помогите плизз!!!


7-55323
Александп
2002-03-19 17:54
2002.06.17
Как в WinNt запустить Socket Server, чтобы он работал при стартовом окошке (нажмите Ctrl+Alt+Del)


8-55234
dmitriyk
2002-01-31 03:22
2002.06.17
Как качественно перевести цветную картинку в черно-белую


14-55291
lipskiy
2002-05-15 01:01
2002.06.17
К теме об обучении: Люди, расскажите, как хуки делаются?




   Наверх