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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2012, 00:28   #1
cool_phenomus
 
Регистрация: 30.06.2012
Сообщений: 4
По умолчанию работа с файлами в Паскале/Делфи

Здравствуйте. Есть программа
Код:
uses crt;
var f:file of char;
    nf,t,s:string;
    a,c:char;
    i,j:integer;
    k:integer;
begin
clrscr;
k:=1;
while (k<4464) do
  begin
  t:='file.txt';
  Str(k,s);
nf:=concat(s,t);
assign(f,nf);
{$I-} reset(f);  {$I+}
if IOResult <> 0 then
 begin
  writeLn('file ',nf,' was npt found');
  writeLn('press ENTER');
  readln;
  exit;
 end;
writeln('contents of the file:');
while not eof(f) do
 begin
  read(f,c);
  write(c);
 end;
writeln;
writeln;
seek(f,0);{возвращаемся в начало файла}
i:=0;{начнем с первого элемента, его индекс=0}
while i<filesize(f) do{пока не последний компонент}
 begin
  seek(f,i);{встаем в позицию}
  read(f,c);{читаем символ}
  if c in ['@'] then{если это знак}
   begin
    for j:=filesize(f) downto i+1 do{от конца файла+1 до данный элемет+1}
     begin
      seek(f,j-1);{читаем выше}
      read(f,a);
      seek(f,j);
      write(f,a); {вставляем ниже}
     end;
    a:='"';{присваиваем }
    seek(f,i);
    write(f,a);{запишем на место символа}
    seek(f,i+1);
    write(f,a);{и на 1 впереди}
    i:=i+2; {перешагнем}
   end
  else i:=i+1;{если не знак дальше}
 end;
seek(f,0);
writeln('symbols changed:');
while not eof(f) do
 begin
  read(f,c);
  write(c);
 
 end;
 k:=k+10;
close(f);
readln
end;
end.
Программа рабочая,ищет в папке файлы вида "ifile.txt",где и может меняться до 4400 с лишним. Потом она в каждом файле находит символы "@" и меняет их на """. НО если поменять расширение с .txt на .html и создать такие файлы в директории,то программа вообще их не находит. Подскажите,что в ней или компиляторе нужно изменить,чтобы она читала файлы .html?
cool_phenomus вне форума Ответить с цитированием
Старый 01.07.2012, 01:26   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

ошиблись разделом. Раздел паскаля выше.
Человек_Борща вне форума Ответить с цитированием
Старый 01.07.2012, 02:32   #3
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Вообще тут t:='file.txt'; достаочно изменить на html.

Но я думаю, что проблема в другом. Файлы ищутся не там, где ты ждёшь. Пиши пути полностью.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 01.07.2012, 03:25   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Подскажите,что в ней или компиляторе нужно изменить,чтобы она читала файлы .html?
Pascal - это DOS. DOS - это короткие имена файлов 8 + 3 (8 символов имя и 3 символа - расширение). Какие ещё html?

Код:
C:\>dir /X
 Volume in drive C is Sh_System
 Volume Serial Number is 86AC-4147

 Directory of C:\

2012.05.24  02:43    <DIR>                       DevExpress
2009.10.31  03:07    <DIR>                       inetpub
2010.01.03  21:42    <DIR>                       Lazarus
2011.07.17  08:56    <DIR>                       np_ul
2011.06.01  20:44    <DIR>                       Perl
2012.06.16  23:23    <DIR>          PROGRA~1     Program Files
2012.06.30  01:07    <DIR>          PROGRA~2     Program Files (x86)
2012.04.09  21:45    <DIR>                       Restoration
2012.05.18  00:19    <DIR>                       Temp
2012.06.15  19:58    <DIR>                       Users
2012.06.29  00:12    <DIR>                       Windows
Первая полонка - короткие имена, как они видны старым программам. Ферштейн?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 01.07.2012, 08:15   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Подскажите,что в ней или компиляторе нужно изменить,чтобы она читала файлы .html?
Ее нужно перекомпилировать в Делфи в консольном проекте
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var f:file of char;
    nf,t,s:string;
    a,c:char;
    i,j:integer;
    k:integer;
begin

k:=1;
while (k<4464) do
  begin
  t:='file.txt';
  Str(k,s);
nf:=concat(s,t);
assign(f,nf);
{$I-} reset(f);  {$I+}
if IOResult <> 0 then
 begin
  writeLn('file ',nf,' was npt found');
  writeLn('press ENTER');
  readln;
  exit;
 end;
writeln('contents of the file:');
while not eof(f) do
 begin
  read(f,c);
  write(c);
 end;
writeln;
writeln;
seek(f,0);{возвращаемся в начало файла}
i:=0;{начнем с первого элемента, его индекс=0}
while i<filesize(f) do{пока не последний компонент}
 begin
  seek(f,i);{встаем в позицию}
  read(f,c);{читаем символ}
  if c in ['@'] then{если это знак}
   begin
    for j:=filesize(f) downto i+1 do{от конца файла+1 до данный элемет+1}
     begin
      seek(f,j-1);{читаем выше}
      read(f,a);
      seek(f,j);
      write(f,a); {вставляем ниже}
     end;
    a:='"';{присваиваем }
    seek(f,i);
    write(f,a);{запишем на место символа}
    seek(f,i+1);
    write(f,a);{и на 1 впереди}
    i:=i+2; {перешагнем}
   end
  else i:=i+1;{если не знак дальше}
 end;
seek(f,0);
writeln('symbols changed:');
while not eof(f) do
 begin
  read(f,c);
  write(c);
 
 end;
 k:=k+10;
close(f);
readln
end;
end.
Цитата:
ищет в папке файлы
Кстати. Насчет писка: Даже в ДОС для этого существовали функции FindFirst-FindNext-FindClose
Вот их и нужно было использовать.
I'm learning to live...

Последний раз редактировалось Stilet; 01.07.2012 в 08:17.
Stilet вне форума Ответить с цитированием
Старый 01.07.2012, 11:29   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Pascal - это DOS.
Сильное утверждение.

Если мне не изменяет память, Pascal - это язык программирования, а DOS - операционная система. Как одно может быть другим?

Цитата:
Сообщение от Stilet Посмотреть сообщение
Кстати. Насчет писка: Даже в ДОС для этого существовали функции FindFirst-FindNext-FindClose
Насколько я помню, в DOS FindClose не было - за ненадобностью. ОС - однозадачная.
s-andriano вне форума Ответить с цитированием
Старый 01.07.2012, 11:52   #7
cool_phenomus
 
Регистрация: 30.06.2012
Сообщений: 4
По умолчанию

Цитата:
Ее нужно перекомпилировать в Делфи в консольном проекте
Спасибо,попробую.

Цитата:
Вообще тут t:='file.txt'; достаочно изменить на html.
В том то и дело,что так и пробовал.

Цитата:
Pascal - это DOS. DOS - это короткие имена файлов 8 + 3 (8 символов имя и 3 символа - расширение). Какие ещё html?
Ну извините,я Паскаль учил только в школе год,работу с файлами сам читал в интернете,где было упомянуто,что Паскаль умеет работать с любыми файлами. Потому и писал .html
cool_phenomus вне форума Ответить с цитированием
Старый 01.07.2012, 12:07   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Как одно может быть другим?
Как несложно сообразить, слово "это" употреблено в значении "означает", "следует", "вытекает".

Цитата:
сам читал в интернете,где было упомянуто,что Паскаль умеет работать с любыми файлами
Во-первых, слово "любой" многозначно. Под ним можно понимать, к примеру, текстовые и двоичные файлы.
Во-вторых, на дату надо смотреть. В интернете много можно чего прочитать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами в делфи ПИнасол Помощь студентам 1 05.06.2012 07:09
Работа с файлами в делфи ПИнасол Помощь студентам 3 28.05.2012 11:17
Работа с файлами Делфи kop Помощь студентам 1 03.10.2011 07:57
Работа с файлами. Делфи jarix Помощь студентам 0 26.05.2011 21:44
работа с файлами. делфи shumakosik Помощь студентам 0 12.04.2011 20:46