Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

Как в Delphi получить букву системного диска?   Найти похожие ветки 

 
Garacio ©   (2007-02-02 14:48) [0]

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


 
Vlad Oshin ©   (2007-02-02 14:52) [1]

получить системную папку, выцепить букву


 
Garacio ©   (2007-02-02 14:54) [2]

получить системную папку, выцепить букву

Кодом не поделишься?


 
Vlad Oshin ©   (2007-02-02 14:57) [3]

function GetSystemDir: String;
The GetSystemDir function returns path to the system directory


 
Elen ©   (2007-02-02 14:58) [4]


> Garacio


var p:array[0..255] of char;
begin
GetWindowsDirectory(p, 255);
caption:=ExtractFileDrive(p);
end


 
tesseract ©   (2007-02-02 14:59) [5]

Примерно так :

lpBuffer:PCHAR;
GetMem(lpBuffer,MAX_PATH);
GetSystemDirectory( lpBuffer,  MAX_PATH);
SysDrive:=ExtractFileDrive(lpBuffer);
FreeMem(lpBuffer);


 
Anatoly Podgoretsky ©   (2007-02-02 15:04) [6]

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


 
Vlad Oshin ©   (2007-02-02 15:07) [7]


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

в данном случае то :)


> ExtractFileDrive

инттересно, а у такого красивого имени реализация случайно не result:=parametr[1] :)


 
Garacio ©   (2007-02-02 15:14) [8]

Спасибо!
Буду изучать и пробовать!


 
Elen ©   (2007-02-02 15:19) [9]


> инттересно, а у такого красивого имени реализация случайно
> не result:=parametr[1] :)

Что за parametr[1]?


 
clickmaker ©   (2007-02-02 15:19) [10]


> у такого красивого имени реализация случайно не result:=parametr[1]
> :)

нет, там наворот. Учитывает UNC-пути


 
clickmaker ©   (2007-02-02 15:19) [11]


> Что за parametr[1]?

ParamStr(1)
:)


 
Игорь Шевченко ©   (2007-02-02 15:36) [12]

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


 
clickmaker ©   (2007-02-02 15:37) [13]

может это диск, на котором всё систематизировано?


 
Vlad Oshin ©   (2007-02-02 15:50) [14]

что видно в 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);


 
clickmaker ©   (2007-02-02 15:52) [15]


> [14] Vlad Oshin

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


 
Anatoly Podgoretsky ©   (2007-02-02 15:54) [16]

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

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


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


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

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


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


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

не понял

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


 
Elen ©   (2007-02-02 16:28) [19]


> Vlad Oshin

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


 
Джо ©   (2007-02-02 16:29) [20]

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


 
Джо ©   (2007-02-02 16:29) [21]

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


 
Джо ©   (2007-02-02 16:30) [22]

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


 
Elen ©   (2007-02-02 16:37) [23]


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

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


 
Anatoly Podgoretsky ©   (2007-02-02 16:39) [24]

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

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


 
Elen ©   (2007-02-02 16:43) [25]


> Anatoly Podgoretsky

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


 
Vlad Oshin ©   (2007-02-02 16:50) [26]


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

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

О загадочном

>  result:=parametr[1]"?

это не

>  ParamStr(0)[1]?

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


 
RASkov   (2007-02-02 16:53) [27]

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


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

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


 
RASkov   (2007-02-02 16:54) [28]

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

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


 
Anatoly Podgoretsky ©   (2007-02-02 16:55) [29]

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

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


 
Elen ©   (2007-02-02 16:57) [30]


> Vlad Oshin

Яснышко :)


 
Elen ©   (2007-02-02 16:58) [31]


> Anatoly Podgoretsky

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


 
Anatoly Podgoretsky ©   (2007-02-02 17:01) [32]

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

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


 
clickmaker ©   (2007-02-02 17:09) [33]


> Garacio ©   (02.02.07 14:48)

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



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

Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.039 c
2-1170020736
San1
2007-01-29 00:45
2007.02.18
при работе с динамическим массивом ошибка EInvalidPointer


15-1170012791
Неудачнег
2007-01-28 22:33
2007.02.18
GetIfTable()


9-1144169967
Pa5ha
2006-04-04 20:59
2007.02.18
Эффекты на OpenGL


2-1170333130
Destroyer
2007-02-01 15:32
2007.02.18
Как узнвать handle потока?


2-1169982916
Nanos
2007-01-28 14:15
2007.02.18
Как исправить...?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский