Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в Delphi получить букву системного диска? [D7]


Страницы:   1 2

Garacio ©   (2007-02-02 14:48:00) 

C:\, D:\, E:\... ?


clickmaker   (2007-02-02 17:09:00) [1]


> Garacio ©   (02.02.07 14:48)

а почему бы прямо так в лоб у системы не спросить?
GetEnvironmentVariable("SystemDrive"


Anatoly Podgoretsky   (2007-02-02 17:01:00) [2]

> Elen  (02.02.2007 16:58:31)  [31]

Он обещал вернуться
Карлсон


Elen   (2007-02-02 16:58:00) [3]


> Anatoly Podgoretsky

Все! Я пошла домой. Всем пока - Приятных выдыхных :)


Elen   (2007-02-02 16:57:00) [4]


> Vlad Oshin

Яснышко :)


Anatoly Podgoretsky   (2007-02-02 16:55:00) [5]

> Elen  (02.02.2007 16:43:25)  [25]

Подобный ответ вызывает еще больше вопросов.
Поскольку я могу разместить "систему" как минимум на пяти логических и даже физических дисках, и теперь надо уточнять, что такое система.


RASkov   (2007-02-02 16:54:00) [6]

Забыл добавить еще и
> [0] Garacio ©   (02.02.07 14:48)

в начало [27]....


RASkov   (2007-02-02 16:53:00) [7]

> [24] Anatoly Podgoretsky ©   (02.02.07 16:39)


> [25] Elen ©   (02.02.07 16:43)

Диск может быть загрузочным например С:, а винда может в это время находится на другом диске, например D: или E:
Так, что "системный диск", в данной ветке, имеется ввиду наверное [25] Т.е.  (тот который с виндой)...


Vlad Oshin   (2007-02-02 16:50:00) [8]


> зачем загружать автора внутренней орагнизацией?

должен же и отвечающий получить удовольствие

О загадочном

>  result:=parametr[1]"?

это не

>  ParamStr(0)[1]?

и не что иное другое, кроме как
parametr
(читается: параметр)
смысловая нагрузка сего шедевра:
Передается в функции и процедуры. Бывает в том числе и ParamStr ном. Но это по совместительству.


Elen   (2007-02-02 16:43:00) [9]


> Anatoly Podgoretsky

Цитирую себя : " (тот который с виндой)" IMHO :)


Anatoly Podgoretsky   (2007-02-02 16:39:00) [10]

> Elen  (02.02.2007 16:37:23)  [23]

Что такое системный диск?


Elen   (2007-02-02 16:37:00) [11]


> Тьфу, то есть ParamStr(0)[1]?

Тоже Запутался :) ничего "И тебя вылечат и меня вылечат".
Кстати  ParamStr(0)[1] весьма креативно, особенно если учесть что это даст букву диска с которого запускается прога, но этот диск не обязательно будет системный (тот который с виндой)


Джо   (2007-02-02 16:30:00) [12]

Только зачем оно имелось в виду, неясно :)


Джо   (2007-02-02 16:29:00) [13]

Тьфу, то есть ParamStr(0)[1]?


Джо   (2007-02-02 16:29:00) [14]

А не CmdLine[1] имелось ввиду? :)


Elen   (2007-02-02 16:28:00) [15]


> Vlad Oshin

Не ну про дебуггер все ясно, и про прогу в асме тоже не секрет, но зачем загружать автора внутренней орагнизацией? (Ну если это шутка то она удаласЪЪ)
И сто такое  " result:=parametr[1]"?


Vlad Oshin   (2007-02-02 16:24:00) [16]


> Elen ©   (02.02.07 16:06) [17]

не понял

это ctrl+ alt+ с на брекпойте
или
это я так пошутить хотел про внутреннюю организацию функции


Elen   (2007-02-02 16:06:00) [17]


> Vlad Oshin ©   (02.02.07 15:50) [14]

Чет я недоганяю. Эт че такое?


Anatoly Podgoretsky   (2007-02-02 15:54:00) [18]

> Vlad Oshin  (02.02.2007 15:07:07)  [7]

А я не зря спрашиваю, ответ от автора интересен.


clickmaker   (2007-02-02 15:52:00) [19]


> [14] Vlad Oshin

а зачем в цпу-то?
SysUtils.pas


Vlad Oshin   (2007-02-02 15:50:00) [20]

что видно в CPU

ExtractFileDrive
004081E0 53               push ebx
004081E1 56               push esi
004081E2 57               push edi
004081E3 55               push ebp
004081E4 8BEA             mov ebp,edx

разогреем регистры :)
004081E6 8BD8             mov ebx,eax
004081E8 8BC3             mov eax,ebx


узнаем длинну параметра
004081EA E81DBFFFFF       call @LStrLen
переход если меньше 2 знаков
004081EF 83F802           cmp eax,$02
004081F2 7C1A             jl +$1a

переход сюда
0040820E 8BC3             mov eax,ebx
не, точно меньше 2?
00408210 E8F7BEFFFF       call @LStrLen
00408215 83F802           cmp eax,$02

00408218 7C4B             jl +$4b
и т.д.

файл с:+ЛЮБАЯ_БИЛИБЕРДА_противоречащая_хранению_файловой_системы.оказывается_на_диске_с:  
s:='с:+ЛЮБАЯ_билиберда_противоречащая_хранению_файловой_системы.оказывается_на_диске_с: ';
s:=ExtractFileDrive(s);


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо