Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 04.05.2010, 09:20   #1
vedro-compota
любитель-далеко не
Профессионал
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Адрес: Россия. Славный город Воронеж )
Сообщений: 1,156
Репутация: 639
По умолчанию Вроде бы аналогичная вложенной процедура не работает при переносе в дополнительный модуль!

Здравствуйте ! 0)))Снова возникла загвоздка с подключением модуля , вернее модуль , вроде подключен, но процедура, расположенная в нём не работает.
Программа призвана переносить все знаки препинания, встретившиеся в строке в конец этой самой строки.
Вот такой вариант работает:
Основной (и единственный ) модуль:
Код:
unit Unit1;

interface

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

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


  end;
  type
  pelement= ^telement;
  Telement= record
             infa: char;
             ukazatel:pelement;
            end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var    f1,f2: textfile;
     simvol: char;
     a,b: string;
     uk,uk1,p: pelement;

begin
  a:='f1.txt';
  b:='f2.txt';
  AssignFile(f1,a);
  AssignFile(f2,b);
  reset(f1);
  rewrite(f2);
  uk:=nil;
  uk1:=nil;
  while eof(f1)=false do
  begin
    read(f1,simvol);
    if simvol in ['.',',',';','-','!','?',':'] then
    begin
    // fgh(uk1,uk,simvol); // - процедура, призванная заменить всё в этих операторных скобках, но временно заблокированная))
      new(p);
      if uk<>nil  then
      uk^.ukazatel:=p
      else uk1:=p;
      p^.infa:=simvol;  // сохранем знаки
      uk:=p;
    end
    else
      write(f2,simvol);
    if eoln(f1)=true then
    begin
      uk:=nil; // обрываем список
      while uk1<>nil do  // выводим знаки
      begin
        write(f2,uk1^.infa);
        uk1:=uk1^.ukazatel;
      end;
    end;
  end;
  CloseFile(f1);
  CloseFile(f2);

end;

end.
----------------------------------------
Потом я переношу процедуру, которая создаёт очередь из знаков препинания ( добавляю в начало очереди, запоминаю указатель на первый элемент)
Теперь основной модуль выглядит так:
Код:
unit Unit1;

interface

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

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


  end;



var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var    f1,f2: textfile;
     simvol: char;
     a,b: string;
     uk,uk1,p: pelement;

begin
  a:='f1.txt';
  b:='f2.txt';
  AssignFile(f1,a);
  AssignFile(f2,b);
  reset(f1);
  rewrite(f2);
  uk:=nil;
  uk1:=nil;
  while eof(f1)=false do
  begin
    read(f1,simvol);
    if simvol in ['.',',',';','-','!','?',':'] then
    begin
     fgh(uk1,uk,simvol);
      {new(p);
      if uk<>nil  then
      uk^.ukazatel:=p
      else uk1:=p;
      p^.infa:=simvol;  // сохранем знаки
      uk:=p; }
    end
    else
      write(f2,simvol);
    if eoln(f1)=true then
    begin
      uk:=nil; // обрываем список
      while uk1<>nil do  // выводим знаки
      begin
        write(f2,uk1^.infa);
        uk1:=uk1^.ukazatel;
      end;
    end;
  end;
  CloseFile(f1);
  CloseFile(f2);

end;

end.
Дополнительный ( процедурный) так :
Код:
unit ochered;

interface
type
  pelement= ^telement;
  Telement= record
             infa: char;
             ukazatel:pelement;
            end;
procedure fgh(uk1,uk: pelement; simvol: char  );

implementation


procedure fgh(uk1,uk: pelement; simvol: char  );
var p:pelement;
begin
      new(p);
      if uk<>nil  then
      uk^.ukazatel:=p
      else uk1:=p;
      p^.infa:=simvol;  // сохранем знаки
      uk:=p;
end;

end.
Не пойму в чём разница. Подскажите.
(программа читает данные из f1.txt и записыет результат в f2.txt )
--------------------
(прикладываю работающий и не работающий архивы)
Вложения
Тип файла: zip работает.zip (31.9 Кб, 7 просмотров)
Тип файла: zip не работает.zip (31.7 Кб, 8 просмотров)
__________________
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 04.05.2010 в 13:58. Причина: Выделил проблему жирным образом 0)))
vedro-compota вне форума   Ответить с цитированием
Старый 04.05.2010, 17:12   #2
vedro-compota
любитель-далеко не
Профессионал
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Адрес: Россия. Славный город Воронеж )
Сообщений: 1,156
Репутация: 639
По умолчанию аааа

я кажись по ссылке значения в процедуру-то передал......ээээээ. сейчас посмотрим....
-----------------------------------
всё. работает ! спасибо за моральную поддержку ( что , знаете, не маловажно 0)))
__________________
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 04.05.2010 в 17:40.
vedro-compota вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
модуль, процедура, переменные Anserone Паскаль 3 20.04.2010 22:36
Проблема при переносе кода. MasterK Общие вопросы Delphi 1 08.04.2010 18:05
Ошибка при переносе из 2006 в delphi 2009/2010 Яр|/||< (^_^) Общие вопросы Delphi 2 18.02.2010 13:01
Не работает процедура Golovastik SQL, базы данных 2 22.11.2009 15:22
Суммирование определенных ячеек при переносе Pilot Microsoft Office Excel 5 17.07.2008 12:46


10:51.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.