Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
6-12480
Michael_X
2003-12-17 17:54
2004.03.05
Определение удалённой ОС.


1-12333
Android
2004-02-22 20:28
2004.03.05
trichedit


1-12388
satron
2004-02-24 23:50
2004.03.05
Как развернуть окно во весь экран


1-12393
denik
2004-02-24 19:51
2004.03.05
Как програмно развернуть ComboBox в LookUp поле ?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский