Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

Модули   Найти похожие ветки 

 
ZyXel   (2004-02-25 00:03) [0]

Мастера помогите пожайлуста!!!!!!!
В моем приложение есть процедура:

procedure TForm1.Button2Click(Sender: TObject);
begin
obfile.Zapis__File;
end;

Взятая из созданного мною модуля:

procedure Cfile.Zapis__File;
begin
write(f,stringGrid1.cells[0,0]);
end;

В моем модуле я подключил через uses модуль Grids
и в классе объявил объект StringGrid1:TstringGrid

Все компилируется,но когда я пытаюсь считать с объекта StringGrid программа виснет.

Вообще объясните пожайлуста как сделать так чтобы созданный мною модуль работал с объектами приложения к которому я его потключаю.


 
Defunct ©   (2004-02-25 00:23) [1]

Желательно, чтобы создаваемый Вами модуль не использовал напрямую переменные объявленные в других модулях.

PS: Что такое F?
Вы уверены, что назначили и открыли файл правильно?
Файловые переменные (Handle файла) представляет собой номер по которому операционная система выбирает существующую FCR (File Control Record) из списка FCR. Обращаясь к Handle со значением 0 (Console out) вы пытаетесь записать строку на консоль, отсюда и зависание.

Var F:TextFile

Procedure WriteFile;
Begin
AssignFile(F,"MyFile.txt");
ReWrite(F);
WriteLn(F,"test test test");
CloseFile(F)
End;


 
Talan   (2004-02-25 00:34) [2]

Пробдема не в этом.

Проблема в том что в модуле процедура,а в проекте к которому подключен модуль ноходится объект StringGrid.

И процедура нодящаяся в модуле не хочет работать с ним!!!!!


 
Palladin ©   (2004-02-25 01:08) [3]

Ну ты Янус. То один то другой...
Интересная ситуация. Значит два модуля. Процедура записи в одном записываемый объект в другом. А как ты сделал так что бы процедура записи знала что именно она записывает?


 
Defunct ©   (2004-02-25 01:08) [4]

> И процедура нодящаяся в модуле не хочет работать с ним!!!!!
... и поэтому зависает программа?
Да компилятор бы ошибку выдал, если бы виноват был StringGrid1. В худщем случае - Access Violation но ни как не зависание.


 
Defunct ©   (2004-02-25 01:11) [5]

Посмотрите на эту процедуру!

procedure Cfile.Zapis__File;
begin
write( f,stringGrid1.cells[0,0]);
end;


Проблема здесь только в файловой переменной F. Она определена, но файл ни где не был открыт.


 
Talan   (2004-02-25 10:47) [6]

Файл я открываю другой кнопкой,а при записи вылетает сообщение

<<Access Violation>>


 
TUser ©   (2004-02-25 11:11) [7]

А ты этому Stringgrid криэйт сделал?


 
icWasya ©   (2004-02-25 11:12) [8]

тогда поподробнее про StringGrid1 - где создаётся, как используется, побольше кода


 
Talan   (2004-02-25 11:34) [9]

Вот код проекта:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
end;
var
Form1: TForm1;
OBFile:Cfile;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
assignFile(f,"c:\vit.xls") ;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
obfile:=cfile.Create(obfile);
messagebeep(1);
obfile.Sozd__File;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
obfile.Zapis__File;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
obfile.Zakr__File;
end;

end.

А от код модуля

unit Unit2;

interface
uses windows,SysUtils,Forms,Grids;
type
Cfile=class(Tform)
private
FName:string;
Fsostoyanie:byte;
Ffperem:char;

{ Edit1:Tedit;}

published
StringGrid1:TstringGrid;
property Name:string read FName write FName;
property Sostoyanie:byte read FSostoyanie write Fsostoyanie;
property fperem:char read Ffperem write Ffperem;
public
procedure Sozd__File;
procedure Zakr__File;
procedure Zapis__File;
end;

var
f:textfile;

implementation
procedure Cfile.Sozd__File;
begin
rewrite(f)
end;

procedure Cfile.Zakr__File;
begin
Closefile(f);
end;

procedure Cfile.Zapis__File;
begin
write(f,stringGrid1.cells[1,1]);
end;
end.


 
ZyXel   (2004-02-25 12:22) [10]

Помогите пожайлуста!!!!!!!!!!!!!!!!!!


 
Defunct ©   (2004-02-25 12:33) [11]

;)
Да....
Это стадия...

1. StringGrid1 в Unit1 и StringGrid1 в Unit2 это абсолютно разные экземпляры.
2. Вы нигде не создали экземпляр класса CFile (Вы его объявили но не создали).
3. Переменная.. F LOL объявлена в одном модуле, а используется методами другого модуля.
4. Ну и CFile = class( TForm) - это нЕчто

Тут можно только посоветовать почитать классику по Delphi. Какой-нибудь учебник будет весьма кстати.

Приведу вам пример как должен быть оформлен второй модуль:

unit Unit2;

Interface

Uses Grids;

Type
TFileControl = class
Private
F : TextFile;
FName : String;
SG : TStringGrid;
Public
Constructor Create;
Destructor Destroy;
{



Страницы: 1 вся ветка

Текущий архив: 2004.03.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-12391
Гарри Поттер
2004-02-24 21:54
2004.03.05
Key = VK_1 //ошибка


6-12472
S@b@k@.
2003-12-28 18:40
2004.03.05
IP адрес


1-12401
}|{yk
2004-02-24 17:54
2004.03.05
Свойство с ограниченным диапазоном


3-12255
Санек
2004-02-09 13:10
2004.03.05
Доступные MS SQL сервера в сети


8-12451
Macho
2003-11-05 00:50
2004.03.05
Создать из последовательности BMP-файлов AVI-файл