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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2007, 13:22   #1
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию Помогите, вроде несложная задачка, НО

Вот, из-за этого сегодня пришлось закончить программировать. Вобщем понадобивалось создать процедуру (две), под названиями Send и Write. Вот кусок кода:

Код:
type
  TForm2 = class(TForm)
  ***** *****
**** ****** 
    procedure Send(Name1,Text:string);       virtual;
    procedure Write (v:string);    virtual;


  private
    { Private declarations }
  public
    { Public declarations }
    *********
  end;

var
  Form2: TForm2;
 *****: *****;
 *****: *****;



implementation

uses Unit1;

{$R *.dfm}

procedure Write (v);
begin
with Form1 do begin
Memo1.Lines.Clear;
Memo1.Lines.Add(IntToStr(Unit1.ErrorNum));
Memo1.Lines.Add(IntToStr(Unit1.TestNum+1));
Memo1.Lines.Add(IntToStr(Unit1.AllBall));
Memo1.Lines.SaveToFile(v);
Memo1.Lines.Clear;
end;
end;

procedure Send(Name1,Text);
var
f1:textfile;
k:string;
begin
        assignfile(f1,name1);
        {$I-}
        reset(f1);
        if ioresult=0 then readln(f1,k);
        {$I+}
        rewrite(f1);
        k:=Text;
        Writeln(f1,k);
        closefile(f1);
with Form2 do begin
    if IdFTP1.Connected then begin
       IdFTP1.TransferType := ftBinary;
       IdFTP1.Put(Name1, ExtractFileName(Name1));
    end;
end;
DeleteFile(name1);
end;
ВОТ! До этого создавал процедуры в Unit1 и всё было нормально... Пытаюсь компилироваться, получаю ошибку с красным выделением строки с названием процедуры (как в коде), если поменять процедуры местами, то поменяется выделяемое название (то есть строка неизменица)..

И вылетает ошибка внизу (ну в отладке):
[Warning] Unit1.pas(28): W1010 Method 'Create' hides virtual method of base type 'TCustomForm'....


Кстати, только счас заметил, что в ошибке написано Unit1.pas, а строка выделяется в Unit2.pas, но до этого (то есть в отладке строкой ниже) абсолютно тоже самое, но с Unit2.pas ...
Nez вне форума Ответить с цитированием
Старый 10.03.2007, 15:55   #2
Lynx
Пользователь
 
Аватар для Lynx
 
Регистрация: 09.02.2007
Сообщений: 49
По умолчанию

Попробуй так

Код:
...
procedure Send(Name1,Text:string);
procedure Write (v:string);
...
var
  Form2: TForm2;
....
implementation

uses Unit1;

{$R *.dfm}

procedure Form2.Write (v);
begin
with Form1 do begin
Memo1.Lines.Clear;
...

procedure Form2.Send(Name1,Text:string);
Свой среди чужих
Чужой среди своих
Lynx вне форума Ответить с цитированием
Старый 11.03.2007, 03:49   #3
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

К сожалению, проблема не в этом.. Ничего не помогает... Единственное, что ещё могу сказать, так только то, что у меня в Unit1.pas есть две процедуры созданные мною: Create и ReaD...
Nez вне форума Ответить с цитированием
Старый 11.03.2007, 04:04   #4
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Ну вобщем, я так подумал, что может проблема в названиях процедур (Create, Write, Send...), я переименовал их в Create1, Write1, Send1, Read1...

Пытаемся откомпилировать, та же строка выделяется, НО уже другая ошибка:
Изображения
Тип файла: gif Errors.GIF (7.1 Кб, 139 просмотров)
Nez вне форума Ответить с цитированием
Старый 11.03.2007, 09:19   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

видно что вы обьявлением таких процедур переопределяете процедуры в самом типе TForm, конечн если я не ошибаюсь. Придумайте типа WriteF, ReadF... и посмотрите что будет
BOBAH13 вне форума Ответить с цитированием
Старый 11.03.2007, 09:21   #6
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Выше постом порусски написано, что я попытался изменить названия на Read1, Write1 и т.д. и ничего не изменилось, только немного изменилась ошибка отладчика.. См. картинку

Специально для вас попробовал с буквочкой "F" в конце - ничего, как ни странно, не изменилось

Последний раз редактировалось zetrix; 11.03.2007 в 10:10.
Nez вне форума Ответить с цитированием
Старый 11.03.2007, 10:26   #7
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Выложи весь исходник!!!
merax вне форума Ответить с цитированием
Старый 11.03.2007, 10:35   #8
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

К сожалению, это невозможно... Жалко! ...

А что тут выкладывать то?

Вот кусок кода из Unit1.pas:
Код:
unit Unit1;

interface

uses
************

type
  TForm1 = class(TForm)
  **********************
    procedure Read1(s:string);
    procedure Create1(s:string);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
    s1:string;
    AllBall,TestNum,ErrorNum:integer;
*********


implementation

uses Unit2;

{$R *.dfm}

procedure ReaD1(S);
begin
with Form1 do begin
Memo1.Lines.Clear;
Memo1.Lines.LoadFromFile(s);
{ErrorNum
 TestNum
 AllBall}
ErrorNum:=StrToInt(Memo1.Lines.Strings[0]);
TestNum:=StrToInt(Memo1.Lines.Strings[1]);
AllBall:=StrToInt(Memo1.Lines.Strings[2]);
Memo1.Lines.Clear;
end;
end;

procedure Create1(s);
var
f:textfile;
k:string;
begin
with Form1 do begin
Memo1.Lines.Clear;
        assignfile(f,s);
        {$I-}
        reset(f);
        if ioresult=0 then readln(f,k);
        {$I+}
        rewrite(f);
        k:='';
        Writeln(f,k);
        closefile(f);
Memo1.Lines.Add('0');
ErrorNum:=0;
TestNum:=1;
AllBall:=0;
Memo1.Lines.Add('1');
Memo1.Lines.Add('0');
Memo1.Lines.Clear;
end;
end;

А вот кусок кода из Unit2.pas:

Код:
unit Unit2;

interface

uses
******
type
  TForm2 = class(TForm)
************
    procedure Send1(Name1,Text:string);
    procedure Write1(v:string);


  private
    { Private declarations }
  public
    { Public declarations }
   ******
  end;

var
  Form2: TForm2;
 ***************


implementation

uses Unit1;

{$R *.dfm}

procedure Write1(v);
begin
with Form1 do begin
Memo1.Lines.Clear;
Memo1.Lines.Add(IntToStr(Unit1.ErrorNum));
Memo1.Lines.Add(IntToStr(Unit1.TestNum+1));
Memo1.Lines.Add(IntToStr(Unit1.AllBall));
Memo1.Lines.SaveToFile(v);
Memo1.Lines.Clear;
end;
end;

procedure Send1(Name1,Text);
var
f1:textfile;
k:string;
begin
        assignfile(f1,name1);
        {$I-}
        reset(f1);
        if ioresult=0 then readln(f1,k);
        {$I+}
        rewrite(f1);
        k:=Text;
        Writeln(f1,k);
        closefile(f1);
with Form2 do begin
    if IdFTP1.Connected then begin
       IdFTP1.TransferType := ftBinary;
       IdFTP1.Put(Name1, ExtractFileName(Name1));
    end;
end;
DeleteFile(name1);
end;
Nez вне форума Ответить с цитированием
Старый 11.03.2007, 10:41   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

странно! Вы описываете процедуры Create, read, write в области класса, думаю надо их описівать либо дерективе Private или Public ! и причем приписывать названия класса в котором они описаны ! т.е. TForm2.Send1 и т.п. вроде выше чтот подобное уже писали!

лично мне это не нравится !

procedure ReaD1(S);
begin
with Form1 do begin

должно быть так

procedure TForm1.ReaD1(S);

и еще что такое (S) ? никогда такого не видел ))

тогда уже пишите так

procedure TForm1.ReaD1; раз у Вас уже данная процедура описана в классе TForm1

Последний раз редактировалось zetrix; 11.03.2007 в 11:51.
BOBAH13 вне форума Ответить с цитированием
Старый 11.03.2007, 11:04   #10
Nez
Пользователь
 
Аватар для Nez
 
Регистрация: 15.01.2007
Сообщений: 72
По умолчанию

Не, ребят, фигня всё это )) Проблема в чём-то другом.. Попробовал, ради опытов по вашим эскизам и ничего не получилось..

P.S.:"А чем тебя не устраивает "S"? Обычная переменная, которую необходимо сообщить процедуре))) Что тут непонятного?"
Nez вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите по CSS вроде :) Юрий777 HTML и CSS 4 16.05.2008 23:26
Помогите исправить ошибку пожал-та. Что то вроде транслитератора. Gauss Общие вопросы Delphi 23 04.03.2008 21:16
сложная для мну задачка..помогите плиз! лиса Помощь студентам 11 15.01.2007 07:31