Pascal-ile zajmuja typy danych?sprzecznosci

0

problem:mam odczytac plik binarny(robie to w c++)ktory zostal zapisany prawdopodobnie w pascalu(o ktorym prawie nic nie wiem :/).Potrzebuje info po ile bajtow zajmuja poszczególne typy w Pascalu(Turbo Pascalu?) np.integer?Szukajac przez goole znalazlam sprzeczne info i brak wytlumaczenia.np raz pisze ze integer to 2 bajty a innym razem ze to 4 bajty.Znalazlam tez info ze to min.2 bajty.Moje pytanie.Ile zajmuje bajtów np.ten intyger(i inne typy)i ewentualnie od czego to zalezy?Z gory dzieki:)

0

W delphi (czyli object pascalu) typ ten ma wielkość 4 bajtów. Nie jestem pewny, ale w turbo pascalu jest chyba wielkości 2 bajtów. Sprzeczności mogą wynikać właśnie stąd, że dostajesz wyniki wyszukiwania dla różnych wersji pascala.

0

jeśli dobrze zrozumialam.....zeby odpowiedziec sobie na to pytanie(patrz wyzej)musze sie dowiedziec w jakiej wersji Pascal-a zostal zapisany ten mój plik binarny?ps.wiem ze plik ten powstal ok.1988roku

0

Mialem ostatnio ten sam problem. Da sie go dosc latwo rozwiazac w bcb. Zmienia sie to w project->options->advanced compiler->data aligment. Tam z tego co pamietam domyslnie jest udstawione na Word i trzeba zmienic na Byte i wtedy odczytuje jak trzeba. Jesli masz taka mozliwosc poszukaj jakis ustawien kompilatora w tym czego uzywasz i zmien to co napisalem.
A problem tkwi w tym ze kiedys typ int w c byl 2 bajtowy a jak sie chcialo zapisywac wieksze liczby to byl do tego long, natomiast teraz te typy sa tozsame i maja po 4 bajty. Z tego co moj przedmowca pisal podobnie jest w pascalu i delphi.

0

Dzieki mafiek :)ale...czy móglbys dokładniej wytłumaczyc co znacza twoje słowa " wtedy odczytuje jak trzeba" Bo ja po zmianie tego o czym pisałes nie zauwazylam żadnej róznicy.ps.Uzywam bcb 4

0

Mialem plik w ktorym byly struktury zawieracjace liczby typu int i byly problemy z ich odczytaniem tzn(to byly liczby ponizej 2000 a mi odczytywal jako bardzo duze liczby). Dopiero zmiana tego co Ci napsalem pomogla i dane odczytywane byla tak jak powinny. Jesli chcesz to moge sprobowac Ci jakos pomoc. gg 366225.

0

niestety problem nadal otwarty.....I pojawil sie nastepny.Jesli w Pascalu zmienna boolean zajmuje tylko 1 BIT pamieci...jak to odczytac z pliku binarnego za pomoca c++?

0

W pascalu zmienna Boolean zajmuje cały bajt

0

Dzieki hes....ale ja sie oparłam na tym co znalazłam:"TYP LOGICZNY - BOOLEAN - typ ten może przyjmować jedynie dwie wartości: TRUE (prawda) lub FALSE (fałsz) dzięki temu zajmuje on jedynie 1/8 bajta". niezle zamieszanie mam :/

0
kasiuniunia napisał(a)

"TYP LOGICZNY - BOOLEAN - typ ten może przyjmować jedynie dwie wartości: TRUE (prawda) lub FALSE (fałsz) dzięki temu zajmuje on jedynie 1/8 bajta". niezle zamieszanie mam :/

Tylko jak zapisać 1 bit do pamięci, albo do pliku? :) Podstawową jednostką jest tutaj bajt, więc mniej nie zapiszesz. Chyba, żeby ktoś specjalnie bawił się w jakieś maski bitowe, zapisując pod rząd kilka booleanów. Ale najprawdopodobniej są to po prostu bajty o wartościach 0/1.

// Dopisane
A w 1988 roku właśnie powstał TP 5.0. Więc może by dorwać takiego pascala 4.0-5.0 i sprawdzić przez sizeof, jakiej wielkości są typy danych? :)

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