![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
AlexSCH |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Репутация: ![]() ![]() ![]() |
У меня такой вопрос:
Программа написанная в делфи считывает файл, который перед этим преобразовывается другой программой, эта дополнительная программа запускается по событию через делфи программу. Получается что по нажатию кнопки в прге написанной на делфи запускается дополнительная программа на диске и преобразовывает файл формата 1 (например) в файл формата2, и только затем программа написанная на делфи считывает файл (формата 2). Получается что название файла для подпрограммы должно быть четко фиксированным, а самой прогой которая в делфи написана надо открывать файлы любого названия, но так как она использует перед открытием подпрограмму, этого сделать не получается. Вот что я придумал, при запуске основной программы (делфи) переименовывать файл нужный для открытия в то зафиксированное имя, нужное для работы подпрограммы. Как это можно сделать? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
AlexSCH, я не понял, в чем проблема? Ты просто не знаешь, как переименовать файл?
Var f: File; |
AlexSCH |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Репутация: ![]() ![]() ![]() |
не просто переименовать.
Ситуация такая, что нажав кнопку загрузить на форме, появляется диалоговое окно, где предлагается выбрать какой же файл загружать, так вот в тот момент когда я выбераю файл формата1, должно вот что произойти: этот файл который я выбираю, с помощью диалогового окна, нужно переименовать, чтобы он назывался так как это прописано в подпрограмме, которая уже в свою очередь преобразует его в формат2. просто я не знаю как связать вот тот выбор (клик) на файле в диалоговом окне выбора и какой-то переменной в делфи. просто файлов будет много и как то конкретно связать не получается, выходит что вот кликнул ты на файле и как то надо узнать (для основной программы) его имя, чтобы переименовать. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ну, если ты пользуешься TOpenDialog, то у него есть метод FileName, а вообще знаешь, что? Приведи код, и укажи, что ИМЕННО с чем ИМЕННО ты не можешь связать, почему КТО-ТО ДРУГОЙ должен догадываться, как и что с чем у тебя связано???
|
mj |
![]()
Сообщение
#5
|
![]() Adminь ![]() ![]() ![]() ![]() Группа: Администраторы Сообщений: 803 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
а может передавать в запускаемую программу имя файла?
|
AlexSCH |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну, если ты пользуешься TOpenDialog, то у него есть метод FileName, а вообще знаешь, что? Приведи код, и укажи, что ИМЕННО с чем ИМЕННО ты не можешь связать, почему КТО-ТО ДРУГОЙ должен догадываться, как и что с чем у тебя связано??? В переменную test помещается имя открываемого файла (может быть абсолютно любое), до того как начнется загрузка файла в мемо1, нужно нужно сделать временную копию и переименовать открываемый файл в hex.hex и записать его на диск в эту же директорию с программой, где уже подпрограмма сделает из hex.hex файл PB.txt, который и пойдет в мемо1 То есть в поле ?????? должно быть что-то наподобии: файл"любое имя" по открытию в OpenDialog1-->сделать копию-->переименовать копию в "hex.hex"-->записать на диск в ту же директорию где выполняется программа-->(далее с hex.hex работает подпрограмма, эта часть уже есть)-->удалить копию, переименованную в hex.hex If OpenDialog1.Execute then begin Test:=OpenDialog1.FileName; ?????????????????????????????? Memo1.Lines.LoadFromFile("pb.txt"); end; end; Извиняюсь за неккоректные объяснения в предыдущих постах. Заранее спасибо |
Гость |
![]()
Сообщение
#7
|
Гость ![]() |
Действительно никто не знает как это делается?
нужно чтобы при открытии через opendialog программа переименовывала открываемый файл Помогите пожалуйста. |
Malice |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Действительно никто не знает как это делается? нужно чтобы при открытии через opendialog программа переименовывала открываемый файл Помогите пожалуйста. Насколько я понял из твои объяснений: Цитата сделать копию-->переименовать копию в "hex.hex"-->записать на диск в ту же директорию где выполняется программа Это значит скопировать открываемый файл в "hex.hex". Переименование не знаю для чего ты приплел. И если так, то вот, что тебе надо: // процедура копирования файла Использование в твоем случае: If OpenDialog1.Execute |
AlexSCH |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Репутация: ![]() ![]() ![]() |
На строке
CopyFile(Test,'hex.hex'); выдает ошибку [Error] Unit1.pas(250): Incompatible types: 'String' and 'PAnsiChar' я так понимаю тут что-то с типами неувязка, как быть? |
Malice |
![]()
Сообщение
#10
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
AlexSCH |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Репутация: ![]() ![]() ![]() |
Test объявлена как string, с самого начала была.
Если пишу CopyFile(OpenDialog1.FileName,'hex.hex'); выдает такую же ошибку про несовместимость типов 'String' and 'PAnsiChar' |
Malice |
![]()
Сообщение
#12
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Test объявлена как string, с самого начала была. Если пишу CopyFile(OpenDialog1.FileName,'hex.hex'); выдает такую же ошибку про несовместимость типов 'String' and 'PAnsiChar' Потому, что ты используешь Api-шную функцию CopyFile (про которую я забыл), а не ту, которую привел я. Тогда мою стирай вообще и делай так: CopyFile(pchar(OpenDialog1.FileName),'hex.hex',true); |
hardcase |
![]()
Сообщение
#13
|
![]() code warrior ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: ![]() ![]() ![]() |
Люди, вы чего ерундой откровенной занимаетесь?
Зачем переименовывать, копировать..... Есть такие вещи как hardlink-жесткие ссылки. Создать временно жёсткую ссылку на файл и всё! Апишка: CreateHardLink Примечание: этот способ будет работать на NTFS. Жёсткую ссылку можно удалить как обычный файл. -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
AlexSCH |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Репутация: ![]() ![]() ![]() |
Большое всем спасибо (особенно Malice) за оказанную помощь, все заработало как требовалось.
|
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 17:26 |