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

Вниз

Почему у меня не работает функция GetLogicalDrivestrings?   Найти похожие ветки 

 
AlDid   (2003-02-20 00:03) [0]

Уважаемые Мастера Delphi! Прошу Вашей помощи!!

Проблема у меня следующая:
Я хочу получить список логических дисков, имеющихся на машине. Но... Дело в том, что функция GetLogicalDrivestrings, по идее, должна их мне возвратить, но не обязана!
Если я ей передаю buffer типа array[0..255] of char, то она возвращает только "a:\", а если передаю buffer типа PChar, то она возвращает вообще не понятно что: "S>Ы>ьЛЫ|" или получаю Acceess Violation. Как быть?


procedure TForm1.Button1Click(Sender: TObject);
var buffer : array [0..255] of Char;
//buffer : Pchar;
begin
GetLogicalDrivestrings(SizeOf(buffer),buffer);
StaticText1.Caption:=buffer;
end;

Заранее спасибо огромное!


 
Anatoly Podgoretsky ©   (2003-02-20 00:14) [1]

Чему равен результат фвункции?
И посмотри хелп об ограничителях в строке(буфере)


 
AlDid   (2003-02-20 00:55) [2]

Результат функции равен 16.
16 - это длина в символах строки, скопированной в buffer...


 
jack128 ©   (2003-02-20 04:58) [3]

а ты в сторону хелпа смотрел?
А между тем там англицким языком написано, что разделителем названий дисков является 0(ноль, null). Ясное дело у тебя выводится только первый диск...

ЗЫ кстати результат это не длина строки, скопированной в buffer, а необходимое кол-во памяти для копирования названий всех дисков...



 
[lamer]Barmaglot ©   (2003-02-20 09:40) [4]

procedure TForm1.Button1Click(Sender: TObject);
const
k: integer=0;
var
Buffer: Array of Char;
Counter: Integer;
begin
Counter:=GetLogicalDriveStrings(0,PChar(Buffer));
SetLength(Buffer, Counter);
GetLogicalDriveStrings(Counter,PChar(Buffer));
listbox1.Items.Add(PChar(Buffer));
Repeat
if (Buffer[k]=#0) then listbox1.Items.Add(PChar(@Buffer[k+1]));
inc(k);
until (Buffer[k]=#0) and (Buffer[k+1]=#0);
Buffer:=nil;
end;


 
AlDid   (2003-02-21 21:12) [5]

>[lamer]Barmaglot ! Большое тебе прибольшое спасибо! Все отлично работает :)



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

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

Наверх




Память: 0.47 MB
Время: 0.024 c
7-67594
StAL
2003-03-04 10:06
2003.04.21
Как узнать, когда документ отправлен на принтер?


4-67623
Nemo
2003-02-21 02:05
2003.04.21
Проблемы с клавишами и приложениями. Откликнитесь!!!


4-67622
Sliski Slimak
2003-02-22 07:25
2003.04.21
Мастаки, как узнать, запущен ли какой-нибудь exe файл, и узнать


1-67198
tytus
2003-04-10 13:13
2003.04.21
Темы ХР


14-67563
alex134
2003-04-04 19:09
2003.04.21
Кто писал отладчик?