Форум » Clipper » Файлы с длинными именами » Ответить

Файлы с длинными именами

wad1: Здравствуйте, господа! Я читал раньше о попытках реализации в Clipper функций, позволяющих работать с файлами, имеющими длинные имена. Имеются в виду DBF и текстовые файлы, которые нужно уметь найти, открыть, создать и модифицировать. Добился ли кто-нибудь устойчивой работы таких функций? И если да, то как получить к ним доступ?

Ответов - 20

leo: Посмотри на Оазисе по ссылке http://www.the-oasis.net/ftpmaster.php3?content=ftplib.htm файл с именем dblfn005.zip. В нем нужная тебе библиотека и исходные тексты. А вообще есть смысл перейти на Harbour. Сам перешел абсолютно безболезненно, при этом исчезли масса проблем. Конечно если нужно GUI, то придется попотеть, но если работать в текстовом режиме, то все аналогично тому, как в Clipper только с кучей новых возможностей!

Nadya: Здравствуйте! Скажи пожалуйста, а есть ли еще способы решения этой проблемы? ОЧЕНЬ НУЖНО!!! Заранее спасибо!

Dima: Nadya пишет: Скажи пожалуйста, а есть ли еще способы решения этой проблемы? В какой операционной системе ?


Nadya: Dima пишет: В какой операционной системе ? Windows XP. А как это может повлиять?

gustow: Аналогично Leo - очень советую перейти на Harbour! Снимается масса "головных болей"... Консольные ("клипперные") приложения (если нет особых "извращений" со сторонними функциями или библиотеками) перекомпилируются практически "влёт"! А потом можно постепенно (сохраняя "логику и математику") переводить прогу (если надо) на "виндоузовский" интерфейс (т.е. на GUI - с окошками, кнопочками, рюшечками). Сам сейчас постепенно перегоняю старые - но до сих пор поддерживаемые нашей конторой - программы (чтобы был и привычный консольный вариант, и - кому надо - "гуёвский"). Да и нет проблем с параллельной работой "старых" клипперных программ и "новых" (вполне поддерживается модель DBFNTX - т.е. "старые" индексы не портятся). А доступных "вкусностей" сразу становится масса!.. Работа с файлами с длинными именами, работа с OLE-объектами (тот же экспорт в Word, Excel, OpenOfficeCalc, PDF... да практически хоть куда), доступ ко всем "кишкам" Винды (захотел - в реестре покопался, захотел - еще что...)... Глаза разбегаются после Клиппера :) Советую!! Я тут ("ветераны" форума, надеюсь, простят повторную рекламу) начал переводить Help от Харбора (точнее для библиотеки MiniGUI - ссылки на нее в этом форуме см. в подфоруме "GUI"). Некоторые "уроки молодого солдата" лежат тут. Гляньте, как просто делается!..

Nadya: Спасибо большое за совет, я бы с радостью....Но перейти на Harbour невозможно по "политическим" причинам... Приходится мучится с тем что есть. А есть такая задача: необходимо в программе клипперной сформировать файл с данными, в имя файла включены разные коды, дата и прочее: в итоге длина файла больше 20 символов...такой вот формат выгрузки...

PSP: Nadya, а dblfn005.zip с Оазиса не подходит? Почему? (я не пробывал, поэтому спрашиваю).

Nadya: Пробывала. Подключила библиотеку, программа вылетает с ошибкой в самом начале работы - при проверке наличия необходимых для работы баз и их структуры.

PSP: Ясно. Тогда запускать стандартную команду ОС rename, которая будет переименовывать файл с данными в нужный формат после его формирования.

gustow: Nadya , прочитайте (если, конечно уже не) внимательно DBLFN.TXT Klas Engwall там пишет:What will it work with? It'll work with any version of DOS. BUT, it will only provide long filenames when running under Windows '95. This means that it will NOT work under DOS 7.00. Nor will it work under NT 4.00 as Microsoft, in their infinite wisdom, saw fit to omit the interrupt calls, even though the OS supports VFAT... <g> Т.е. (как я это понимаю) эта библиотека НЕ работает под ОСами линии "NT" (а XP, в частности, именно такая и есть - последней из "линии DOS" была 98-я). Т.ч. может быть, оно и вообще не будет работать под XP... Проверьте сперва - работает ли оно "в принципе": скомпилируйте его TEST.PRG Если работает "в принципе" - прочитайте (если уже не) в DBLFN.TXT "What still needs fixing/replacing?" (т.е. как открывать DBF-ки с длинными именами: он советует использовать ALIAS) (не знаю - не пробовал). Я пробовал ее (лет несколько назад - пока не наткнулся на Харбор, после чего эти "головняки" пропали с глаз долой) - использовал для чтения-записи в/из текстовые файлы с длинными именами. Все работало (но - повторяю - я пользовал ее под 98-й... т.ч. про XP не знаю, будет ли она там работать).

Nadya: gustow пишет: Тогда запускать стандартную команду ОС rename, которая будет переименовывать файл с данными в нужный формат после его формирования. Пробывала такую команду cmd.exe /c rename короткое_имя_файла длинное_имя_файла Но опять же одно дело выполнить ее в far - все нормально, а из проги - пишет, что под dos нельзя... gustow пишет: Проверьте сперва - работает ли оно "в принципе": скомпилируйте его TEST.PRG Спасибо, попробую, такая мысль не приходила в голову... А переименовать нужно txt, а не dbf, dbf все у меня с короткими именами.

gustow: С "txt" вообще нет проблем! (с использованием этой либы). А вот если захочется базы использовать с длинными именами - тут придется репу почесать :)

Nadya: Вопрос в том, что делать, есть эта библиотека под XP не будет работать? (проверить могу только завтра)

PSP: Nadya пишет: Пробывала такую команду cmd.exe /c rename короткое_имя_файла длинное_имя_файла Но опять же одно дело выполнить ее в far - все нормально, а из проги - пишет, что под dos нельзя... Что "под dos нельзя"? Только что попробывал: RUN ( "c:\windows\system32\cmd.exe /c rename a.txt ДлинноеИмя.txt" ) Переименовалось успешно... :)

gustow: Нет, ну по-всякому можно изгаляться :) Например, слепить Харбором консольную прожку, которая только и будет, что принимать 2 параметра (2 строки): 1) как файл зовется сейчас; 2) как надо его переименовать. Если оба параметра есть - то ищет в текущей папке (а лежат они в одной папке с "основной" прогой) этот файл и переименовывает его (ничего не выводя на экран - "втихушку"). Если обоих (или 2-го) параметров нет или исходного файла нет - ни шиша не делает... Такую слепить - 5 минут :) А клипперовская прога будет вызывать ее как внешнее приложение (через RUN или SWAPCMD() или OVERLAY() [тоже пользую такую - см. на Оазисе либу OSLIB... шибко полезная весчь! и масенькая! только возвращать код завершения работы приложения - ERRORLEVEL - не умеет...]) - давая ей эти строки "хвостом"... Что-то типа: [pre2] file1:="otchet.txt" file2:="Чаеразвесочная фабрика имени Зураба Соткилавы -- Отчет за 2-е полугодие 2009 года.txt" overlay( 'izmena.exe "' + file1 + '" "' + file2 + '"' )[/pre2]...и все дела! Если что - черкайте на рабочий мэйл: gustow (собачятина) miac.utk.ru (это Екатеринбург - т.ч. смотрите на часы :) ) Еще гляньте на интернациональной конференции comp.lang.clipper comp.lang.clipper на Google Groups - вдруг там что подходящее сыщется (с англишом, надеюсь, хотя бы как-то?.. :) ). По аналогии со старым еврейским анекдотом времен массового выезда в Израиль: "Вот вы мне хоть что про Советскую власть говорите - а на Харбор переходить надо!" :) P.S. Пока я тут литературой занимался - PSP провел успешный эксперимент :) Ну дык так вообще элементарно Ватсон!..

Pasha: Nadya пишет: Вопрос в том, что делать, есть эта библиотека под XP не будет работать? (проверить могу только завтра) Не будет работать эта библиотека под nt/2k/xp В этих ОС вызов 71h 21-го прерывания в vm dos не реализован, а именно эта функция обеспечивает работу с lfn

gustow: Спасибо за подсказку, Павел. На всякий случай буду знать (хоть и не использую ее).

Григорьев Владимир: Утверждение Павла является неверным в отношении XP. На XP можно работать с длинными именами. Что касается других ОС, то я за неимением доступа не проверял.

Dima: Григорьев Владимир пишет: Утверждение Павла является неверным в отношении XP Проверял ?

Pasha: Григорьев Владимир пишет: Утверждение Павла является неверным в отношении XP. На XP можно работать с длинными именами. Что касается других ОС, то я за неимением доступа не проверял. Действительно. Заглянул в ветхий завет interrupt list, и там сказано: Caldera's DR-OpenDOS 7.02+ COMMAND.COM utilizes the LFN API as soon as it detects it (mind, that LONGNAME.EXE can be dynamically loaded and unloaded at runtime). This COMMAND.COM shell also works under MS-DOS/PC DOS and in DOS boxes of Windows9x, NT, 2000, and OS/2.



полная версия страницы