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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2012, 13:29   #1
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию Чтение из текстового файла и обработка посимвольная

Есть задача : с клавиатуры ввести имя файла, затем скачать текст, затем последние три буквы каждого слова проверять на наличие цифр 1,2 и 3. Слова разделяются пробелами.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
          var nv , text ,fv: string;
              f : array of string;
              d : array of int;   
         begin
          writeln("продолжение?");readln(n);
          if nv = "да" then fv :=(C:\Documents and Settings\Администратор\Мои документы\Загрузки\file.txt);
          else
         begin
             writeln ("введите путь");
             readln(f);
         end;
         assign (text,n);
         reset(text);
         f:=Read(text, n);
        for i = 1 to n do begin
         if f(i)= " " theb begin
        a := f [i-3]; b := f[i-2]; c := f[i-1];
       if a or b or c = d then writeln(есть такое слово) ;end;
end;
      
end.

Вот такая программа получилась.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.09.2012 в 14:00.
дмитрий12123 вне форума Ответить с цитированием
Старый 27.09.2012, 14:09   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

неправильная программа у Вас получилась.
1-х, имя текстового файла по заданию надо вводить, а у вас задано в коде.
2-х, вы не проверяете, что слово может быть КОРОЧЕ трёх символов
в 3-х, где, собственно, проверка, что там есть цифры '1' или '2' или '3' ?!

p.s. про такое я уже вообще молчу:
Цитата:
Код:
if f(i)= " " theb
p.p.s.
для парсинга (разбора) слов в строке рекомендую поискать готовый код на форуме (их тут была тьма-тьмущая).
вот, например, можете переработать под себя код (с) Stilet
Код:
{отпарсить - разобрать строчку на слова.
 выделить слова}
{ (c) Stilet}

var 
  s:string; a:array[1..100] of string;
  i,count:integer;
begin   {$o-}
 s:='Hello my world';
 count:=1;
 i:=1; 
 while (i<=length(s)) do begin
   if s[i]=' ' then begin inc(count);inc(i);end;
   a[count]:=a[count]+s[i];
   inc(i);
 end;
 { Count - количество слов. }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.09.2012, 20:56   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от дмитрий12123 Посмотреть сообщение
Код:
         if f(i)= " " theb begin
А мне всегда было интересно, как впринципе можно допускать такие ошибки, в синтаксисе? Вы что, в блокноте программы пишите? На такую конструкцию дэлфи (а я на 99% уверен, что код дэлфийский) будет орать благим матом.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 27.09.2012, 22:47   #4
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию

я только учусь. Подскажите чуть-чуть ещё?

Код:
 
код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F,pas.txt);
Rewrite(F);
WriteLn(F,'Привет! Это первая строка в текстовом файле');
CloseFile(F);
end;

end.
Выдает ошибку [Error] Unit1.pas(30): Undeclared identifier: 'pas'?
Чего делать?

Последний раз редактировалось Serge_Bliznykov; 28.09.2012 в 11:06.
дмитрий12123 вне форума Ответить с цитированием
Старый 27.09.2012, 23:11   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
AssignFile(F,'pas.txt');
Используйте кнопочку решетка # для выкладывания кода.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 28.09.2012, 09:01   #6
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию

почему не проходит?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F,'pas.txt');
Append(F);
WriteLn(F,'Хлебом не корми, дай только строки добавлять!');
CloseFile(F);
end;

end.

то же самое и с reset..

Последний раз редактировалось дмитрий12123; 28.09.2012 в 09:03.
дмитрий12123 вне форума Ответить с цитированием
Старый 28.09.2012, 11:20   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
почему не проходит?
потому что команда Appenf(f), как и Reset(f) предполагают наличие СУЩЕСТВУЮЩЕГО текстового файла.
С чего Вы решили, что в том каталоге, который является для программы текущим имеется файл pas.txt ?!

рекомендую, например, указать ПОЛНЫЙ путь к файлу.
например, так:
Код:
AssignFile(F,'D:\My Projects\pas.txt');
Append(F);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2012, 13:33   #8
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию

Пишет einouterror file not found при полном пути до файла!
Никакого прогресса!? Файл есть и читается с windows легко.

Последний раз редактировалось дмитрий12123; 28.09.2012 в 13:35.
дмитрий12123 вне форума Ответить с цитированием
Старый 28.09.2012, 13:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
file not found
значит НЕТ у Вас файла по указанному вами пути!!!
Либо этот файл имеет "хитрые" аттрибуты (скрытый, системный, read-only) и т.д.
какой "полный" путь Вы указываете?

p.s. сам код рабочий. я только что проверил.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.09.2012, 22:25   #10
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию

Снова повтор:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F,'C:\Program Files\Borland\Delphi7\Projects\pas.txt');
Append(F);
WriteLn(F,'Хлебом не корми, дай только строки добавлять!');
CloseFile(F);
end;
Project xxxx raised exception class yyyyy with message 'zzzzzz'.

Process stopped. Use Step or Run to continue.

Не могу понять чего делать? Может проблема в uses или в связке AssignFile Append(F)?

Последний раз редактировалось дмитрий12123; 28.09.2012 в 22:27.
дмитрий12123 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посимвольная обработка строк HellMercenariess Общие вопросы Delphi 6 24.08.2012 08:37
Чтение из текстового файла soirkar Visual C++ 6 22.06.2011 16:58
чтение с текстового файла salwator Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2011 15:49
чтение текстового файла Аглан Microsoft Office Access 2 15.02.2011 22:14
Чтение текстового файла Kasper1 Общие вопросы по Java, Java SE, Kotlin 5 17.12.2010 15:57