Skocz do zawartości

[Delphi] Trudna przesiadka z Delphi 5 na Delphi XE


sybic

Polecane posty

Mam dość rozbudowany, dość pojemny ale mało zaawansowany projekt pisany pod Delphi 5. To wszystko podniosłem do Delphi XE. Ze stringami sobie poradziłem, ale mała forma do ustawiania kolorów już nie. O ile na Win XP w kompozycji Classic działa bez problemu to w kompozycji WinXP działać już nie chce.

 

Udało mi się ustalić, że głównym sprawcą jest procedura Canvas.PolyGon(slice(..))

Pytanie : czy Delphi XE to jest jakoś inaczej implementowane?

 

A może jakaś dobra dusza zechciała by rzucić okiem na projekt?

http://www.republika.pl/sps_kielce/tmp/tmp_colory.zip

 

pod frazą "błąd" jest ta procedura

Link do komentarza
Udostępnij na innych stronach

Ja ostatnio się orientowałem w temacie i nie wiem czy dobrze to ujmę: okazuje się, że seria XE jest jakby to powiedzieć z założenia przystosowana do pracy z różnymi wersjami Delphi z serii XE, czyli taki program ma być kompatybilny w przód i w tył, a to po to żeby programiści piszący w grupie na rożnych wersjach nie mieli problemów ze złożeniem jakiegoś projektu w całość.

Podejrzewam ze aby taki efekt osiągnąć część funkcji uległa zmianie, część skasowaniu, a część weszła nowych dlatego są dwie możliwości (po rozmowie telefonicznej z doradcą technicznym) albo stare programy ciągnąć na starych Delphi albo przepisać je na nowe zmieniając fragmenty kodu, które nie działają tak jak powinny.

 

 

Edit: Niestety nie mam XE :(, więc nie podpowiem.

Link do komentarza
Udostępnij na innych stronach

Z tym pisaniem od początku w Delphi XE jest poważniejszy problem.

 

Jeśli np. w Delphi 5 dam w module

 

Const

X : integer = 1;

 

A potem gdzieś

 

X := 5;

 

To po podciągnięciu tego do Delphi XE jest OK.

 

Ale gdy zaczynam od początku pisanie Delphi XE i zmienne po const deklaruje w taki właśnie sposób,

to już w próba zmiany tej zmiennej kończy się błędem.

 

O co tu chodzi?

Link do komentarza
Udostępnij na innych stronach

Powiem na przykładzie Delphi 2007 bo takie mam,

 

const
  cXmax = 10;
  cXCount = cXmax +1;
$)(kk\"z^#zór8ŹŁs6ŹjhĘnWŚŚźmh('!*zxrk+i62jWhw8jś-ir'zśŚx9zx|ŚĘh)ó{:jx'hgdjŚ)bbrł;Zh&kŹ3z:hz0k6{,zv3z
)óyn'hŚhŚ){Ł,Śrs9rZvVŻ<io)yhŹ,+-'ĄJłŚs7(jWj'jhŚkęn'hŚźr0z
ĘyĘ+v+]ui'
type
 PArrStr = ^TArrStr;
 TArrStr = array of String;

 PRArrStr = ^TRArrStr;
 TRArrStr = record
    max: Integer;
    arrs: TArrStr;
 end;

var
  MyArr: TRArrStr ; 

begin
  // a potem gdzieś na początku przy ładowaniu danych daję
  MyArr.max:= 100;
  SetLength(MyArr.arrs, MyArr.max+1);


  for i:= 0 to MyArr.max do
  begin
     ...

 

Dlaczego max zamiast count? bo kiedyś doszedłem do wniosku, że się częściej używa wartości w pętlach count-1 niż samego count przy zwiększaniu wielkości tabeli.

Link do komentarza
Udostępnij na innych stronach

Z tym pisaniem od początku w Delphi XE jest poważniejszy problem.

 

Jeśli np. w Delphi 5 dam w module

 

Const

X : Integer = 1;

 

A potem gdzieś

 

X := 5;

 

To po podciągnięciu tego do Delphi XE jest OK.

 

Ale gdy zaczynam od początku pisanie Delphi XE i zmienne po const deklaruje w taki właśnie sposób,

to już w próba zmiany tej zmiennej kończy się błędem.

 

O co tu chodzi?

 

przy deklaracji stałej użyj dyrektywy

 

 
const {$J+} 
 X: integer = 1;
{$J-}

 

wtedy możliwe będzie przeprowadzanie operacji zapisu wartości do tej stałej w bloku kodu (o to o co Ci chodziło).

 

Wraz z importem projektów z Delphi 5 jest importowane ustawienie kompilatora "Assignable typed constants" = True. Możesz to włączyć globalnie dla nowo tworzonych projektów przechodząc do

 

Project -> Options -> Delphi Compiler -> Compiling -> Syntax options -> Assignable typed constants

 

i ustawiając tę wartość na True. Wtedy {$J+} jest ustawione domyślnie dla wszystkich modułów, uzyskasz tym sposobem zachowanie dla stałych jakie znasz z Delphi 5.

 

Pozdrawiam!

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...