Zgodność programu (gry) - WinXP, a Win7

0

Napisałem prostą grę. Wszystko robiłem na laptopie 32b z Win XP. Po przerzuceniu tego samego kodu na win7 64b program dosłownie wariuje.
Grafika się zatrzymuje, zmienne się nie przenoszą. Wszędzie, gdzie kilka wątków musi korzystać z Canvas bitmapy, jest ono blokowane.
Są dwa wątki: główny (odpowiedzialny za form) i gry (odpowiedzialny za granie: poruszanie, ładowanie tekstur, itp.)
Dołączam film porównawczy na YT (za duży na załącznik):
Dołączam kod źródłowy (proszę się powstrzymać od komentarzy odnośnie złego formatowania lub braku optymalizacji)

Sprawdzałem także w trybie zgodności.
Czy można temu zaradzić i jak to zrobić?

1

Drobna uwaga bardziej optymalizacyjna niż funkcjonalna. Zamiast:

procedure TForm1.Edit5KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
edit5.text := '';
end;

procedure TForm1.Edit6KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
edit6.text := '';
end;

Możesz zrobić:

procedure TForm1.Edit5KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  (Sender as TEdit).text := '';
end;

i ustawić jedną prockę na wszystkich editach w DFM. Oszczędzi Ci to trochę kodu ;)

1

Człowieku TThread + Synchronize + F1 or Google!

2

Zmiany interfejsu z wątku pobocznego powinny być synchronizowane z wątkiem głównym za pomocą synchronize. U Ciebie tego nie ma więc może tu leży problem.


Poza tym twój kod strasznie ciężko się analizuje. Nazwy zmiennych nic nie mówiące o ich przeznaczeniu. Jakieś dziwne drabinki ifów i wszystko władowane w jedną metodę.

1
pawel24pl napisał(a)

Dołączam kod źródłowy (proszę się powstrzymać od komentarzy odnośnie złego formatowania lub braku optymalizacji)

To znaczy co, mamy bez słowa pogłaskać Cię po głowie za słabe formatowanie kodu czy ogólnie ewentualną jego słabą jakość?

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