Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Вниззапуск консольной утилиты с передачей ей параметра в OEM Найти похожие ветки
← →
antonn © (2010-01-06 19:18) [0]Деградирую :)
Столкнулся с такой ерундой: нужно запустить консольную утилиту (допустим это архиватор tar или arj, не суть важно) и передать ей строковый параметр (путь к файлу) содержащий нелатиницу (C:\123\Новая папка\).
Пишу батник в кодировке ДОС, запускаю, программа выполняется корректно.
В своей программе запускаю архиватор через ShellExecute(), в четвертном параметре передаю строку обоработанную CharToOem() - но архиватор "не архвирует" (строку сохраняю в файл, проверяю в far - путь тот же самый что и в батнике, в блокноте каракули). Переимновываю текстовый файл с сохраненной строкой в bat, запускаю - он отрабатывает нормально :)
Есть подозрение что ему где то строка не в ОЕМ приходит или архиватору так не кажется.
Нет ли тут граблей которых я еще не пробывал лбом? :)
← →
antonn © (2010-01-06 19:25) [1]
> В своей программе запускаю архиватор через ShellExecute(),
> в четвертном параметре передаю строку обоработанную CharToOem()
почему возникла такая мысля - потому что "обычная строка" тоже не проходила
← →
antonn © (2010-01-06 19:31) [2]всем спасибо, затык нашел - программа использует только короткие имена файлов :)
← →
sniknik © (2010-01-06 19:36) [3]> возникла такая мысля
да кому нужны твои домыслы, когда достаточно всего пару строк с фактами, типа - так ... в ... работает, а так ... в .... нет.
> программа использует только короткие имена файлов :)
чушь.
← →
sniknik © (2010-01-06 19:39) [4]займемся телепатией
http://delphimaster.net/view/1-1261051643/
← →
antonn © (2010-01-06 19:42) [5]
> чушь.
не-а :)
← →
antonn © (2010-01-06 19:52) [6]
> да кому нужны твои домыслы, когда достаточно всего пару
> строк с фактами, типа - так ... в ... работает, а так ..
> . в .... нет.
факты:procedure TForm1.Button1Click(Sender: TObject);
var param_str,file_arc_out,ex,file_pack:string;
begin
file_arc_out:=direc+"11111.arj";
//работает
file_pack:=direc+"12345678\sch.gif";
file_pack:=direc+"мама\sch.gif";
file_pack:=direc+"short\sch.gif";
//не работает
file_pack:=direc+"мамамылараму\sch.gif";
file_pack:=direc+"thelongenglish\sch.gif";
param_str:="a ""+file_arc_out+"" ""+file_pack+""";
ShowMessage(param_str);
ex:=direc+"ARJ.EXE";
ShellExecute(Handle , nil, PChar(ex) , PChar(param_str) , PChar(extractfilepath(ex)), SW_SHOW);
end;
вот такая вот чушь...
← →
Кука съела ник (2010-01-06 19:56) [7]небось 16-битная arj ?
← →
antonn © (2010-01-06 19:58) [8]
ARJ v 2.78, Copyright (c) 1998-2004, ARJ Software Russia. [23 Jun 2005]
там кроме нее все выданные мне древние консольные штукенции не понимают имена файлов и папок больше 8-ми символов, хотят GetShortPathName()
← →
Anatoly Podgoretsky © (2010-01-06 20:23) [9]> Кука съела ник (06.01.2010 19:56:07) [7]
А разве есть под виндоус?
← →
тоже тест (2010-01-06 20:50) [10]Anatoly Podgoretsky © (06.01.10 20:23) [9]
есть arj32 (консольная), длинные имена папок в кавычках обрабатывает
← →
sniknik © (2010-01-06 21:44) [11]> вот такая вот чушь...
а теперь с tar на бис
> допустим это архиватор tar или arj, не суть важно
и кроме того, если прога 16 битная
> не понимают имена файлов и папок больше 8-ми символов
то как же
> Пишу батник в кодировке ДОС, запускаю, программа выполняется корректно.
?
ты же в начале говорил, что в батнике работает, а в программе нет, т.е. одно и тоже должно быть имя, там и там, из того что в [0] понял.
не понятно? ты привел свои выводы, без исходных данных, причем выводы путанные и противоречивые, как тебя должны понимать?
так что все таки чушь, либо программа не понимает длинных имен, и тогда не работает с ними и там и там, или (если все как ты говорил, в батнике работает а в программе нет) то у тебя ошибка в программе. третьего не дано.
← →
antonn © (2010-01-06 21:46) [12]Да все это чушь, успокойся. Уже все решилось, не смотря на то что это чушь.
Занимательный способ начать беседу...
← →
Anatoly Podgoretsky © (2010-01-06 23:08) [13]Чушь так обсуждать. Вне зависимости занимательно это или нет.
← →
antonn © (2010-01-06 23:35) [14]Да тут и обсуждать нечего, причину неработоспособнсоти программы я привел, нетрудно прикинуть что первоначальные изыскания просто неверны :)
← →
sniknik © (2010-01-07 13:03) [15]вообще то вопросы задают чтобы понять причину, а не по причине понимать, что вопрос "кривой".
и как говорил, на твои изыскания всем плевать... если бы они что то значили то и вопроса бы не было. сразу, а не после других "изысканий".
в вопросе должны быть исходные данные, причем точные без всяких "допустим", и что ты с ними делал, а не твои "подозрения".
p.s. есть такое желание вынести это в правила, т.е. вопросы без сути/данных попросту закрывать...
← →
antonn © (2010-01-07 14:21) [16]Для того чтобы попросить точные данные, а именно попросить меня уточнить вопрос - можно обойтись без фраз "никому не нужны твои домыслы". Это первое, второе - я уже опубликовал в чем именно у меня был затык, т.е. я решил задачу, оттестил ее и отписался в теме. Если она расходится с сабжем можно сделать вывод что я просто "не туда копал". Но ошибку нашел, и даже написал что ее нашел, дабы не мучать чужие телепаторы. Однако после того как я написал в чем у меня был косяк мне идет ответ "Чушь", конечно чушь, ведь я на самом деле ничего не решил, и проблема у меня в другом и тд. и тп, и мастер лучше знает. Потому что двоичный взгляд видит первый пост, и он расходится с третьим, а у первого, наверное, приоритет выше.
> p.s. есть такое желание вынести это в правила
а можно еще прочитать описание этого форума, я не зря пишу все вопросы в начинающие, потому что тут много двоичных программистов:Конференция для начинающих, а также для тех, кому сложно объяснить чего он хочет. Просьба к участникам быть взаимовежливыми, профессионалам отдельная просьба - быть снисходительными.
обожаю эти юридические тонкости, так вот мне было сложно объяснить чего я хотел, и была просьба быть снисходительным к такому новичку как я :)
← →
sniknik © (2010-01-07 14:55) [17]> идет ответ "Чушь"
они и есть чушь, до сих пор, т.к. вопрос был в общем, не про конкретную программу
> допустим это архиватор tar или arj, не суть важно
т.е. не важно какую. почему бы не взять winrar для теста?.
если было бы указано точно, типа "использую arj", то короткие имена что то бы конкретизировали, но в общем, тем более первым стоит tar который из пришел из линукса и вроде никогда и не был 16 разрядным... (имхо, не охота искать).
в общем вопрос до сих пор не решен.
> ведь я на самом деле ничего не решил
именно. заданный вопрос ты не решил. ты решил свою частную проблему, про которую в вопросе ничего не было написано.
> быть снисходительным к такому новичку как я :)
да я просто "капитан снисходительность", все пытаюсь объяснить, что неверно в задаваемых тобой вопросах, а ты все в штыки, и ответные "наезды", вместо того чтобы просто принять к сведению и учесть при задании следующего вопроса.
← →
antonn © (2010-01-07 16:04) [18]
> они и есть чушь, до сих пор, т.к. вопрос был в общем, не
> про конкретную программу
повторяю - программа у меня не работала потому что она понимает только короткие пути к файлам. точка :) Три программы (arj и tar архиваторы, и неизвестная утилита gmdc_rep.exe), эти три программы не нуждались в ОЕМ, они не работали лишь из-за того что в параметрах нужно передавать короткие пути к файлам. И моей ошибкой было лишь малое количество проведенных тестов, и желанием чтобы мне подсказали о наличие широкоизветсных граблей о которых я могу не знать. Этими граблями оказались короткие пути для выданных мне дос-утилит. И помоему я мозг никому не мучал, озвучил в чем был реальный затык, что заняло минут 10-15. И после того как я отписался о решении своих проблем (не ответе на сабж! а решении проблемы неработоспособности) мне начинают отвечать :)
> т.е. не важно какую. почему бы не взять winrar для теста?
> .
"не суть важно" написано в первом посте. К "не суть важно" не относиться текст из третьего поста. Т.е. к программам "не суть важно каким" не относится решение "короткие пути к файлам".
> ты решил свою частную проблему, про которую в вопросе ничего
> не было написано.
потому что "я не туда копал". Все просто, не правда-ли? :)
Но! "затык нашел - программа использует только короткие имена файлов" помоему отчетливо говорит в чем была причина, и следовательно я ошибался в первоначальных исследованиях. Но мне начинают объяснять, что "короткие имена" не являются решением сабжа (даже если бы проблема такая существовала). Капитан Очевидность? :) да, я вижу, что сабжевая проблема не решаема "короткими путями", потому что это другая проблема. Которую я решил, о чем и сообщил тут.
> все пытаюсь объяснить, что неверно в задаваемых тобой вопросах,
Довольно резким тоном, м/у прочим, пытаешься объяснить. То в некоторых ветках слышется "А ты просто подумай как это может быть", а в этой "никого не волнует что ты там думаешь" :)
А сейчас я вижу оправдания своему поведению, и нежелание признать, что "чушь" было лишним словом.
← →
antonn © (2010-01-07 16:06) [19]
> да, я вижу, что сабжевая проблема не решаема "короткими
> путями", потому что это другая проблема. Которую я решил,
> о чем и сообщил тут.
решил "короткие пути", разумеется
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.005 c