Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.10.2011, 04:14
kriv0y kriv0y вне форума
Новичок
 
Регистрация: 20.02.2011
Адрес: Луганжелес
Сообщения: 60
Версия Delphi: 7.
Репутация: 10
По умолчанию Цикл переименования файлов

У меня два текстовых файла 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  
Старый 14.10.2011, 08:47
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

хм вроде все правильно написано.
а если пошагово выполнять может где недочёт какой выясниться?
А вот chosendirectory чему равен? случайно не ExtractFilePath(...) ? а то тогда после него эта часть + '\' не нужна
Ответить с цитированием
  #3  
Старый 14.10.2011, 14:57
kriv0y kriv0y вне форума
Новичок
 
Регистрация: 20.02.2011
Адрес: Луганжелес
Сообщения: 60
Версия Delphi: 7.
Репутация: 10
По умолчанию

Вот и я в растеряности, цикл не повторяется, только одно переименовывание и всё А chosendirectory я беру из неадекватной функции
Код:
if SelectDirectory('Выберите каталог', 'e:\', chosenDirectory)
  then ...
другой не нашёл, что бы путь к директории получать, вот щас помотрю твой
ExtractFilePath(...)
Ответить с цитированием
  #4  
Старый 14.10.2011, 15:20
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Исходники, пожалуйста.
Если не хочешь сюда выкладывать, пиши в личку, но лучше на всеобщее обозрение, чтоб потом у кого подобного рода проблема возникнет, знал в чем дело.
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 14.10.2011 в 15:29.
Ответить с цитированием
  #5  
Старый 14.10.2011, 15:59
kriv0y kriv0y вне форума
Новичок
 
Регистрация: 20.02.2011
Адрес: Луганжелес
Сообщения: 60
Версия Delphi: 7.
Репутация: 10
По умолчанию

Мне вообще исходников не жалко, просто там много

Код:
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  
Старый 14.10.2011, 17:16
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Ну посмотрел в общем. Единственное что в голову приходит так это расширение доковских файлов. Если сохранен в Word'е 2003 и старше, то расширение .docx, и следовательно у тебя ничего не меняется.

Советую сделать следующее:
Код:
if not FileExists(buh) then //если не .doc, то приписываем х =)
  buh:= buh+'x';
RenameFile(buf,lastname ); //переименовываю файлы
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 14.10.2011 в 17:23.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025