Wyskakujące okienko zmienia dane w tabeli

0

Robię edytor graficzny, na ekranie wyświetlają mi się różne TImage. Wygląd takiego TImage'a zależy od danych z tabeli. W TImage.Tag przechowuję wskaźnik na pole tabeli z danymi.

Problem polega na tym, że jeśli podczas pracy edytora wyskoczy mi jakie kolwiek okienko( typu showmessage ), wartości w tabeli z danymi( niektore ) zostają nadpisane bzdurami.

var
   test : integer;
begin
test := TCounter( ObMyCon.TabCon.Tab[ 2 ].Tag ).FontSize; // test = 240;
Showmessage( '' );
test := := TCounter( ObMyCon.TabCon.Tab[ 2 ].Tag ).FontSize; // test = 0;

Nie mam pojęcia jak i gdzie może to się nadpisywać. Program nie wchodzi pomiędzy czasie do żadnej funkcji/procedury. Próbowałem wyłączyć optymalizację.

Edit. wszystkie adresy i wartości w Tag zostaja nie zmienione, w programie nie mam żadnych dodatkowych wątków( po za jednym do progressBara przy zapisiwaniu danych ).

0

Nie wiem czy to tylko przykładowy kod napisany z głowy, czy skopiowany z programu, w każdym razie masz błąd w drugim przypisaniu (podwójny operator) - to tylko sugestia; Po drugie - to nie są tabele, tylko tablice (tabele masz w bazach danych) - też sugestia;

Pokaż deklarację klasy TCounter i podaj, czy do właściwości FontSize masz jakiąś metodę dostępową, która mogłaby zmieniać wartość tej właściwości; Nie wiem, czy debugowałeś ten program, więc jeśli nie to opcja F7 i jedź linia po linii w kodzie, który odczytuje wartość z właściwości - w ten sposób dowiesz się co i kiedy zostaje wykonane;

Możesz podać więcej informacji na temat użytej klasy - im więcej podasz informacji tym szybciej znajdzie się rozwiązanie.

0

Może masz jakiś TTimer lub wątek działający w tle?

0

Mam kilka timerów, ale nawet ich wyłączenie nie pomaga, doszło do tego, że "za break pointowałem" każda procedure i funkcje w programie, żadna nie jest wykonywana :/
problem zdaża się tylko gdy uzywam messageBoxów, showow itp, okno modalne zrobione przeze mnie nie wywołuje tego problemu.
w 99% przypadków zmieniane jest tylko jedno pole tablicy( ciągle to samo ).

Ok, namierzyłem, ze jest to ostatni element Tablicy więc poszperam tym tropem.

0

Może indeksujesz tablice nie od zera?

0

zgadza się indeksuje od 1.

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