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

Вниз

Как преобразовать имя из C: МОИ ДОКУМЕНТЫ в C: Мои документы ?   Найти похожие ветки 

 
Кен   (2003-12-31 01:06) [0]

В смысле перевести его из верхнего регистра, к тому, каким оно является на самом деле с учётом заглавных и строчных букв.


 
Кен   (2003-12-31 07:45) [1]

Почему то когда программу запускаешь из ФАРа, то имя папки программы получается заглавными буквами. А мне надо в нормальном виде. Как такое преобразование можно сделать ?


 
Романов Р.В.   (2003-12-31 07:49) [2]

Тебе занятся нечем? Какая разница в каком виде. Главное суть, а не форма...


 
Anatoly Podgoretsky   (2003-12-31 09:09) [3]

Не запускать из Фара


 
Agent13   (2003-12-31 12:35) [4]

По-моему, дело в том, что ФАР консольная программа, а они полностью игнорируют регистр букв. Помнится, когда я писал на Паскале, там тоже все имена передавались заглавными буквами. Так что тут ничего не попишешь.


 
Кен   (2004-01-01 01:45) [5]


> Романов Р.В. © (31.12.03 07:49) [2]
> Тебе занятся нечем? Какая разница в каком виде. Главное
> суть, а не форма...

Если не понимаешь разницы, то спроси, а не "умничай".

Pos("C:\МОИ ДОКУМЕНТЫ", S) <> Pos("C:\Мои документы", S)


> Anatoly Podgoretsky © (31.12.03 09:09) [3]
> Не запускать из Фара

Я знаю. Вы постоянно такие советы даёте. У каждого свой уровень.


> Agent13 (31.12.03 12:35) [4]
> По-моему, дело в том, что ФАР консольная программа, а они
> полностью игнорируют регистр букв. Помнится, когда я писал
> на Паскале, там тоже все имена передавались заглавными буквами.
> Так что тут ничего не попишешь.

Дело в том, что DirectoryExists() показывает что такая папка есть независимо от регистра букв. Поэтому задача, каким то образом играясь с файловыми функциями, используя неправильное имя, получить правильное.


 
Nous Mellon   (2004-01-01 01:59) [6]


> каким оно является на самом деле с учётом заглавных и строчных
> букв.

а каким образом программа должна узнать каким оно является на самом деле?
> Я знаю. Вы постоянно такие советы даёте. У каждого свой
> уровень.

Каков вопрос таков и ответ.


 
Кен   (2004-01-01 02:05) [7]


> Nous Mellon © (01.01.04 01:59) [6]
> Каков вопрос таков и ответ.

Знаешь ответ - отеветь. Не знаешь - иди в форум Потрепаться он как раз и создан для любителей потрепаться.


 
Германн   (2004-01-01 05:48) [8]

2 Кен © (01.01.04 02:05) [7]
Может отделим мух от котлет?
Сравнение строк в программе и сравнение имен файлов(каталогов) в системе есть "две большие разницы".
Строки в программе ты можешь сравнивать используя какие-либо варианты функции переводящие все буквы строки в один регистр, неважно верхний или нижний.
А для системы(ограничимся Windows) абсолютно до лампочки регистр букв.


 
Anatoly Podgoretsky   (2004-01-01 11:21) [9]

Правильное то, которое отдает система, а не то которое тебе нравится, а так как ты знаешь, что при запуске из Фара ты получаешь другое имя, которое тебе не нравится, то путь один не запускать из Фара.
И твое Pos("C:\МОИ ДОКУМЕНТЫ", S) <> Pos("C:\Мои документы", S), ни как тебе не поможет, поскольку система не знает какое тебе нравится. Совет как поступить тебе дали, но придется пойти против своих принципов.


 
VMcL   (2004-01-01 20:09) [10]

>> Кен © (31.12.03 01:06)

function GetLongFileNameWOPath(const AFileName: String): String;
var
Info: TSHFileInfo;
begin
if SHGetFileInfo(PChar(AFileName), 0, Info, SizeOf(Info),
shgfi_DisplayName) = 0 then
Result := ExtractFileName(AFileName)
else
Result := StrPas(Info.szDisplayName);
end;


 
Dimaz-z   (2004-01-01 20:40) [11]

Pos(UpperCase(Strng), S) <> Pos(UpperCase(Str), S)


 
Кен   (2004-01-05 03:16) [12]


> Dimaz-z © (01.01.04 20:40) [11]
> Pos(UpperCase(Strng), S) <> Pos(UpperCase(Str), S)

То есть, вместо того, чтобы обезглючить одну единстуенную функцию, надо проанализировать несколько мегабайтов кода, отыскивая места, где глюк может проявиться ?
Гнать надо таких программистов. В три шеи.


> VMcL © (01.01.04 20:09) [10]
> >> Кен © (31.12.03 01:06)
>
> function GetLongFileNameWOPath(const AFileName: String):
> String;

Работает. Но частично. Если её вызвать, как GetLongFileNameWOPath("C:\МОИ ДОКУМЕНТЫ"), то получим "Мои документы", но без "С:" . Также, если путь слишком длинен, то к нужному виду преобразуется только последняя папка, а все придыдущие так и остаются в верхнем регистре.


 
Романов Р.В.   (2004-01-05 06:11) [13]


> То есть, вместо того, чтобы обезглючить одну единстуенную
> функцию, надо проанализировать несколько мегабайтов кода,
> отыскивая места, где глюк может проявиться ?
> Гнать надо таких программистов. В три шеи.


У надежной программы на входе каждой процедуры происходит проверка переданных параметров на вход в допустимый диапазон.

Программу которая не понимает что название папки "C:\МОИ ДОКУМЕНТЫ"и "C:\Мои документы" одно и тоже нужно выбрасить как вредоносную, а программиста в сибирь на лесоповал и 20 лет не подпускать к компьютеру.


 
Zergling   (2004-01-05 08:03) [14]

LOL :-). Забавная ветка.


 
Anatoly Podgoretsky   (2004-01-05 08:40) [15]

Кен © (05.01.04 03:16) [12]
Гнать в три шеи.


 
clickmaker   (2004-01-05 11:55) [16]

H := FindFirstFile("C:\МОИ ДОКУМЕНТЫ", wfd);
if (H <> INVALID_HANDLE_VALUE) then begin

ShowMessage(wfd.cFileName);
Windows.FindClose(H);
end;


 
VMcL   (2004-01-05 13:19) [17]

>> Кен © (05.01.04 03:16) [12]

Согласен с Anatoly Podgoretsky © (05.01.04 08:40) [15]

Я привел базовую функцию. Может догадаешься сам, как с ее помощью отпарсить бэкслеши ("\") и составить полный путь... или тебе написанную функцию "на блюдечке с голубой каемочкой"?


 
Voice   (2004-01-05 15:03) [18]

Че вы так взъелись на Кена? :) У чела просто настроение плохое. МоШт у него заказ горит, а вы вот так... Надо проще и снисходительнее (в такой ситуации) относиться к людям (их это начинает бесить еще больше, потом они срываются..... а чуть позже успокаиваются, т.к. понимают свою ошибку). Психология, понимаешь!..


 
Stas   (2004-01-05 15:11) [19]

Кен © (31.12.03 01:06)
Ты объясни толком что тебе нужно


 
Романов Р.В.   (2004-01-05 15:15) [20]


> Voice (05.01.04 15:03) [18]


Мошт у нас тоже настроение плохое.


 
Александр из Минска   (2004-01-05 15:42) [21]

У меня такая же проблема. Я сделал что-то похожее на свой инсталятор, и когда я определяю текушую директорию (для установки в какой-то каталог, из которого и была запущена программа-инсталлятор), то мне выдают все прописные буквы. Это не очень красиво, как мне кажется. Текущию директорию беру так: ExtractFileDir(Application.ExeName); ВОПРОС: Как это привести к нормальному виду???


 
Александр из Минска   (2004-01-05 15:42) [22]

Запускаю чисто из Винды (без всяких ФАР и т.д.)


 
Voice   (2004-01-05 15:42) [23]

ну не надо же его на других срывать
ЗЫ. Это и к Кену относится...
Я вот например вчера на санках катался :)))) Детство вспомнил. И другим советую. Разрядка отличная, главное, кампанию подобрать :)))))


 
Old_monkey   (2004-01-05 15:43) [24]

Что ерунду пороть... Просто берешь, переименовываешь во что-нибудь совершенно постороннее. А затем это совершенно постороннее переименовываешь в то, что нужно. FAR, действительно позволяет себе фокусы, если имя набрано в одном регистре, но если набрать именно Мои документы - все будет Ok.


 
Кен   (2004-01-08 01:04) [25]


> VMcL © (05.01.04 13:19) [17]
> или тебе написанную функцию "на блюдечке с голубой каемочкой"?

Ага ! :)


> clickmaker © (05.01.04 11:55) [16]

На самом деле, мне не очень нравится подход, когда надо по сорок раз вызывать FindFirstFile. Хотелось это как нибудь одним махом, одной функцией сделать.


 
VMcL   (2004-01-08 17:10) [26]

>>Кен © (08.01.04 01:04) [25]
>Ага ! :)

А может еще и ключи от квартиры, где деньги лежат?

Пиши скока платишь, там посмотрим. Я свой интеллектуальный (гы:) труд на шару раздавать не намерен.


 
Александр из Минска   (2004-01-08 17:41) [27]


> VMcL

Какого хрена тогда отвечаешь на вопросы?


 
Кен   (2004-01-09 01:18) [28]


> VMcL © (08.01.04 17:10) [26]
> >>Кен © (08.01.04 01:04) [25]
> >Ага ! :)
>
> А может еще и ключи от квартиры, где деньги лежат?

Нет.


> Пиши скока платишь,

Фривэя и опенсорц. В порядке благотворительности.


 
ЮЮ   (2004-01-09 06:38) [29]

может поможет тот факт, что
AnsiCompareText("C:\МОИ ДОКУМЕНТЫ", "C:\Мои документы") = 0,
т.е. строки идентичны


 
VMcL   (2004-01-09 14:14) [30]

>> Александр из Минска © (08.01.04 17:41) [27]
Это тупой наезд. Я ответ дал: VMcL © (01.01.04 20:09) [10]
Если у Кена не хватает умения для работы со строками (отпарсить бэкслеши), то это уже его проблемы.

>> Кен © (09.01.04 01:18) [28]
В порядке благотворительности пишу freeware, но не open source. Вот так вот.


 
Кен   (2004-01-10 02:17) [31]


> VMcL © (09.01.04 14:14) [30]
> Если у Кена не хватает умения для работы со строками (отпарсить
> бэкслеши), то это уже его проблемы.

Для себя я это давно сделал, только с использование своих собственных строковых функций, поэтому не выкладываю.
И потом, я же говорю, что мне не нравится сам подход, когда надо по 40 раз вызывать FindFirst. А если много раз надо узнавать путь, то что каждый раз будет по 40 ФайндФёстов вызываться ? Подход плохой.


 
VMcL   (2004-01-11 02:46) [32]

>> Кен © (10.01.04 02:17) [31]

У меня полная функция работает, вызывая в цикле GetLongFileNameWOPath из VMcL © (01.01.04 20:09) [10]



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

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

Наверх





Память: 0.52 MB
Время: 0.01 c
1-63148
Sirakuz
2004-01-07 02:28
2004.01.20
Обращение к private переменным класса из ассемблерной вставки


14-63397
olookin
2003-12-27 17:04
2004.01.20
Не всякий текстовый файл является текстовым...


6-63281
Mamed
2003-11-18 10:30
2004.01.20
MAPIMail


1-63066
Petrovich
2004-01-08 16:08
2004.01.20
Как вставить пустую строку в INI-файл?


1-63057
Кен
2003-12-31 01:06
2004.01.20
Как преобразовать имя из C: МОИ ДОКУМЕНТЫ в C: Мои документы ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский