Текущий архив: 2002.06.17;
Скачать: 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 вся ветка
Текущий архив: 2002.06.17;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c