Aktywne Wpisy
PijeWodePoPierogach +255
Bo wiecie, to Wy jadąc przepisowo albo zbyt wolno stwarzacie zagrożenie na drodze( ͡° ͜ʖ ͡°) Pewnie właśnie ktoś za wolno w niego wjechał( ͡° ͜ʖ ͡°) Albo ktoś mu słup na drodze postawił...
#motoryzacja #samochody #polskiedrogi
#motoryzacja #samochody #polskiedrogi
źródło: IMG_20260602_230338
Pobierz
titus1 +36
Może nie granat ale jednak petarda w szambie...
Tak sobie wczoraj siedzimy z żoną przed domem, późno popołudniowa kawa, rozmowy o tym co wydarzyło się w ciągu dnia, co trzeba zrobić w obejściu, ot zwykłe pogaduchy starego małżeństwa. Nagle dzwoni krewna, dziewczyna w naszym wieku, która w czwartek wydaje za mąż córkę. Dzwoni i pyta, czy nie przyszlibyśmy na wesele. Hmm, o tym, że wesele będzie, wiedzieliśmy od kilku miesięcy, ale nikt
Tak sobie wczoraj siedzimy z żoną przed domem, późno popołudniowa kawa, rozmowy o tym co wydarzyło się w ciągu dnia, co trzeba zrobić w obejściu, ot zwykłe pogaduchy starego małżeństwa. Nagle dzwoni krewna, dziewczyna w naszym wieku, która w czwartek wydaje za mąż córkę. Dzwoni i pyta, czy nie przyszlibyśmy na wesele. Hmm, o tym, że wesele będzie, wiedzieliśmy od kilku miesięcy, ale nikt





Mam problem programirki. Robię z kolegą remake pewnego starego programu korzystając z bibliotek Qt. No i natrafiliśmy na kłopot. Po pierwsze wersja oryginalna tego programu jest skompilowana w 32 bitach na jakimś archaicznym środowisku CodeGear. Nawet nie wiem w sumie jaki tam jest kompilator. My korzystamy z 64 bitowego MSVC AMD.
Problem jest następujący. Stary program ma sobie wczytywanie i zapisywanie plików jakiegoś swojego formatu. To jest oczywiście byte array. Wymagana jest wsteczna kompatybilność z odczytywaniem tych plików, więc trzeba te stare pliki jakoś wczytywać i zapisywać do tego samego formatu. I nic nie jest problemem poza jednym miejscem - gdzie funkcja C++ fwrite/fread zapisuje/odczytuje structa w całości zajmując miejsce w pamięci na sizeof(struct). No i Qt nie ogarnia z tego co mi wiadomo czegoś takiego. Operatory >> QDataStream obsługują tylko typy podstawowe + qtowe, drugą opcją jest ReadRawData, więc po prostu wzięcie tego nieszczęsnego sizeof i odczytanie tablicy bajtów na yolo. No ale jak ja mam z tego skleić znowu structa? Ja mam kod źródłowy tego structa i już go wrzuciłem do nowego programu, ale nie jestem pewien czy rzutowanie tego tutaj zadziała? A nawet jeśli da się rzutować char array na struct, to czy kompilator na jakim to było zrobione nie ma znaczenia? W sensie - czy on odzyska wtedy faktycznie oryginał?
Ogółem chciałbym wiedzieć jak to zrobić po Qtowemu i czy to jest w ogóle możliwe. Bo opcją ostateczną jest po prostu, cóż - użycie tych samych funkcji C++, którymi plik był zapisywany. Ale chciałbym tego uniknąć aby po prostu nie sklejać frankenstaina raz odczytując tak a raz tak.
Prawda jest taka, że z tego structa interesują mnie dosłownie trzy pola będące unsigned intami, ale nie jestem wróżką aby wiedzieć, które bajty w zajmowanej pamięci to właśnie te wartości. A tam jeszcze wchodzą takie śmieci jak jakieś funkcje + konstruktory. Gdybym wiedział, które to bajty, to bym je po prostu wybebeszył z char array, rzutował na uint i miał to w dupie.
long, wskaźniki i inne typy mogą mieć róƶne wielkości pomiędzy architekturami.Na windowsie na pewno x64 i x86 mają róƶne wielkości wskaźników (chociaƶ przy
freadraczej ich tam nie ma), ale mimo wszystko bym uwaƶał z wczytywaniem kodu w całości i wypełniał/zapisywał te struktury po kaƶdym członku.https://gist.github.com/anonymous/d6b7654bdfce13e97e7e
To jest cały struct. On jest prosty, ale zawiera funkcje. A ja chcę wybebeszyć pola tylko i wyłącznie.
Ah, problem jest w tym, że ja nie mam możliwości go skompilować na tym starym dziadostwie za bardzo. Muszę szukać po omacku jak już. Mając po prostu zapisane pliki z już skompilowanego programu.
jak w klasie są zawarte funkcje wirtualne, to wtedy ewentualnie jest jeszcze vtable
#include
#include
QDataStream* stream
Tak wstępnie. Wychodzi na to, że same pola są chyba.
źródło: comment_UUJqmCecA2NaAyy4Anj4Mpe8KThFrAcG.jpg
Pobierz