Moj program nie zapisuje pliku -pomocy!!!

0

procedure TForm1.ToolButton1Click(Sender: TObject);

begin

  Form2:=TForm2.create(Self);
  form2.RichEdit1.Text:='';
  Form2.Show;

end;

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Form2:=TForm2.Create(self);
FORM2.RichEdit1.Lines.LoadFromFile(OpenDialog1.Filename);
Form2.Caption:=OpenDialog1.Filename;
Form2.Show;
end;
end;

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
(ActiveMDIChild as TForm2).RichEdit1.Lines.SavetoFile(SaveDialog1.FileName);
(ActiveMDIChild as TForm2).Caption:=SaveDialog1.FileName;
end;
end;

forma2 to
bla bla
type
TForm2 = class(TForm)
bla bla
var
Form2: TForm2;

RichEdit1 to komponent Form2
Prosze o pomoc nie zapisuje mi pliku i wywala bledy

0

To sobie sprawdź jakie błędy wyskakują i gdzie... - i będzie wszystko jasne.

0

Nie wiem co jest grane ale bledy wyskakuja podczas runowania
Accesss violation at adress bleble in module project1.exe Read of adress bleble.
Sprawdzalem prawa dostepu i jest ok.

0

Prawdopodobnie dwa razy tworzysz formę ...

0

Podczas dzialanie programu wysypuje sie blad podany przeze mnie i zostaje wskazana linijka
(ActiveMDIChild as TForm2).RichEdit1.Lines.SavetoFile(SaveDialog1.FileName);

0

To nic, że wskazuje tą linijkę, błąd może być zupełnie gdzie indziej. Zresztą błąd wyskakuje przy uruchamianiu, a te procedury które wkleiłeś wykonywane są dopiero po naciśnięciu klawiszy. Składnia tej linijki, którą wskazuje kompilator jest prawidłowa.

0

procedure TForm1.ToolButton1Click(Sender: TObject);

begin

  Form2:=TForm2.create(Self);
  form2.RichEdit1.Text:='';
  Form2.Show;

end;

Coś mi się zdaje że błąd jest tutaj raczej nie odwałuj się do tego RICHEdita przed pojawieniem się formy (lepiej w OnCreate 2 formy)

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Form2:=TForm2.Create(self);
FORM2.RichEdit1.Lines.LoadFromFile(OpenDialog1.Filename);
Form2.Caption:=OpenDialog1.Filename;
Form2.Show;
end;
end;

Upewnij sie że ta forma jest zamknięta zanim ją stworzysz drugi raz

Ale sam nie wiem

0

Form2:=TForm2.create(Self);
form2.RichEdit1.Text:='';

Skoro tworzysz formę w trakcie działania programu to skąd na niej RichEdit, też byś musiał go stworzyć. Jednak jestem przekonany że Form2 stworzyłeś w fazie projektowania więc wywal to Form.create.

Podczas dzialanie programu wysypuje sie blad podany przeze mnie i zostaje wskazana linijka
(ActiveMDIChild as TForm2).RichEdit1.Lines.SavetoFile(SaveDialog1.FileName);

debuger zawsze wskazuje linjikę następną po tej na której program się wysypał, co potwierdza żo musisz wywalić form.create .

Upewnij sie że ta forma jest zamknięta zanim ją stworzysz drugi raz

Zamknięcie formy w żadnym wypadku nie daje ci prawa na powtórne jej tworzenie.

0

TForm2 znajduje sie w drugim Unicie.I na tej formie znajduje sie komponent RichEdit.Wiec taka linijka kodu
Form2:=TForm2.create(Self);

moze tworzyc mi wiele takich samych formularzy z komponentem RichEdit.
Ale probowalem wywalic te linijke niestety pojawia sie ten sam blad. :|
NIe moge tez tworzyc wielu takich form. ale dzieki za podpowiedzi moze wkoncu sie uda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1