Robię prowizoryczny "czat" dla graczy. Najpierw kod.
Timer1, Interval = 1000:
msg.close;
msg.sql.clear;
msg.sql.add('SELECT * FROM game_chat WHERE id > 0');
msg.open;
while not msg.Eof do begin
almemo1.Lines.Add('['+msg.fieldbyname('author').asstring+'] '+msg.fieldbyname('text').asstring);
del_msg.close;
del_msg.SQL.clear;
del_msg.SQL.add('DELETE FROM game_chat WHERE id='''+msg.fieldbyname('id').asstring+''';');
del_msg.ExecSQL;
msg.Next;
Objasnienie:
- Pobieranie wiadomosci
- Wyswietlanie
- Usuwanie pobranej wiadomosci
Wysyłanie wiadomości:
chat.close;
chat.sql.Clear;
chat.sql.Add('INSERT INTO game_chat (author, text) VALUES ('''+author+''', '''+text+''')');
chat.execsql;
aledit1.Clear;
msg, del_msg, chat to komponenty TADQuery (AnyDac components)
Mój problem polega na tym, że przy testowaniu z kolegą tego czata, niektóre wiadomości - teoretycznie wysyłało, lecz ich nie pokazywało. Prawdopodobnie były od razu kasowane. Drugim problemem jest to, że przy wstawieniu w Timer1 więcej instrukcji - aplikacja się po prostu zawiesza.
Chodzi mi o sposób na wydajniejsze i mniej "stresujące" korzystanie z czatu, bez obaw, ze jakas wiadomosc nie dojdzie, badz aplikacja sie zawiesi przy tak prostych czynnosciach.
Wiem, że sposób na moje wyswietlanie wiadomosci jest zly, bo przy duzej liczbie uzytkownikow cala ta zabawka zacznie wariowac, dlatego proszę was o pomoc, o naprowadzenie na "wlasciwa droge" ...