[Delphi] Error przy nowym oknie.

0

Hi guys, nie mam juz pomyslow jak rozwiazac problem. Wiec tak:
progs to chat opierajacy sie na socketach, gdy user dostaje pakiet (numer ID + text wiadomosci) od innego usera to prog sprawdza w TStringList czy juz jest otworzone okno dla danego usera, jesli tak to text ma wpasc do RichEdita, jak nie to ma stworzyc okno. No i wszystko pieknie dziala ale tylko dla pierwszego usera i textu. Pozniej gdy ma sie stworzyc 2 okno mamy errora EAccessViolation i o dziwo okno sie tworzy...rowniez jest error, gdy ten sam user przesyla inny txt. Oto kod:

{rozdzielenie pakietu na ID (numerek) i text (txt)}

jest:=false;
For i:=0 to lista.Count-1 do
If lista[i]=IntToStr(numerek) then
begin
jest:=true;
l:=i;
end;

If jest=false then
begin
lista.add(IntToStr(numerek));
SetLength(okienka,Length(okienka)+1);
okienka[ilosc_okien]:=TChat.Create(Form1);
okienka[ilosc_okien].Name:=okienka[ilosc_okien].Name+IntToStr(numerek);
okienka[ilosc_okien].Caption:=IntToStr(numerek);
okienka[ilosc_okien].Show;
okienka[ilosc_okien].RichEdit1.Lines.Add(txt);
ilosc_okien:=ilosc_okien+1;
end;
If jest=true then okienka[l].RichEdit1.Lines.Add(txt);
end;

Please help :-)

0

ja w czacie rozwiązałem ten problem tak:

var
NoweOkno, StareOkno: TForm2;

begin
StareOkno := (FindComponent('NazwaOkna') as TForm2);
if StareOkno nil then //tu znak "różne od" przed "nil"
begin
TForm2(StareOkno).RichEdit1.Lines.Add('Tekst do dodania');
TForm2(StareOkno).Show;
end else
begin
NoweOkno:=TForm2.Create(Self);
NoweOkno.Name:='NazwaOkna';
NoweOkno.RichEdit1.Lines.Add('Tekst do dodania');
NoweOkno.Show;
end;
end;

Jak czegoś nie rozumiesz to pisz :D

0

Wszystko skumalem i dziala, wielkie dzieki [browar].

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