![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть некая программа. Весь код приводить не буду, вот часть:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
m_file: TMenuItem;
ListBox1: TListBox;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;
Label3: TLabel;
m_out: TMenuItem;
m_save: TMenuItem;
m_clear: TMenuItem;
Memo2: TMemo;
procedure m_outClick(Sender: TObject);
procedure m_saveClick(Sender: TObject);
procedure m_clearClick(Sender: TObject);
procedure my_sort;
procedure my_readfile;
procedure my_out;
function GetPlainText(AList : TStringList) : String;
private
{ Private declarations }
public
end;
us_struct = record // us_struct: структура данных одного участника
sename: string; // фамилия
name: string; // имя
city: string; // город
org: string; // организация
end;
var
Form1: TForm1;
list: array of us_struct; // массив (структур) всех участников
city: array of string; // массив городов
implementation
{$R *.dfm}
function TForm1.GetPlainText(AList: TStringList): String; // функция заменяет перенос строки на пробел
var
I : Integer;
begin
Result := AList[0]; // присваиваем переменной result значение первой строки списка
For I := 1 To AList.Count-1 Do Result := Result + ' ' + AList[i]; // дописывем к первой строке по очереди содержимое остальных строк
end;
procedure TForm1.my_sort;
// сортировка учатников
var
x: us_struct;
i,j:integer;
begin
for i:=0 to high(list)-1 do
for j:=i+1 to high(list) do
if list[i].sename>list[j].sename then
begin
x:=list[i];
list[i]:=list[j];
list[j]:=x;
end;
end;Пытался использовать просто uses unit2, создавал unit2, но в упор не понимаю что там должно быть написано. Если брать только объявление и описание процедуры-ругается на us_struct, что не знает что это такое. Хотя вроде как объявлена структура глобальной. |
|
#2
|
||||
|
||||
|
В общем:
1. Создаём некий Unit2 2. Подключаем его (uses Windows, ....., Unit2) 3. В Unit2 копируем после implementation код процедуры. 4. В том же Unit2 копируем объявление процедуры в блок ДО implementation 5. P-R-O-F-I-T! ![]() 6. Если не профит - подключаем необходимые uses в Unit2. 7. см. п. 5. P.S. Возьми учебник, что ли... >> 3643447A354F44772F4344783565482F494F2F75494F507536 2B3769355334754C673D3D |
|
#3
|
||||
|
||||
|
В созданном модуле надо объявить процедуру как глобальную (чтоб ее можно было использовать в др. модулях).
Код:
unit Unit1; interface uses Windows, ..., Unit2; ... procedure TForm1.Button1Click(Sender: TObject); begin myproc; end; Теперь сам 2 модуль: Код:
unit Unit2; interface procedure myproc(); implementation procedure myproc(); begin //... end; end. Код:
unit Unit2;
interface
procedure my_sort();
implementation
uses Unit1;
procedure my_sort;
// сортировка учатников
var
x: us_struct;
i,j:integer;
begin
for i:=0 to high(list)-1 do
for j:=i+1 to high(list) do
if list[i].sename>list[j].sename then
begin
x:=list[i];
list[i]:=list[j];
list[j]:=x;
end;
end;Опять опоздал ![]() |
|
#4
|
|||
|
|||
|
Спасибо, почти получилось
![]() Осталась последняя непонятка. Код модуля: Код:
unit Unit4;
interface
procedure my_out;
implementation
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Unit1;
procedure my_out;
var p,i,j,k:integer;
s1, s2:string;
F: Textfile;
t: TStringList;
begin
ListBox1.Items.Clear;
for j:=0 to high(city) do
begin
ListBox1.Items.Add(city[j]);
for i:=0 to high(list) do
begin
if city[j] = list[i].city then
ListBox1.Items.Add(list[i].sename);
end;
ListBox1.Items.Add('');
end;
AssignFile(f, 'file.txt');
Append(f);
Closefile(f);
t:=TStringList.Create;
t.LoadFromFile('file.txt');
for k:=0 to (t.Count-1) do
begin
s2:=t.Strings[k];
s1:=copy(s2,LastDelimiter(' ', s2),length(s2));
Delete (s2,LastDelimiter(' ', s2),length(s2));
Delete (s2,LastDelimiter(' ', s2),length(s2));
s2:=s2+s1;
t.Strings[k]:=s2;
end;
t.Sort;
memo2.Lines.AddStrings(t);
end;
end.Ругается на [Error] Unit4.pas(17): Undeclared identifier: 'ListBox1' и далее куча подобных ошибок с листбоксом. Что не так? |
|
#5
|
||||
|
||||
|
Form1.ListBox1 и тд?
|