[Delphi] Przerzutka z Delphi 5 na Delphi 2005

Odpowiedz Nowy wątek
2006-09-30 13:08
0

Mam problem... Otóż gdy zapisałem w Delphi 5 jakiś rekord do pliku, to nie odczytuje się on w Delphi 2005. Rozumiem, że w Delphi 2005 poszczególne typy zmiennych inaczej są zapisywane niż w Delphi 5. Nigdzie nie mogłem znaleźć odpowiedzi na to pytanie, więc piszę. Czy istnieje jakiś sposób na kompatybilność (tak jak było w Pascalu: smallint [Delphi] = integer [Pascal], wystarczyło podmienić...)? Czy może pamięć jest całkowicie inaczej zarządzana i nic mi już nie pomoże (a wtedy dużo stracę, bo nie będę mógł przekonwertować cennych danych do nowych wersji programu)?

Pozostało 580 znaków

2006-09-30 13:35
Luc
0

przyczyną może być różny rozmiar rekordu w obu wersjach. Nie wiem jak to jest w D5, ale w D2k5 rozmiary pól są "zaokrąglane" do 4 bajtów. Spróbuj użyć packed record

Pozostało 580 znaków

2006-09-30 14:10
0

Hmm, dziwne. To chyba coś innego. Sprawdziłem rozmiary rekordów w Delphi 5 i 2005. Oto wynik: w Delphi 5 rekord ważył 120 bajtów, a w 2005 - 106. Packed record nie pomaga.

Pozostało 580 znaków

2006-09-30 22:34
0

Musi istnieć jakaś kompatybilność wsteczna. Pokaż definicje rekordu.

Pozostało 580 znaków

2006-10-01 17:07
0
  TOptions = record
    TerrainDetail: boolean;
    resx: integer;
    resy: integer;
    fullscreen:boolean;
    resbpp: integer;
    resfilter: integer;
    lowtex: boolean;
    sfxvol:integer;
    musvol:integer;
    sett:integer;
    sdevice:integer;
    sbuffer:integer;
    wsens:integer;
    DDIK_Q:integer;
    DDIK_W:integer;
    DDIK_S:integer;
    DDIK_A:integer;
    DDIK_D:integer;
    DDIK_Z:integer;
    DDIK_X:integer;
    DDIK_G:integer;
    DDIK_P:integer;
    DDIK_R:integer;
    DDIK_TAB:integer;
    DVK_SHIFT:integer;
    DVK_F1:integer;
    gammaramp:currency;
    gore:byte;
    waterfx:boolean;
    highprior:boolean;
  end;

Zajmuje to 120 bajtów w Delphi 5, 106 w Delphi 2005 (pisałem już, ale tak na "w razie czego")...

Pozostało 580 znaków

2006-10-01 17:53
0

To na pewno wina użycia record zamiast packed record. Sprawdziłem na D7: jest dokładnie tak jak piszesz: record daje 120 bajtów, packed record daje 106.

Packed


<font color="red">Konto porzucone</span>

Dzięki wszystkim forumowiczom za lata wspólnych dyskusji; miłej zabawy w programowanie!
Sławomir 'Szczawik' Włodkowski

Pozostało 580 znaków

2006-10-01 18:10
0

Dzięki... Czyli Delphi 2005 automatycznie "pakuje" rekordy? To napisanie konwertera w Delphi 5 będzie kaszką z mleczkiem. [browar]

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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