Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2011, 00:55   #1
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию Скопировать в новый файл

Здравствуйте, как осуществить?
есть файл - 'old.txt' с содержимым
Код:
Time 022557
Name Accessdb
Type txt
Size (bytes) 1 850

Time 030518
Name CometBird
Type txt
Size (bytes) 1 970
нужно создать файлы с именами 022557.txt и 030518.txt, т.е. брать имя из Time и с содержимым соот-но в
022557.txt
Код:
Time 022557
Name Accessdb
Type txt
Size (bytes) 1 850
а в
030518.txt
Код:
Time 030518
Name CometBird
Type txt
Size (bytes) 1 970
Желательно кодом. Заранее спасибо.

Последний раз редактировалось мимо; 03.03.2011 в 01:08.
мимо вне форума Ответить с цитированием
Старый 03.03.2011, 01:17   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

TstringList.LoadFromFile(MyFileName );
я так понимаю у фаила есть определеная структура
значит можно будет обрашаца к конкретным строкам TStringList через шаг
если нет то читать строки(ReadString) по очереди проверять есть ли в них слово(Pos('Time', TstringList[x]), и копировать текст(Copy) после него
Код:
  var
    ft: TextFile;

  If not (FileExists('c:\022557.txt')) then                              
  begin                                                          
    AssignFile(FT,'c:\022557.txt');                                        
    Rewrite(FT);                                                 
    CloseFile(FT);
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 03.03.2011, 01:18   #3
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  s: string;
  Time, Name, Type_, Size: string;
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.LoadFromFile('c:\old.txt');
  s := sl.Text;
  i := 1;
  while PosEx('Time ',s,i) <> 0 do
  begin
    sl.Clear;
    i := PosEx('Time ', s, i) + 5;
    Time := Copy(s, i, PosEx(#13, s, i) - i);
    i := PosEx('Name ', s, i) + 5;
    Name := Copy(s, i, PosEx(#13, s, i) - i);
    i := PosEx('Type ', s, i) + 5;
    Type_ := Copy(s, i, PosEx(#13, s, i) - i);
    i := PosEx('Size ', s, i) + 5;
    Size := Copy(s, i, PosEx(#13, s, i) - i);
    sl.Add('Time '+ Time);
    sl.Add('Name '+ Name);
    sl.Add('Type '+ Type_);
    sl.Add('Size '+ Size);
    sl.SaveToFile('c:\'+ Time);
  end;
  sl.Free;
end;
kangreon вне форума Ответить с цитированием
Старый 03.03.2011, 01:19   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Функции AnsiCopy,AnsiPos больше ничего и не надо.
Человек_Борща вне форума Ответить с цитированием
Старый 03.03.2011, 12:44   #5
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

использую AssignFile
Код:
var
temp: TStringList;
...
    while not eof(f) do
    begin
      readln(f,s);

      if (Pos('Time', s) <> 0) then
        begin
          repeat
            temp.Add(Copy(s, 1, Length(s)));
            readln(f,s);
          until (Pos('Time', s) <> 0);
            temp.SaveToFile(name+'.txt');
          end;
...
end;
closefile(f);
но проблемма
- until (Pos('Time', s) <> 0); - нашел следующую нужную строку
- затем идет readln(f,s); и уже if (Pos('Time', s) <> 0) then не срабатывает ( помогите исправить?
мимо вне форума Ответить с цитированием
Старый 03.03.2011, 17:39   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

зачем вам repeat ???
Код:
      if (Pos('Time', s) <> 0) then
        begin
          temp.Add(Copy(s, 1, Length(s)));
          readln(f,s);
          temp.SaveToFile(name+'.txt');
        end;
PS> зря вы не вдумались в мое первое сообшение
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 03.03.2011, 18:59   #7
мимо
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 61
По умолчанию

Нашел я 'Time' и надо скопировать все строки после него до следующего 'Time', т.е. пока не найдем 'Time'

Последний раз редактировалось мимо; 03.03.2011 в 19:03.
мимо вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скопировать файл Razzeeyy C++ Builder 0 01.03.2011 18:20
Как скопировать файл cargo29 Общие вопросы Delphi 3 20.12.2010 17:53
Скопировать из списка в файл xDyPx Общие вопросы C/C++ 7 23.01.2009 02:26
как скопировать файл Scorpeon Общие вопросы Delphi 1 19.04.2007 13:45