![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
У меня два текстовых файла f1 в котором по порядку
идут пути к файлам , которые нужно переименовать, вот так они выглядят E:\Recoverd_doc_file(1).doc E:\Recoverd_doc_file(2).doc Во втором файле имена на которые нужно поменять, например drivers, music оставив прежнее расширение *.doc и тд. Но цикл останавливается на первом переименовании, как буд-то он вообще отсутствует, хотя поидее он должен продолжаться до тех пор, пока в первом текстовом файле не кончаться все строки. Код:
procedure TForm1.Button4Click(Sender: TObject); var lastname:string; begin AssignFile(f1, 'c:\1.txt'); // назначаю файлы со строковыми данными Reset(f1); AssignFile(f2, 'c:\2.txt'); Reset(f2); try while not EOF(f1) do begin // цикл который считывает все строки из 1 файла пока они не закончатся в buf ,а так же из 2 файла в name readln(f1, buf); readln(f2, name); lastname:=chosenDirectory+'\'+name+'.doc'; //преобразую путь+имя для переименования, для этого беру строку с путем к директории где он лежит+\+имя файла из второго тектовика и добавляю расширение RenameFile(buf,lastname ); //переименовываю файлы end; finally Closefile(f1); Closefile(f2); end; |
|
#2
|
|||
|
|||
|
хм вроде все правильно написано.
а если пошагово выполнять может где недочёт какой выясниться? А вот chosendirectory чему равен? случайно не ExtractFilePath(...) ? а то тогда после него эта часть + '\' не нужна |
|
#3
|
|||
|
|||
|
Вот и я в растеряности, цикл не повторяется, только одно переименовывание и всё А chosendirectory я беру из неадекватной функции
Код:
if SelectDirectory('Выберите каталог', 'e:\', chosenDirectory)
then ...ExtractFilePath(...) |
|
#4
|
||||
|
||||
|
Исходники, пожалуйста.
Если не хочешь сюда выкладывать, пиши в личку, но лучше на всеобщее обозрение, чтоб потом у кого подобного рода проблема возникнет, знал в чем дело. Последний раз редактировалось Ildar-tsr, 14.10.2011 в 15:29. |
|
#5
|
|||
|
|||
|
Мне вообще исходников не жалко, просто там много
Код:
unit Unit1;
interface
uses
Windows,ComObj, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,FileCtrl, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Button2: TButton;
Button3: TButton;
Edit3: TEdit;
Label4: TLabel;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
chosenDirectory:string;
f1:textfile;
f2:textfile;
nach:integer;
kon:integer;
filepath:string;
fcounter:integer;
kolfilov:integer;
kolstrok:integer;
i:integer;
stroka:string;
listslov:array [1..20] of string;
text:string;
sob:string;
co:integer;
counterslov:integer;
w:variant;
buf:string;
name1:string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
try
if SelectDirectory('Выберите каталог', 'e:\', chosenDirectory)
then label1.Caption:=chosenDirectory
finally
AssignFile(f1, 'c:\1.txt');
Rewrite(f1);
nach:=strtoint(edit1.text);
kon:=strtoint(edit2.text);
kolfilov:=(kon-nach)+1;
try
for I := 1 to kolfilov do
begin
filepath:=chosenDirectory+'\'+'Recoverd_doc_file('+ inttostr(fcounter) +').doc';
label2.Caption:=filepath;
label3.Caption:='vsego'+inttostr(kolfilov);
writeln(f1,filepath);
inc (fcounter);
end;
finally
Closefile(f1);
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
AssignFile(f1,'c:\1.txt');
Reset(f1);
AssignFile(f2, 'c:\2.txt');
Rewrite(f2);
i:=1;
//text:='huy';
try
while not EOF(f1) do
begin
try
readln(f1, stroka);
W:=CreateOleObject('Word.Application');
W.Documents.Open(stroka);
co:=1;
for I := 1 to counterslov do begin
text:=listslov[co];
inc(co);
W.Visible:=true;
W.Selection.WholeStory;
W.Selection.Find.Forward:=true;
W.Selection.Find.Text:=text;
W.Selection.Start:=0;
W.Selection.End:=0;
sob:=text;
if W.Selection.Find.Execute then write(f2, sob); //ShowMessage('Hello World');
sleep(1000);
end;
finally
write(f2, '_'+#13#10);
W.ActiveDocument.Close;
end;
end;
finally
Closefile(f2);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listslov[counterslov]:=edit3.Text;
inc(counterslov);
edit3.Clear;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
konv:string;
lastname:string;
dlina:integer;
begin
AssignFile(f1, 'c:\1.txt');
Reset(f1);
AssignFile(f2, 'c:\2.txt');
Reset(f2);
try
while not EOF(f1) do begin
readln(f1, buf);
readln(f2, name1);
lastname:=chosenDirectory+'\'+name1+'.doc';
label1.Caption:=lastname;
RenameFile(buf,lastname );
end;
finally
Closefile(f1);
Closefile(f2);
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
RenameFile('C:\Intel\Recoverd_doc_file(1).doc', 'NewName.rar');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fcounter:=1;
counterslov:=1;
i:=1;
co:=1;
end;
end.
|
|
#6
|
||||
|
||||
|
Ну посмотрел в общем. Единственное что в голову приходит так это расширение доковских файлов. Если сохранен в Word'е 2003 и старше, то расширение .docx, и следовательно у тебя ничего не меняется.
Советую сделать следующее: Код:
if not FileExists(buh) then //если не .doc, то приписываем х =) buh:= buh+'x'; RenameFile(buf,lastname ); //переименовываю файлы Последний раз редактировалось Ildar-tsr, 14.10.2011 в 17:23. |