![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 32
|
![]()
Здравствуйте !!!
Чёто немогу сформировать список Дисков, вот код: Код:
И в итоге вывести в COMBOBOX
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину. --- Истина где-то рядом ![]() Последний раз редактировалось Alexoid; 20.04.2008 в 20:47. |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Тоже вкратце. Никакой список никуда не попадает - посмотрите, для какой строки Вы память выделяете, а в какую хотите записать.
|
![]() |
![]() |
![]() |
#3 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
там проблема не только в этом но в самом алгоритме.
надо примерно вот так: Код:
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 32
|
![]()
Вот немного подправил - Добавил :
PUSH 255 PUSH HEAP_ZERO_MEMORY PUSH hH CALL HeapAlloc MOV szDrive, EAX да тут я малость не подумал, меня то збило что некоторые API ф-ции выделяют память сами, записывая туда необходимую инфу, и присваивают указатель переменной- что-то вроде этого. по-моему так поступают с некоторыми параметрами advapi ф-ции по работе с реестром или я опять ошибаюсь? Результат: Код:
что скажите?
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину. --- Истина где-то рядом ![]() Последний раз редактировалось Alexoid; 20.04.2008 в 22:24. |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 32
|
![]()
Вроде ВСЁ попёрло (изменил ещё осталеное - LEA на MOV поменял). Пасибо-ч-к-и %-)
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину. --- Истина где-то рядом ![]() |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 32
|
![]()
Копирование строки szDrive в szDriveOUT мне необходимо, т.к я хочу ещё с помощью ф-ции GetDriveType к каждому диску добавить описание....
И ещё хотел спросить - после выполнения ф-ции GetLogicalDriveStrings строка szDrive выглядит так: "C:\0D:\0E:\0", где 0 - разделитель, если расчитывать минимальный размер буфера, то получается: в Английском алфавите - 24 буквы, следовательно 24*4=96, так ? Я незнаю принято ли увас тут просто выкладывать код, вроде как учебных примеров просто думаю, что в целом у меня неплохо получилось(тут и работа со списками и динамическое выдилени памяти и работа со строками - копирование), вот итог: Код:
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину. --- Истина где-то рядом ![]() Последний раз редактировалось Alexoid; 21.04.2008 в 13:10. |
![]() |
![]() |
![]() |
#9 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]() Цитата:
http://msdn2.microsoft.com/en-us/lib...75(VS.85).aspx |
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 20.04.2008
Сообщений: 32
|
![]()
Я правелно Вас понял, если её вызвать вот так:
PUSH 0 PUSH 0 CALL GetLogicalDriveStrings то eax будет содержать число-размер буфера щас попробую.... да фантастика, ещё раз убеждаюсь, что WINAPI - Это СИЛА, с 5-ю дисками он выдал 21, а с 6 -25, что и выходит: 25-1=24(убрал последний ноль) 24/6=4 - каждый диск по 4 байта. Ну это конечно уже решать тому кто прогу делает либо 2 раза вызывать GetLogicalDriveStrings и терять драгоциенные такты процессора, но выделять точное кол-во памяти; либо выделить максимум и прибавить еще 5-6 байтов для уверенности, тем более если размер буфера не такой уж и большой. До самой истины дошли, тут на этом посте можно Диссертацию накатать покрайней мере основа положена ![]()
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину. --- Истина где-то рядом ![]() Последний раз редактировалось Alexoid; 21.04.2008 в 14:41. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Данные-проверка-список (список на другом листе) | Inbox | Microsoft Office Excel | 7 | 26.12.2008 01:43 |
Каталогизатор дисков | puma | Софт | 3 | 28.05.2008 16:05 |
строка Список логичечких дисков | PuzzleC | Общие вопросы C/C++ | 2 | 01.11.2007 15:24 |
Список дисков в DriveComboBox | Alar | Компоненты Delphi | 0 | 29.10.2006 19:35 |