Форум: "Основная";
Текущий архив: 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.012 c