![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Теряются пути... [D7, WinXP]
Juju © (2006-11-02 14:35:00)Задача:
1) Архивировать файлы базы данных.
Папка с файлами DATA
Папка с архиватором (winrar) и куда надо ложить полученный архив ARCHIVE
На самом деле задача проста и выполняется.
CreateProcessA(nil,'Archive/winrar.exe a Archive/aaa DATA/*.mdb',nil,nil,False,CREATE_NEW_CONSOLE,nil,nil,StartInfo ,ProcInfo);( с относительными путями...)
2) Менять файл базы данных налету в программе.
Здесь тоже проблем не возникает. С помощью TFileNameEdit (компонента из библиотеки RX) выбираю файл, меняю его в ConnectionString(ADOConnection) и все отлично работает.
Проблема:
Вышеописанная процедура архивирования работает прекрасно, но до того момента пока не выполнена смена БД. После этого WinRar выдает ошибку, что не найден путь и архивация не выполняется. Более того - все ссылки где указаны относительные пути - не функционируют.
Такое впечатление, что после работы дилога открытия файла метка на текущий каталог меняется и соответственно относительные пути уже строятся с неправильной точки. Если это так - как вернуть метку на текущий каталог обратно... (если это не глупо звучит)?
Пытался решить:
Где возможно поменял относительные ссылки на абсолютные, но остались такие процедуры где мне необходимо указывать относительный путь!
Juju (2006-11-06 20:12:00) [1]С кавычками я понял...
За альтернативный путь kohaспасибо...
В PChar не разочаровался...
Ketmar- отдельное спасибо.
Ketmar (2006-11-05 19:40:00) [2]человеку достаточно прочесть пару строк из документации. где буковками по экрану внятно поясняют, что делать с путями, в которых пробелы.
koha (2006-11-05 19:35:00) [3]Человек должен сего испытать, чтобы понять, что нужно ему, а что не нужно и хорошего держаться.
Virgo_Style (2006-11-05 19:26:00) [4]koha © (05.11.06 19:14) [31]
почему в этой цепочке так мало ненужных функций? Можно еще с десяток не напрягаясь вставить.
Конечно, если цель была в этом.
koha (2006-11-05 19:14:00) [5]может и годится для консольных приложений, но так как-нибудь:
PChar(ExtractShortPathName(trim('C:\Program Files\WinRAR\winrar.exe /? >C:\Program Files\WinRAR\rarhelp.txt'))
Ketmar (2006-11-05 19:02:00) [6]>[28] koha(c) 5-Nov-2006, 18:56
>- то есть функция PChar() не годится.
смени мозги, пожалуйста. и не дезориентируй новичков.
Джо (2006-11-05 18:58:00) [7]Где теряются пути?
Где расходятся дороги?
На рассвете не буди.
И вобще меня трогай...
koha (2006-11-05 18:56:00) [8]> Juju (02.11.06 15:15) [2]
>Дело в том, что при указании абсолютного пути в процедуре >архивирования WinRar тоже вылетает с ошибкой "не найден путь...".
>Может потому что в пути есть пробелы?
Да потому, что в пути есть пробелы!
Стакой проблемой я уже тоже сталкивался. В твоем случае этот параметр не канает:
PChar(PATH+'Archive/winrar.exe a '+PATH+'Archive/aaa '+PATH+'DATA/*.mdb')
- то есть функция PChar() не годится.
я использую другой споб и все работает:
var
AppName: array[0..512] of Char;
FileName: string;
...................
...................
FileName: 'любой путь';
StrPCopy(AppName, FileName);
CreateProcessA(nil,AppName,nil,nil,False,CREATE_NEW_CONSOLE,nil,nil,StartInfo ,ProcInfo);
.....................
После этого у меня консольные программы не теряют пути
Juju (2006-11-05 14:12:00) [9]Anatoly Podgoretskyно ведь работает!
(я конечно переписал слеши, но до этого тоже работало).
Anatoly Podgoretsky (2006-11-05 00:45:00) [10]Системе точно пофиг, работать не будет, но системе все равно пофиг.
Это наш человек, но нам пофиг.
Juju (2006-11-04 23:55:00) [11]Ketmarполностью поддерживаю. +1.
Так что на этот раз автору не по... а системе по...
Ketmar (2006-11-04 23:26:00) [12]>[21] MetalFan_pda 4-Nov-2006, 11:27
>а системе разве пофиг
пофиг.
Juju (2006-11-04 17:11:00) [13]Anatoly Podgoretsky
> Системе не пофиг, это автору пофиг
Спасибо за укол.
MetalFan_pda
У автора работает. Думаю что в данном случае:
>системе разве пофиг,что в пути слэши и прямые и обратны?
Сомневающимся- можете протестировать.
Anatoly Podgoretsky (2006-11-04 11:41:00) [14]Системе не пофиг, это автору пофиг
MetalFan_pda (2006-11-04 11:27:00) [15]простите,щаз глупость сморожу)
а системе разве пофиг,что в пути слэши и прямые и обратны? как написнао в [0][1]
Juju (2006-11-04 10:32:00) [16]Ketmarlzmadelphi442-410727-src - выкачал, спасибо - буду разбираться.
Ketmar (2006-11-02 19:43:00) [17]>[18] Juju 2-Nov-2006, 19:32
>А вот за идею с lzma и 7Zip - спасибо
не за что. трансляция lzma на Delphi есть на странице 7-zip. или на моей -- я там объединил кучу модулей в 2. %-)
Juju (2006-11-02 19:32:00) [18]То что архиватор не куплен - конечно плохо, но в частном случае - это не имеет значения
Ketmar
А вот за идею с lzma и 7Zip - спасибо
Ketmar (2006-11-02 18:52:00) [19]>[16] Juju 2-Nov-2006, 18:45
вопрос был (цитирую): "Решение верно?". если архиватор не куплен -- то неверно на 100%.
>в том, как выполняют подобные задачи другие люди.
покупают софт. или используют свободный (например, наплевав на RAR и взяв 7-zip). а лучше -- вмонтировать lzma-компрессор сразу в программу.
Juju (2006-11-02 18:45:00) [20]А то, что возможно архиватор не куплен - так это лукавство! Не с того начинать надо - хорошо если ОС куплена, потом приобретена Delphi, а потом жадность задавит настолько, что вместо программирования устраиваешься в налоговою полицию и делаешь наезды на офисы в поисках нелицензионного ПО!!! И уже там довольно покрякиваешь посматривая на нелицензионные ВинРары-ВинЗипыи т.д....
Ketmarвопрос не в том какой архиватор лучше поставлять со своим ПО..., а в том, как выполняют подобные задачи другие люди.