Форумы-->Форум для внеигровых тем--> 1|2
Автор | Дельфи 7 |
Есть тут те, кто владеет Дельфи 7? Нужна небольшая помощь с написание программы, точнее поправочка. | А сразу проблему никак? | Програмка простенькая, сортировка массива. Код уже написал, все работает, но нужно разбить код на две части и расчетную часть поместить в другой юнит. Прописывал в первом юните uses Unit2, но все равно программа ругается( | Текст ошибки-то какой? ) Дельфя ругается на очень понятном языке, это один из немногих ее плюсов )) | Я так понимаю, ругается не программа, а компилятор? | Если пишет "Circular unit referense to 'Unit1'", то попробуй это:
"Чтобы не было таких ошибок старайся модули, которые используешь "не глобально" подключать после implementation. Тогда не будет этой ошибки. Необходимость подключения модуля до implementation возникает только тогда, когда нужно добавить модуль с описанием классов. Если же у тебя оба модуля описывают необходимые классы, то нужно эти модули перестроить так чтобы они друг на друга не ссылались, как варианты вынести общее для обоих модулей в третий модуль. Тут вариантов много, фантазируй."
(с) некий "Кодю за еду" из гугла | to 6:
Ну, вообще-то эта проблема решается и еще одним способом. uses можно использовать в юните два раза, после interface и после implementation. Если нужно, чтобы модули включали друг друга, достаточно прописать их в разных Uses'ах ) | Текст ошибки-то какой?
[Error] Unit1.pas(6): Declaration expected but 'USES' found | uses не в том месте прописал. ) | а в каком месте его прописывать? у меня он в интерфейсе | Надо было декларацию, а ты юзиз | unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages;
type
TRecord = class
ID: Integer;
end;
И т. д.. | unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages;
type
TRecord = class
ID: Integer;
end;
И т. д..
у меня он именно там(
Надо было декларацию, а ты юзиз
не понял | Код в студию ) | :D сейчас исправлял код без понимания, тупо глядя на выдаваемые ошибки и в итоге заработало)
Посмотрите пожалуйста, наверняка куча лишнего в коде, что-то можно упростить, подскажите что) | unit Unit1;
interface
первый юнит
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, Unit2;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
Label3: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
BitBtn2: TBitBtn;
Label4: TLabel;
StringGrid3: TStringGrid;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Val(Edit1.Text,N,i);
Val(Edit2.Text,M,j);
if (i<>0) or (j<>0) or (N<0) or (M<0) then
begin
label3.Visible:=True;
Edit1.Text:='';
Edit2.Text:='';
Exit
end;
StringGrid1.ColCount:=N;
StringGrid2.ColCount:=M;
StringGrid1.Enabled:=True;
StringGrid2.Enabled:=True;
StringGrid1.Enabled:=True;
BitBtn2.Enabled:=True;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var
k,i,j:integer;
S:string;
begin
for i:=1 to N do
begin
Val(StringGrid1.cells[i-1,0],A[i],k);
if k<>0 then
begin
label4.Visible:=True;
exit;
end;
end;
for i:=1 to M do
begin
Val(StringGrid2.cells[i-1,0],B[i],k);
if k<>0 then
begin
label4.Visible:=True;
exit;
end;
end;
begin
make
end;
StringGrid3.ColCount:=N+M;
StringGrid3.Visible:=True;
For i:=1 to N+M do
begin
str(C[i]:3:0,S);
StringGrid3.cells[i-1,0]:=s;
end;
end;
end.
второй юнит
unit Unit2;
interface
var
N,M:integer;
k,i,j:integer;
A,B,C:array[1..100] of single;
F:single;
procedure Make;
implementation
procedure Make;
var
i,j:integer;
begin
for i:=1 to N do
begin
C[i]:=A[i];
end;
for i:=N+1 to M+N do
begin
C[i]:=B[i-N];
end;
For j:=1 to M+N-1 do
For i:=1 to M+N-1 do
if C[i]<C[i+1] then
begin
F:=C[i];
C[i]:=C[i+1];
C[i+1]:=F;
end;
end;
end. | особенно с описанием переменных наверняка косо | unit Unit1;
interface
первый юнит
uses
.
.
.
Я надеюсь, у тебя в коде прям так - "Первый юнит" - не написано? |
Я надеюсь, у тебя в коде прям так - "Первый юнит" - не написано?
ахахаха нет)
когда сюда писал коряво вставил)
этой строчки в коде нет) | На видЮ вроде, все правильно... Выложи файлы проекта куда-нибудь. закомпилю у себя. |
1|2К списку тем
|