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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2010, 18:10   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
Вопрос Проблема с созданием класса

Здравствуйте.
Никогда не имел дела с классами. Всё как-то процедурно. Пытался, но вот ничего не найду подходящего чтобы понять как всё это делается...

Мне нужно сделать парсер файла.
Код:
TMyclass=class
public
  constructor Create(FileName)
  function GetString(N: Integer): WideString;
end;
Вот я пытался написать, подскажите где я неправильно делаю...


Код:
constructor TMyclass.Create(FileName: String);
var
 str_tmp:WideString;
 k:integer;
begin
 if not FileExists(FileName)
  then ShowMessage('Файл '+FileName+' не существует')
  else
     try
       Count:=0;
       k:=0;
       AssignFile(InFile,FileName);
       Reset(InFile);
       while not InFile.Eof do
        begin
          inc(Count);
          Readln(InFile,str_tmp);
        end;
       SetLength(MasStr,Count);
       while not InFile.Eof do
        begin
          Readln(InFile,MasStr[k]);
          inc(k);
        end;
     except
       CloseFile(InFile);
       MasStr:=nil;
       ShowMessage('Ошибка при работе с файлом '+FileName);
     end;
end;
Возникают вот такие ошибки:
Код:
[Error] TLanguageParser_class.pas(36): Record, object or class type required
  [Error] TLanguageParser_class.pas(38): Record, object or class type required
  [Fatal Error] Unit1.pas(7): Could not compile used unit 'TLanguageParser_class.pas'
Заранее благодарю...
Arkuz вне форума Ответить с цитированием
Старый 17.04.2010, 18:52   #2
Vlad_55
Пользователь
 
Регистрация: 03.11.2007
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
Здравствуйте.
constructor Create(FileName)
Может всё-таки
Код:
constructor Create(FileName: string)
и в самом начале написать
Код:
constructor TMyclass.Create(FileName: String);
var
 str_tmp:WideString;
 k:integer;
begin
inherited Create;
...
end;
WebDelphi.ru - блог о программировании на Delphi
Vlad_55 вне форума Ответить с цитированием
Старый 17.04.2010, 19:53   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от Vlad_55 Посмотреть сообщение
Код:
constructor TMyclass.Create(FileName: String);
Ну это само собой...

Код:
var
 str_tmp:WideString;
 k:integer;
begin
inherited Create; // сделал, но без изменений
...
end;
Вообще-то компиль ругается на это!
Код:
while not InFile.Eof do
...
while not InFile.Eof do
...
Arkuz вне форума Ответить с цитированием
Старый 17.04.2010, 19:57   #4
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
Вообще-то компиль ругается на это!
Код:
while not InFile.Eof do
...
while not InFile.Eof do
...

nu da, etot cod idiot v canetz faila, i ishio raz v kanetz no v 2 raze on uje v kantze,

ya b sdelal tak

Код:
 while not InFile.Eof do
        begin
          inc(Count);
          Readln(InFile,str_tmp);
          SetLength(MasStr,Count);
          Readln(InFile,MasStr[Count]); 
        end;
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 17.04.2010, 20:11   #5
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Компиль ругается даже когда в 1 раз встречает строку
Код:
while not InFile.Eof do
Посмотрите, вот класс, может я вообще что-то не так делаю:
Код:
unit TLanguageParser_class;

interface


uses
  Windows, Messages, SysUtils, Dialogs;

type TLanguageParser=class(TObject)
    private
      InFile:TextFile;
      MasStr:array of WideString;
      Count:integer;
    public
      constructor Create(FileName:String); virtual;
      function GetString(N:Integer): WideString;
    end;

implementation

{ TLanguageParser }

constructor TLanguageParser.Create(FileName: String);
var
 str_tmp:WideString;
 k:integer;
begin
 if not FileExists(FileName)
  then ShowMessage('Файл '+FileName+' не существует')
  else
     try
       Count:=0;
       k:=0;
       AssignFile(InFile,FileName);
       Reset(InFile);
       while not InFile.Eof do
        begin
          inc(Count);
          Readln(InFile,str_tmp);
        end;
       SetLength(MasStr,Count);
       while not InFile.Eof do
        begin
          Readln(InFile,MasStr[k]);
          inc(k);
        end;
     except
       CloseFile(InFile);
       MasStr:=nil;
       ShowMessage('Ошибка при работе с файлом '+FileName);
     end;
end;


function TLanguageParser.GetString(N: Integer): WideString;
begin

end;

end.
Arkuz вне форума Ответить с цитированием
Старый 17.04.2010, 20:25   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
 while not Eof(InFile) do
А так? Код не пробовал, но, кажись, надо так.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.04.2010, 20:51   #7
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Utkin, спасибо тебе добрый человек. while not Eof(InFile) do эта схема заработала.
Но всё равно ошибка, когда я пытаюсь создать объект этого класса.
Теперь начались проблемы реализации...
Изображения
Тип файла: jpg error.JPG (19.4 Кб, 57 просмотров)
Вложения
Тип файла: rar parser.rar (8.1 Кб, 11 просмотров)

Последний раз редактировалось Arkuz; 18.04.2010 в 00:09.
Arkuz вне форума Ответить с цитированием
Старый 18.04.2010, 00:10   #8
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Пожалуйста помогите разобраться в чём дело!
Arkuz вне форума Ответить с цитированием
Старый 18.04.2010, 11:40   #9
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Реьята, ну выручайте...
Arkuz вне форума Ответить с цитированием
Старый 18.04.2010, 14:14   #10
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
Реьята, ну выручайте...
Nu ya viruchyal , no neznaiu esly tebe tak nado,

Proj v attach.
Вложения
Тип файла: rar Delphi 7 Temp Proj.rar (208.1 Кб, 14 просмотров)
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с созданием CButton st1q Общие вопросы C/C++ 5 14.09.2008 13:57
Delphi: Проблема с созданием объектов Omedus Помощь студентам 4 08.08.2008 18:42
Проблема с созданием компонентов dr.Chas Общие вопросы Delphi 4 25.04.2008 20:12