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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 20:57   #11
lordsyrius
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 24
По умолчанию

Черт, люди, не пойми что у меня получается(( Подредактируйте, пожалуйста, код:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Splitter1: TSplitter;
    ListBox2: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ViewClick(Sender: TObject);

  private
    { Private declarations }
TFileRecord: record
    namemetod: string [25];
    nameclass: string [25];
    curatr: string [25];
      end;
  public
    { Public declarations }
  end;

{type
  TFileRecord = record
    namemetod: string [25];
    nameclass: string [25];
    curatr: string [25];
end;     }
type
 TFileRecord= record
 end;

TRecFile = file of TFileRecord;

var

f:  TRecFile;
   mrec: array of Tfilerecord;
//  r:  TFileRecord;
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
ListBox1.Items.LoadFromFile(OpenDialog1.FileName);
End;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
mrec: array of TFileRecord;
len: integer;
i,j: integer;
nameclass, namemetod, curatr, s: string;
begin
listbox2.clear;
  len:=0;
curatr:=' ';
i:=0;
while trim(ListBox1.Items[i])<> 'implementation'do
begin
s:= trim(ListBox1.Items[i]);
        if (pos('= class', s)>0) and (pos(';', s)=0) then
        begin
        nameclass:= copy(s,1,pos(' ',s));
      inc(i);
   while trim(ListBox1.Items[i])<> 'end;'do
  begin
  s:= trim(ListBox1.Items[i]);
  if ((pos('procedure', s)>0) or (pos('function', s)>0)) and
   ((pos('virtual', s)=0)and (pos('dynamic', s)=0) and (pos('override', s)=0) and
    (pos('message', s)=0)) then
   begin  j:=pos(' ',s);  namemetod:='';
    while (s[j]<>'(') and (s[j]<>':') and (s[j]<>';') do
    begin namemetod:= namemetod+s[j]; inc(j); end;

    if curatr=' ' then curatr:= 'published';
ListBox2.Items.add(namemetod + ' - ' + nameclass + ' - ' + curatr);
begin
len:=len+1;
setlength(mrec,len);
mrec[len-1].namemetod:=namemetod;
mrec[len-1].nameclass:=nameclass;
mrec[len-1].curatr:=curatr;
end;


    end;
      if (pos('private',s)>0)  or
       (pos('protected',s)>0) or
       (pos('public',s)>0) or
       (pos('published',s)>0)
       then   curatr:=s;

   inc(i);
   end;
  end;
  inc(i);
 end;
end;

    procedure TForm1.Button3Click(Sender: TObject);
var
  mrec: array of Tfilerecord;
len: integer;
j: integer;
f: TRecFile;
r: TFIleRecord;
begin
    len:=0;
if SaveDialog1.Execute then
  begin
  AssignFile(f, SaveDialog1.FileName);
  Rewrite(f);
 { for i:=0 to ListBox2.Items.Count-1 do
    begin         }
      for j:=0 to len-1 do
write(f,mrec[j]);
   { r.namemetod:=Trim(ListBox1.Items.Names[i]);
 r.nameclass:=Trim(ListBox1.Items.Names[i]);
           r.curatr:=Trim(ListBox1.Items.Names[i]);       
              r.namemetod:=Trim(ListBox2.Items[i]);
 r.nameclass:=Trim(ListBox2.Items[i]);
           r.curatr:=Trim(ListBox2.Items[i]);   

    Write(f, r); }
    end;
  CloseFile(f);
  end;


procedure TForm1.ViewClick(Sender: TObject);
begin
with View do
begin
View:=TView.Create(Self);
if OpenDialog1.Execute then
  begin
  Caption:=ExtractFileName(OpenDialog1.FileName);
  Show;
  AssignFile(f, OpenDialog1.FileName);
  Reset(f);
    while not Eof(f) do
    begin
    Read(f, r);
    ListBox1.Items.Add(r.namemetod + ' - ' + r.nameclass + ' - ' + r.curatr);
    end;
  CloseFile(f);
  end
  else
  View.Free;
end;
end;

end.
lordsyrius вне форума Ответить с цитированием
Старый 10.05.2009, 21:17   #12
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Код:
unit Unit1;

interface

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

type
  TFileRecord: record
    namemetod: string [25];
    nameclass: string [25];
    curatr: string [25];
  end;
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Splitter1: TSplitter;
    ListBox2: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ViewClick(Sender: TObject);

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

var
RecFile = file of TFileRecord;
f:  TRecFile;
   mrec: array of Tfilerecord;
//  r:  TFileRecord;
  Form1: TForm1;

implementation

uses Unit2;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.05.2009, 21:24   #13
lordsyrius
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 24
По умолчанию

Ошибка(
Вот, выложил прогу: _http://narod.ru/disk/8545225000/proga.rar.html
lordsyrius вне форума Ответить с цитированием
Старый 10.05.2009, 21:31   #14
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

А ошибка какая?
Сейчас не за Delphi
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.05.2009, 21:38   #15
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Наверно надо в type еще добавить
Код:
type
  TRecFile = file of TFileRecord;
  TFileRecord: record
    namemetod: string [25];
    nameclass: string [25];
    curatr: string [25];
  end;
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Splitter1: TSplitter;
    ListBox2: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ViewClick(Sender: TObject);
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.05.2009, 21:41   #16
lordsyrius
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 24
По умолчанию

вот, все, что выдает:
[Error] Unit1.pas(10): Undeclared identifier: 'TFileRecord'
[Error] Unit1.pas(11): '=' expected but ':' found
[Error] Unit1.pas(94): Missing operator or semicolon
[Error] Unit1.pas(95): Missing operator or semicolon
[Error] Unit1.pas(96): Missing operator or semicolon
[Error] Unit1.pas(157): Undeclared identifier: 'r'
[Error] Unit1.pas(158): ')' expected but identifier 'namemetod' found
[Error] Unit1.pas(158): Missing operator or semicolon
[Error] Unit1.pas(158): Missing operator or semicolon
[Error] Unit1.pas(162): 'END' expected but 'ELSE' found
[Error] Unit1.pas(165): '.' expected but ';' found
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
lordsyrius вне форума Ответить с цитированием
Старый 10.05.2009, 21:48   #17
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Ды, плохо что не за delphi сижу.
Всех ошибок просто так в notepad'е не исправить
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 10.05.2009, 21:53   #18
lordsyrius
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 24
По умолчанию

пока буду сам разбираться)
lordsyrius вне форума Ответить с цитированием
Старый 10.05.2009, 22:04   #19
lordsyrius
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 24
По умолчанию

Всё, вроде добился, чего хотел:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Splitter1: TSplitter;
    ListBox2: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ViewClick(Sender: TObject);

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

type
  TFileRecord = record
    namemetod: string [25];
    nameclass: string [25];
    curatr: string [25];
end;

  TRecFile = file of TFileRecord;

var
 mrec: array of Tfilerecord;
len: integer;
f:  TRecFile;
  r:  TFileRecord;
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
ListBox1.Items.LoadFromFile(OpenDialog1.FileName);
End;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i,j: integer;
nameclass, namemetod, curatr, s: string;
begin
   len:=0;
listbox2.clear;
curatr:=' ';
i:=0;
while trim(ListBox1.Items[i])<> 'implementation'do
begin
s:= trim(ListBox1.Items[i]);
        if (pos('= class', s)>0) and (pos(';', s)=0) then
        begin
        nameclass:= copy(s,1,pos(' ',s));
      inc(i);
   while trim(ListBox1.Items[i])<> 'end;'do
  begin
  s:= trim(ListBox1.Items[i]);
  if ((pos('procedure', s)>0) or (pos('function', s)>0)) and
   ((pos('virtual', s)=0)and (pos('dynamic', s)=0) and (pos('override', s)=0) and
    (pos('message', s)=0)) then
   begin  j:=pos(' ',s);  namemetod:='';
    while (s[j]<>'(') and (s[j]<>':') and (s[j]<>';') do
    begin namemetod:= namemetod+s[j]; inc(j); end;

    if curatr=' ' then curatr:= 'published';
    ListBox2.Items.add(namemetod + ' - ' + nameclass + ' - ' + curatr);
         begin
len:=len+1;
setlength(mrec,len);
mrec[len-1].namemetod:=namemetod;
mrec[len-1].nameclass:=nameclass;
mrec[len-1].curatr:=curatr;
end;

    end;
      if (pos('private',s)>0)  or
       (pos('protected',s)>0) or
       (pos('public',s)>0) or
       (pos('published',s)>0)
       then   curatr:=s;

   inc(i);
   end;
  end;
  inc(i);
 end;
end;

    procedure TForm1.Button3Click(Sender: TObject);
var
j: integer;
f: TRecFile;
begin
if SaveDialog1.Execute then
  begin
  AssignFile(f, SaveDialog1.FileName);
  Rewrite(f);
        for j:=0 to len-1 do
write(f,mrec[j]);
    ///////////////////!!!!!!!!!!!!!!!!!!!
    {r.namemetod:=Trim(ListBox2.Items.Names[i]);
 r.nameclass:=Trim(ListBox2.Items.Names[i]);
           r.curatr:=Trim(ListBox2.Items.Names[i]);    }
 /////////////////////!!!!!!!!!!!!!!!!!!!!!
    end;
  CloseFile(f);
  end;


procedure TForm1.ViewClick(Sender: TObject);
begin
with View do
begin
View:=TView.Create(Self);
if OpenDialog1.Execute then
  begin
  Caption:=ExtractFileName(OpenDialog1.FileName);
  Show;
  AssignFile(f, OpenDialog1.FileName);
  Reset(f);
    while not Eof(f) do
    begin
    Read(f, r);
    ListBox1.Items.Add(r.namemetod + ' - ' + r.nameclass + ' - ' + r.curatr);
    end;
  CloseFile(f);
  end
  else
  View.Free;
end;
end;
end.
теперь надо сделать, чтобы файл был отсортирован (по алфавиту) по именам методов) Есть какие-нибудь предложения по воплощению?
lordsyrius вне форума Ответить с цитированием
Старый 11.05.2009, 00:03   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

for j:=0 to len(mrec)-1 do
for i:=j+1 to len(mrec)-1 do
if mrec[j].namemethod < mrec[i].namemethod then
begin
temprec:=mrec[j];
mrec[j]:=mrec[i];
mrec[i]:=temprec;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как копировать файл в String из ListBox? dolphin705 Общие вопросы Delphi 10 04.05.2009 16:53
Запись данных в файл на С# fractal Помощь студентам 15 17.02.2009 22:14
Запись в файл |{ot Общие вопросы Delphi 6 05.07.2008 02:24
как из ListBox`a дописать текст в файл? One.Love Общие вопросы Delphi 1 14.01.2008 07:20
запись данных в файл Артэс Общие вопросы C/C++ 13 09.06.2007 22:01