DUMAND Цитата: Вопрос по чтению из текстового файла. Файл:
____________________
Фамилия=Иванов
Воспользуйтесь TIniFile.
Я не пробовал работать с пустой секцией
edit1.text := MyIniFile.ReadString('', 'Левый глаз. Диагноз', 'Не задан');
Попробуйте, если не получится вам прийдеться изменить код который формирует файл с данными. Возможно два варианта:
1. В коде с WriteLn добавить еще один WriteLn(F, '[UserInfo]');
Чтение будете делать edit1.text := MyIniFile.ReadString('UserInfo', 'Левый глаз. Диагноз', 'Не задан');
2. Преписать этот код заново с использованием TIniFile.
(преймущество в том что вам не нужно будет следить за порядком вызовов при записи)
Можете также структурировать данные в файле.
Например так
[UserInfo]
фамилия=
Имя=
[Diagnoz]
Левый глаз. Рефракция=
правый глаз. =......
[TestingData]
String1=1.00000 0.0004
String2=999 989898 6765
ну и так далее.
А потом писать из разных мест программы в этот файл не заботясь о других секциях.
Цитата: 2. Предположим в приложение есть дополнительная форма form2. Как открыть ее кнопкой button1 из основной формы form1? И как закрыть кнопкой button2 в форме form2.
Все зависит от.... :)
1. Если форма модальная (должна не давать работать с программой до тех пор пока ее не закроют), тогда в секции Implementation в Uses напишите что-то на подобии:
Uses ..., UForm2; (UForm2 -- имя модуля (файла))
в обработчике button1.click(...) пишете
var Frm : TForm2;
begin
Frm := TForm2.Create(Application);
try
Frm.ShowModal
finally
Frm.Free;
end;
end;
В Form2.Button2.click()
пишете
ModalResult := MR_OK;
2. Если форма не модальная (В чем я сомневаюсь). тогда все немного сложнее:
в
interface
uses .... , UForm2;
в
TForm1 =Class(...)
private
FFrm : TFORM2;
.....
в обработчике button1.click(...) пишете
begin
if not Assigned(FFrm) then begin
Frm := TForm2.Create(Application);
end;
FFrm.Show
end;
в обработчиках Form1.OnCreate()
пишете
begin
inherided;
.....
FFrm := nil;
end;
в Form1.On.Destroy()
begin
.....
FFrm.Free
FFrm := nil;
.....
inherided;
end;
В Form2.Button2.click()
пишете
Close;
В Form2.OnClose()
пишете
begin
Action := caHide;
end;