Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поставить машинный адрес в соответствие букве? Из for ex. \Device\HarddiskVolume3 в E:\ 
:(
    Опции темы
EnyKey
Дата 14.10.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.10.2006

Репутация: нет
Всего: нет



Программа получает адрес в виде \Device\HarddiskVolume3\...
Для дальнейшего обращения к файлу нужно преобразовать данное представление в, например, E:\...

Как такое сделать?
PM MAIL   Вверх
anwe
Дата 15.10.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Откуда получается адрес без имени диска?
Если тебе нужен полный адрес к файлу то используй функцию GetCurrentDir.
PM MAIL   Вверх
EnyKey
Дата 15.10.2006, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.10.2006

Репутация: нет
Всего: нет



Получаем от NtQueryObject... 
Вместо имени диска идёт машинное представление MountedDevice. Надо полчучить имя диска
PM MAIL   Вверх
bems
Дата 15.10.2006, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Код

program Project1;

{$APPTYPE CONSOLE}

uses
  windows;

var buf:PChar;

begin
  GetMem(buf,1024);
  QueryDosDevice('c:',buf,1024);
  writeln(buf);
  FreeMem(buf,1024);
  readln
end.

Эта штука выводит 
Код

\Device\HarddiskVolume1 

Перебираешь все буквы и сравниваешь со своим девайсом


--------------------
Обижено школьников: 8
PM MAIL   Вверх
BUGOR
Дата 15.10.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Ну вообще эта информация хранится здесь: HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices, а ещё есть функция DefineDosDevice, она вроде обратна функции QueryDosDevice, иль я ошибаюсь)

Это сообщение отредактировал(а) BUGOR - 15.10.2006, 08:01


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
S0vNarK0m
Дата 15.10.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



BUGOR,  Ошибаешься, DefineDosDevice позволяет смонтировать диск... или отключить. smile 
PM MAIL   Вверх
BUGOR
Дата 15.10.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



S0vNarK0m, вот, единственный раз пренебрёг описанием и решил положиться на свою логику и ошибься, бывает... спасибо за поправкуsmile


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
EnyKey
Дата 15.10.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.10.2006

Репутация: нет
Всего: нет



bems, а без перебора способа нету?
PM MAIL   Вверх
bems
Дата 16.10.2006, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(EnyKey @  15.10.2006,  14:34 Найти цитируемый пост)
 а без перебора способа нету? 

Мне такие не известны, но не думаю чтобы они были. Дело в том, что c: это символическая ссылка на Device\HarddiskVolume1 и их может быть больше одной. 
Как зная (к примеру) адрес ячейки памяти найти конкретный из всего множества указатель на нее? Это метафора, но я надеюсь мысль ясна - с помощью DefineDosDevice можно хоть десяток "дисков"-двойников наделать, хватило бы букв. Поэтому если способы, о которых ты говоришь и существуют, то внутренне это будет перебор.

Если и после этого способ не подходит - вся проблема в реализации и нужно учиться писать  smile 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
dumb
Дата 16.10.2006, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(EnyKey @  15.10.2006,  14:34 Найти цитируемый пост)
bems, а без перебора способа нету? 

если microsoft перебирает, то, видимо, и тебе придется. smile
PM MAIL   Вверх
EnyKey
Дата 16.10.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.10.2006

Репутация: нет
Всего: нет



bems, нет, спасибо, просто думал, вдруг варианты есть))
PM MAIL   Вверх
bems
Дата 17.10.2006, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



EnyKey, почитай еще хелп по QueryDosDevice, она может возвращать не строку, а массив строк. Пример савсем упращенный


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.