PDA

Показать полную графическую версию : AssignFile


khvalera
24-05-2003, 19:20
Задача токая нужно открыть с помощью Delphi текстовый неопределенный по маске файл (v00*.d*) и переименовать в другой.
И еще добавить содержимое одного файла к другому один к одному.

DimSher
26-05-2003, 05:33
khvalera
А в чем проблема?
OpenFile(1) - Readln - OpenFile(2) - Writeln
(в коде конечно не так, но это основная идея)
или какие-то заморочки с проверкой, а тот ли это файл, и т.д.?

noname00.pas
26-05-2003, 11:18
Dmitry Sher
А по-моему были какие-то более умные функции типа Rename. :-)

Boss Linuxoid
26-05-2003, 19:15
khvalera

Как же ты откроешь файл, не зная его имени?



Добавлено:

khvalera

Как же ты откроешь файл, не зная его имени?

khvalera
26-05-2003, 20:30
Извиняюсь сначала не открыть а переименовать!

Левая прога делает файлы типа v01.01.03.*, и естественно дата будет разной
расширение она тулит почему-то тоже разное. Задача моей программы переименовать неизвестные файлы в определенные имена и собрать их содержимое в один файл.  

shurikan
27-05-2003, 01:00
khvalera
Тогда используй FindFirst и FindNext. В Дельфёвом хелпе они хорошо описаны и пример есть. Найдёшь все такие файлы и сольёшь в один. :biggrin:

DimSher
27-05-2003, 13:05
noname00.pas
А по-моему были какие-то более умные функции типа Rename. :-)
Да, но эта функция переименует файл, а надо содержимое добавить в конец другого файла (как я понял ):gigi:

khvalera
30-05-2003, 11:18
Вроде бы заработало!
Теперь может, кто посоветует, как лучше переместить содержимое из одного файла в другой.
И как в Delphi делается задержка на определенное время, аналог Pascal Delay.

DimSher
02-06-2003, 06:00
khvalera
Теперь может, кто посоветует, как лучше переместить содержимое из одного файла в другой.
Посмотри мой первый пост

khvalera
02-06-2003, 15:17
Сразу благодарю всех за помощь, самому пришлось бы искать долго и нудно.
Может кто подскажет еще?
Если файл находится в каталоге, все работает ОК, а если оно появляется после
запуска программы последняя просто невидит его и работает до посинения.  

DirAval:='c:\Aval\Rip\';    
DirWClient:='c:\Agent\Rip\';
DirAgent:='c:\Agent\Rip\';

Data:=Edit1.Text;
FindFirst(DirWClient+'v*.*',Attrs,Files);
OldName:=Files.Name;
If Files.Name <>'v'+Data+'_1.zzz' then
repeat
FindNext(Files);   {на ... он сдался}
until  OldName > '';
NewName:='v'+Data+'_1.zzz';
RenameFile(DirWClient+OldName,DirWClient+NewName);

Что не кото незнает как в Delphi делается задержка???

SyNC
03-06-2003, 00:33
Что не кото незнает как в Delphi делается задержка???
не помню точно, но кажется sleep(...);

shurikan
05-06-2003, 03:22
khvalera
DirAval:='c:\Aval\Rip\'; * *
DirWClient:='c:\Agent\Rip\';
DirAgent:='c:\Agent\Rip\';

Data:=Edit1.Text;
FindFirst(DirWClient+'v*.*',Attrs,Files);
OldName:=Files.Name;

If Files.Name <>'v'+Data+'_1.zzz' then
repeat
*FindNext(Files); * {на ... он сдался}
until *OldName > '';

NewName:='v'+Data+'_1.zzz';
RenameFile(DirWClient+OldName,DirWClient+NewName);

Обрати внимание на OldName, которое инициализируется один раз и больше не изменяется. Так что until ни разу не сработает, а цикл будет бесконечным. И вообще, таким способом все файлы не переименуешь. А тебе, как я понял, нужно именно это. Или файл такой всего один может быть? Если один, то FindFirst тебе его и найдёт, а если их несколько с подобной "маской", то каждый последующий находит FindNext. Files - это запись, которая инициализируется в FindFirst, а потом FindNext использует поля записи для поиска следующего и, если находит, то в Files.Name лежит имя уже другого файла. Почитай хелп и пример, там всё расписано...:gigi:




© OSzone.net 2001-2012