У меня такой вопрос:
Программа написанная в делфи считывает файл, который перед этим преобразовывается другой программой, эта дополнительная программа запускается по событию через делфи программу. Получается что по нажатию кнопки в прге написанной на делфи запускается дополнительная программа на диске и преобразовывает файл формата 1 (например) в файл формата2, и только затем программа написанная на делфи считывает файл (формата 2). Получается что название файла для подпрограммы должно быть четко фиксированным, а самой прогой которая в делфи написана надо открывать файлы любого названия, но так как она использует перед открытием подпрограмму, этого сделать не получается. Вот что я придумал, при запуске основной программы (делфи) переименовывать файл нужный для открытия в то зафиксированное имя, нужное для работы подпрограммы. Как это можно сделать?
AlexSCH, я не понял, в чем проблема? Ты просто не знаешь, как переименовать файл?
Var f: File;
...
Assign(f, old_name);
Rename(f, new_name);
не просто переименовать.
Ситуация такая, что нажав кнопку загрузить на форме, появляется диалоговое окно, где предлагается выбрать какой же файл загружать, так вот в тот момент когда я выбераю файл формата1, должно вот что произойти: этот файл который я выбираю, с помощью диалогового окна, нужно переименовать, чтобы он назывался так как это прописано в подпрограмме, которая уже в свою очередь преобразует его в формат2. просто я не знаю как связать вот тот выбор (клик) на файле в диалоговом окне выбора и какой-то переменной в делфи. просто файлов будет много и как то конкретно связать не получается, выходит что вот кликнул ты на файле и как то надо узнать (для основной программы) его имя, чтобы переименовать.
Ну, если ты пользуешься TOpenDialog, то у него есть метод FileName, а вообще знаешь, что? Приведи код, и укажи, что ИМЕННО с чем ИМЕННО ты не можешь связать, почему КТО-ТО ДРУГОЙ должен догадываться, как и что с чем у тебя связано???
а может передавать в запускаемую программу имя файла?
Действительно никто не знает как это делается?
нужно чтобы при открытии через opendialog программа переименовывала открываемый файл
Помогите пожалуйста.
// процедура копирования файла
procedure CopyFile(Source, Destination: string);
var
FromF, ToF: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;
begin
AssignFile(FromF, Source);
reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
while FileLength > 0 do begin
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
end;
CloseFile(FromF);
CloseFile(ToF);
end;
If OpenDialog1.Execute
then begin
Test:=OpenDialog1.FileName;
CopyFile(Test,'hex.hex'); // <--
............
Memo1.Lines.LoadFromFile("pb.txt");
end;
end;
На строке
CopyFile(Test,'hex.hex');
выдает ошибку [Error] Unit1.pas(250): Incompatible types: 'String' and 'PAnsiChar'
я так понимаю тут что-то с типами неувязка, как быть?
Test объявлена как string, с самого начала была.
Если пишу
CopyFile(OpenDialog1.FileName,'hex.hex');
выдает такую же ошибку про несовместимость типов 'String' and 'PAnsiChar'
CopyFile(pchar(OpenDialog1.FileName),'hex.hex',true);
Люди, вы чего ерундой откровенной занимаетесь?
Зачем переименовывать, копировать.....
Есть такие вещи как hardlink-жесткие ссылки. Создать временно жёсткую ссылку на файл и всё!
Апишка: CreateHardLink
Примечание: этот способ будет работать на NTFS.
Жёсткую ссылку можно удалить как обычный файл.
Большое всем спасибо (особенно Malice) за оказанную помощь, все заработало как требовалось.