Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлом, как проч. ф. по 20 симв. в строках 
:(
    Опции темы
Ddddddelphi
  Дата 7.12.2004, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



имеется текстовый файл как его нужно открывать, чтобы в каждой строке было по 20 символов? smile
PM MAIL   Вверх
~FoX~
Дата 7.12.2004, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Ddddddelphi
smile smile smile
Это как понять то?


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Ddddddelphi
Дата 7.12.2004, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



нужно чтобы тестовый файл делился бы по 20 символов в каждой строке:

файл:
1234567890123456789012345678901234567890
123456789012345678901234567890

вывод:
12345678901234567890
12345678901234567890
12345678901234567890
1234567890
PM MAIL   Вверх
~FoX~
Дата 7.12.2004, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Ddddddelphi

Код

var
 Buf : array [0..19] of Char
 NumRead: Integer;
begin
repeat
       BlockRead('myfile.txt', Buf, SizeOf(Buf), NumRead);
until (NumRead = 0)
end;

Что то в этом роде, точнее читай в хелпе.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Ddddddelphi
Дата 7.12.2004, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



не разобрался - а не подскажешь smile

PM MAIL   Вверх
~FoX~
Дата 7.12.2004, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Ddddddelphi
Что именно тебе не понятно?
Цитата

     
                                                               где читаем
                                                                     |
 BlockRead('myfile.txt', Buf, SizeOf(Buf), NumRead);
                         |            |               |    
           имя файла  куда кладем  скока кладем


Это сообщение отредактировал(а) ~FoX~ - 7.12.2004, 13:24


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Ddddddelphi
Дата 7.12.2004, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



Sizeof(buf) указываю 20 и не получаю чего хочу, а цикл по-моему должен оставаться прежним или ещё один цикл нужен
Код



var
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..20] of Char;
begin
AssignFile(FromF, 'c:\a.txt');
Reset(FromF, 1);
AssignFile(ToF, 'c:\b.txt');
Rewrite(ToF, 1);
repeat
BlockRead(FromF, Buf, sizeof(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0);
CloseFile(FromF);
CloseFile(ToF);

end;

PM MAIL   Вверх
Akina
Дата 7.12.2004, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Боюсь что при блочном чтении в поток попадут переводы строки.

Алгоритм:
Код

Открываем источник на чтение
Открываем приемник на запись
tmpStr1="";
tmpStr2="";
Пока не достигли конца файла-источника
  Читаем строку в tmpStr2
  tmpStr1=tmpStr1 + tmpStr2
  Пока длина tmpStr1 больше 19
     tmpStr2=первые 20 байт tmpStr1
     tmpStr1=все байты tmpStr1 после 20-го
     Пишем tmpStr2
Пишем tmpStr1
Закрываем файлы
Завершаем программу




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ddddddelphi
Дата 7.12.2004, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



да весело читать...... smile
Код

var s1,s2:string;
    f1,f2:textfile;
   begin
assignfile(f1,'beg.txt');
reset(f1);
assignfile(f2,'end.txt');
rewrite(f2);
while not eoln(f1) do
begin
readln(f1,s1);
repeat
s2:=copy(s1,1,5);
writeln(f2,s2);
delete(s1,1,5);
until length(s1)=0;
  end;
  closefile(f1);
  closefile(f2);
  end;
end.


PM MAIL   Вверх
SlaUr
Дата 8.12.2004, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Код

var List1,List2:tstringlist
i1:integer;St1,St2:string;

List1:=TstringList.Create;
List2:=TstringList.Create;

List1.LoadFromFile('c:\myfile.txt');
i1:=0;St1:='';

While i1<list1.Count do
begin
St1:=St1+List1[i1];
While length (St1)>=20 do
  begin
    St2:=Copy(St1,1,20);
    if length(St1)>20 then St1:=Copy(St1,21,length(St1))
    List2.Add(St1);
  end;
Inc(i1);
end;
if St1<>'' then List2.Add(St1);
List2.SaveToFile('c:\myfileNew.txt');
List1.Free;
List2.Free;


Вроде все должно работать

Это сообщение отредактировал(а) SlaUr - 8.12.2004, 06:27
PM MAIL   Вверх
Ddddddelphi
Дата 8.12.2004, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



SlaUr, неа не работает, прсто копирует один файл в другой, а мой котрый я написал перед твоим и было моё решение
- всем сенкс smile
PM MAIL   Вверх
SlaUr
Дата 8.12.2004, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Да не много я не то написал Вот проверенный код:
Код

procedure TForm1.Button1Click(Sender: TObject);
var List1,List2:tstringlist;
i1:integer;St1,St2:string;
begin
List1:=TstringList.Create;
List2:=TstringList.Create;

List1.LoadFromFile('1.txt');
i1:=0;St1:='';

While i1<list1.Count do
begin
St1:=St1+List1[i1];
While length (St1)>=20 do
 begin
   St2:=Copy(St1,1,20);
   if length(St1)>20 then St1:=Copy(St1,21,length(St1)) else St1:='';

   List2.Add(St2);
 end;
Inc(i1);
end;
if St1<>'' then List2.Add(St1);
List2.SaveToFile('2.txt');
List1.Free;
List2.Free;

end;



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.