Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   AssignFile (http://forum.oszone.net/showthread.php?t=30468)

khvalera 24-05-2003 19:20 208765

Задача токая нужно открыть с помощью Delphi текстовый неопределенный по маске файл (v00*.d*) и переименовать в другой.
И еще добавить содержимое одного файла к другому один к одному.


DimSher 26-05-2003 05:33 208766

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

noname00.pas 26-05-2003 11:18 208767

Dmitry Sher
А по-моему были какие-то более умные функции типа Rename. :-)

Boss Linuxoid 26-05-2003 19:15 208768

khvalera

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



Добавлено:

khvalera

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


khvalera 26-05-2003 20:30 208769

Извиняюсь сначала не открыть а переименовать!

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


shurikan 27-05-2003 01:00 208770

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

DimSher 27-05-2003 13:05 208771

noname00.pas
Цитата:

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

khvalera 30-05-2003 11:18 208772

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

DimSher 02-06-2003 06:00 208773

khvalera
Цитата:

Теперь может, кто посоветует, как лучше переместить содержимое из одного файла в другой.
Посмотри мой первый пост

khvalera 02-06-2003 15:17 208774

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

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 208775

Цитата:

Что не кото незнает как в Delphi делается задержка???
не помню точно, но кажется sleep(...);

shurikan 05-06-2003 03:22 208776

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:


Время: 09:07.

Время: 09:07.
© OSzone.net 2001-