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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 09:16   #1
katttes
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 33
Вопрос Запись в файл переменной из другого модуля.

Я столкнулась с небольшой проблемой.
Мне нужно при создании формы записать в файл переменную, объявленную в другом модуле. Я это делаю так:

Код:
procedure TForm3.FormCreate(Sender: TObject);
var
f:TextFile;
begin
       AssignFile (f, 'C:\result.txt');
       Append(f);
       write(f, 'Ф.И.О: '+surname+' ');
       CloseFile(f);
End;
Переменная surname объявлена в другом модуле в секции public.
Когда я открываю файл, выводится следующее:
Ф.И.О.:
Подскажите, пожалуйста, что я делаю не правильно?

Последний раз редактировалось Stilet; 07.04.2010 в 10:50.
katttes вне форума Ответить с цитированием
Старый 07.04.2010, 09:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в другом модуле в секции public.
Она в классе? Тогда подключи в uses тот модуль, создай обьект того класса и уже обращайся к его свойству
Если же она как глобальная в var описана то просто подключи в uses модуль
Для точности можно еще написать write(f, 'Ф.И.О: '+Модуль.surname+' ');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2010, 09:40   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

а чему равна переменная surname в момент записи?
p51x вне форума Ответить с цитированием
Старый 07.04.2010, 09:43   #4
katttes
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 33
По умолчанию

на первой форме в edit1 вводится фамилия, которая при записи должна присваиваться переменной surname

переменная находится в var. модули подключены. а фамилия в файл все равно не выводится

Последний раз редактировалось Stilet; 07.04.2010 в 10:50.
katttes вне форума Ответить с цитированием
Старый 07.04.2010, 10:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
на первой форме в edit1 вводится фамилия, которая при записи должна присваиваться переменной surname
значит, НЕ ПРИСВАИВАЕТСЯ!

давайте код обоих модулей, и ясно будет, где ошибка.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.04.2010, 10:52   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А не проще ли:
Код:
write(f, 'Ф.И.О: '+Form1.Edit1.Text+' ');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2010, 11:09   #7
katttes
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 33
По умолчанию

unit Unit1;

interface

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

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
Panel1: TPanel;
Timer1: TTimer;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
surname, _name, patronymic, group, test_book,t: string;
{ Public declarations }

end;

var
Form1: TForm1;
surname, _name, patronymic, group, test_book,t: string;

implementation

uses Unit2, Unit3;

{$R *.dfm}


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Panel1.Caption:= 'Âðåìÿ: '+TimeToStr(Time);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
f:TextFile;
begin
if (edit1.Text='Ââåäèòå ôàìèëèþ') or (edit2.Text='Ââåäèòå èìÿ') or (edit3.Text='Ââåäèòå îò÷åñòâî') or (edit4.Text='Ââåäèòå íîìåð ãðóïïû') or (edit5.Text='Ââåäèòå íîìåð çà÷åòíîé êíèæêè') then
begin
ShowMessage('Âû ââåëè íå âñå äàííûå!')
end
else
begin
surname:= edit1.Text;
_name:= edit2.Text;
patronymic:= edit3.Text;
form3.Edit1.Text:= surname;
Edit1.ReadOnly:= true;
Edit2.ReadOnly:= true;
Edit3.ReadOnly:= true;
Edit4.ReadOnly:= true;
Edit5.ReadOnly:= true;
button2.Enabled:=false;
form3.ShowModal;

end;
end;

end.
katttes вне форума Ответить с цитированием
Старый 07.04.2010, 11:14   #8
katttes
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 33
По умолчанию

public
{ Public declarations }
end;

var
Form3: TForm3;
o_question: array[1..75,1..8] of String;
temp_mo: array[1..25] of integer;
temp_no: array[1..5] of integer;
mo,no,no1,no2,no3,no4,no5,so,pro:in teger;
implementation

uses Unit1, Unit2;

{$R *.dfm}
procedure TForm3.o_deduce;
var
f:TextFile;
number:string;
begin
Memo1.Text:= o_question [mo,1];
Memo2.Text:= o_question[mo,no1];
Memo3.Text:= o_question[mo,no2];
Memo4.Text:= o_question[mo,no3];
Memo5.Text:= o_question[mo,no4];
Memo6.Text:= o_question[mo,no5];
StringGrid1.Cells[0,0]:='';
StringGrid1.Enabled:=true;
Memo2.Color:= clWhite;
memo2.Font.Size:=12;
StringGrid2.Cells[0,0]:='';
StringGrid2.Enabled:=true;
Memo3.Color:= clWhite;
memo3.Font.Size:=12;
StringGrid3.Cells[0,0]:='';
StringGrid3.Enabled:=true;
Memo4.Color:= clWhite;
memo4.Font.Size:=12;
StringGrid4.Cells[0,0]:='';
StringGrid4.Enabled:=true;
Memo5.Color:= clWhite;
memo5.Font.Size:=12;
StringGrid5.Cells[0,0]:='';
StringGrid5.Enabled:=true;
Memo6.Color:= clWhite;
memo6.Font.Size:=12;
AssignFile(f, 'C:\result.txt');
Append(f);
number:=inttostr(so);
writeln(f,'Âîïðîñ ¹'+number);
writeln(f,question [temp_mo[so],1]);
CloseFile(f);
end;

procedure TForm3.FormCreate(Sender: TObject);
var
f:TextFile;
buf: string;
k,n:integer;
begin
AssignFile (f, 'C:\result.txt');
Append(f);
writeln(f,'-------------------------------------------------------------------');
writeln(f,' ');
writeln(f,' ');
writeln(f,'-------------------------------------------------------------------');
write(f, 'Ô.È.Î. ñòóäåíòà: '+Unit1.surname+' ');
write(f, _name+' ');
writeln(f, patronymic);
writeln(f,'ÎÁÓ×ÅÍÈÅ');
CloseFile(f);
panel2.Visible:=false;
Memo7.Visible:=false;
form3.Height:=930;
pro:=0;
AssignFile(f, 'C:\testing.txt');
Reset(f);
while (not EOF(f)) do
begin
for k:= 1 to 75 do
begin
for n:= 1 to 8 do
begin
readln(f, buf);
o_question[k,n]:= buf;
end;
end;
end;
CloseFile(f);
so:=1;
o_Color;
label2.Caption:= inttostr(so);
CreateM_o;
CreateN_o;
mo:= temp_mo[so];
o_deduce;
end;

procedure TForm3.Button1Click(Sender: TObject);
var
q,b:integer;
str,str_p,j: string;
f:TextFile;
begin
if StringGrid1.Cells[0,0]='X' then str:= Memo2.Text;
if StringGrid2.Cells[0,0]='X' then str:= Memo3.Text;
if StringGrid3.Cells[0,0]='X' then str:= Memo4.Text;
if StringGrid4.Cells[0,0]='X' then str:= Memo5.Text;
if StringGrid5.Cells[0,0]='X' then str:= Memo6.Text;
str_p:= o_question[mo,7];
if str=str_p then
begin
q:=1;
b:=0;
Memo7.Visible:=false;
Form3.Height:=930;
Panel3.Font.Color:= clLime;
Panel3.Font.Style:= [fsBold];
panel3.Caption:='ÎÒÂÅÒ ÏÐÀÂÈËÜÍÛÉ!';
pro:=pro+1;
Memo7.Text:='Ïîìîùü';
if pro<25 then so:=so+1;
o_Color;
label2.Caption:= inttostr(so);
CreateN_o;
mo:= temp_mo[so];
o_deduce;
end
else
begin
q:=0;
panel2.Visible:=false;
Panel3.Font.Color:= clRed;
Panel3.Font.Style:= [fsBold];
panel3.Caption:='ÎÒÂÅÒ ÍÅ ÏÐÀÂÈËÜÍÛÉ!';
Form3.Height:=999;
form3.Position:= poDesktopCenter;
Memo7.Visible:= true;
Memo7.Text:= o_question[mo,8];
StringGrid1.Cells[0,0]:='';
StringGrid1.Enabled:=true;
Memo2.Color:= clWhite;
memo2.Font.Size:=12;
StringGrid2.Cells[0,0]:='';
StringGrid2.Enabled:=true;
Memo3.Color:= clWhite;
memo3.Font.Size:=12;
StringGrid3.Cells[0,0]:='';
StringGrid3.Enabled:=true;
Memo4.Color:= clWhite;
memo4.Font.Size:=12;
StringGrid4.Cells[0,0]:='';
StringGrid4.Enabled:=true;
Memo5.Color:= clWhite;
memo5.Font.Size:=12;
StringGrid5.Cells[0,0]:='';
StringGrid5.Enabled:=true;
Memo6.Color:= clWhite;
memo6.Font.Size:=12;
end;

AssignFile(f, 'C:\result.txt');
Append(f);
if q=0 then b:=b+1 else b:=0;
j:=inttostr(b);
writeln(f,' êîëè÷åñòâî îøèáîê:'+j);
CloseFile(f);

if pro=25 then
begin
panel2.Visible:=true;
button1.Enabled:=false;
StringGrid1.Enabled:=false;
StringGrid2.Enabled:=false;
StringGrid3.Enabled:=false;
StringGrid4.Enabled:=false;
StringGrid5.Enabled:=false;
Form3.Height:=930;
panel2.Caption:='ÎÁÓ×ÅÍÈÅ ÎÊÎÍ×ÅÍÎ!!!';
PANEL3.Caption:= 'Ïðàâèëüíûõ îòâåòîâ: '+inttostr(pro);
end;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
var
f:TextFile;
begin

AssignFile (f, 'C:\result.txt');
Append(f);
if pro=25 then writeln(f,': îáó÷åíèå çàêîí÷åíî')
else writeln(f,': îáó÷åíèå íå îêîí÷åíî. Êîëè÷åñòâî îòâåòîâ: '+inttostr(pro));
CloseFile(f);
end;
katttes вне форума Ответить с цитированием
Старый 07.04.2010, 13:08   #9
katttes
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 33
По умолчанию

Всем спасибо за помощь! Вся идея была не правильна. Япеределала не много и все заработало
katttes вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списком из другого модуля. DIMANJ Общие вопросы Delphi 4 11.10.2009 13:33
Как обратится к глобальной переменной из модуля tavrocotaps Общие вопросы Delphi 2 10.06.2009 11:08
Как выполнить процедуру (функцию) из другого модуля Всеслав Общие вопросы Delphi 4 23.05.2009 19:43
Создать файл с данными на основе другого файла. Паскаль)) ТРОЯН=) Помощь студентам 13 16.04.2009 18:51
BMP-файл внутри другого файла Pashan Общие вопросы C/C++ 0 08.04.2009 16:37