Programy 16bit na Windows 7 32 bit

0

Mam stary paskal BP 7, który produkuje programy 16-bitowe.
I one działały mi normalnie na win 7, a wczoraj odpalam a tu kaput: błąd i kaplica, nie działa - akcess violation w module system, tj. jakaś procedura systemowa paskala pada.

No i cóż to może być?
Kiedyś podobnie było w XP, ale coś tam trochę zmieniałem i działało,
pamiętam że raz zdarzyło się że funkcja AnsiUpper rozwalała program
dla argumentu długości zero, więc sobie po prostu sprawdzałem:
if strlen(s) >= then AnsiUpper ... no i było OK.

A teraz to nie wiem co tam tak raptownie mogło wykitować - jakieś ustawienia ochrony, czy jak?

1

Dlaczego nie pobierzesz kompilatora z tej epoki?
Z tego, co mi wiadomo, wsparcia dla takich 16-bitowych programów nie ma od Visty, więc to przypadek, że działało...

0

Może więcej szczegółów?

Czy pusty program begin end. działa czy się wywala?
Czy Hello world działa czy się wywala?

Jaki dokładnie to jest błąd? jaka procedura?

Pewnie masz błąd po prostu w programie, i przez przypadek działało…

Generalnie programy DOS-owe działające w konsoli (nie w trybie graficznym) powinny działać i pod Windows 8.1 (oczywiście 32-bitowym).

0
Azarien napisał(a):

Może więcej szczegółów?

Czy pusty program begin end. działa czy się wywala?
Czy Hello world działa czy się wywala?

Jaki dokładnie to jest błąd? jaka procedura?

Pewnie masz błąd po prostu w programie, i przez przypadek działało…

Generalnie programy DOS-owe działające w konsoli (nie w trybie graficznym) powinny działać i pod Windows 8.1 (oczywiście 32-bitowym).

Z tego co widzę te dosowe działają normalnie, a nawet windowsowe, np. starsze wersje tego, który teraz wywala (ale też nie wszystkie, bo mam ich kilka - różne języki itd.).
Nie wiem... ale ja tam nic istotnego nie zmieniałem, chyba od... 10 lat...
pewnie znowu pęka jakaś systemowa funkcja, z tego wow, ja było przedtem z AnsiUpperBuff.

Coś z allokcją też coś kiedyś nawalało; program tworzy tablice potężnych rozmiarów (jak na aplikację 16-bit) - słowniki ponad 100 tyś. pozycji, i inne takie listy słów, czy zdań.
Albo i przy zakończeniu wywalało: exit, a tu jeb - acces violation... te nowe windowsy wysyłają chyba nadal jakieś komunikaty do zniszczonego i zdeallocowanego już okna.

Kiedyś nawet po poprawnym zamknięciu programu, po paru minutach wyskoczył komunikat z tego programu... no ale to był mój taki świetny błąd. :)

0

Zaraz, powoli.
To jest to 16-bitowy program windowsowy? takie rzeczy trzeba jasno zaznaczyć...

Tak czy inaczej, wydaje mi się że to jednak program ma błąd - który do tej pory jakoś uchodził, a nagle przestał.

0

No, ale to się zmienił raptownie - na win 7.
Działało normalnie i długo, a potem nie używałem z miesiąc.
Teraz odpalam i nie da rady.

Ostatnio zmieniałem trochę ustawienia windows, i odpaliłem też sprawdzacz plików systemowych: sfc /scannow.

Wcześniej nie mogłem wejść w niektóre foldery, np. Documents and settings i dalej,
więc tam sobie zmieniłem zabezpieczenia i teraz mogę.
Ale pojawiła się rekurencja katalogów, typu:
user\Dane Aplikacji\ i tu jest znowu folder: Dane Aplikacji, wchodzimy, i tu znowu, i tak można w nieskończoność.

Program, który szuka po katalogach może się na tym łatwo wysypać, bo będzie przecież nieskończenie szukał:
Dane Aplikacji\Dane Aplikacji\Dane Aplikacji\Dane Aplikacji\Dane Aplikacji\Dane Aplikacji\ ...

więc zablokowałem dostęp do tego linka, i teraz to zniknęło całkowicie, więc chyba jest OK.

Zauważyłem też inny objaw - w jednej grze, normalna 32 bit.
Gdy ta gra się posypie, co niekiedy się zdarza w nowszych wersjach Windows, pewnie z powodu strasznego pomieszania wielu wersji tego DirectX,
wówczas przy nowym uruchamianiu tej gry pojawia się zapytanie, czy zmienić opcje - ustawienia, itd.
No i tam bez przerwy ten komunikat mi wyświetlało, pomimo że gra nie wywalała się.
Prawdopodobnie gra tworzyła tam jakiś log, do którego system zablokował potem zapis,
więc gra czytała go tylko, a skasować nie mogła, no i stąd ten permanentny komunikat.

0
Patryk27 napisał(a):

Dlaczego nie pobierzesz kompilatora z tej epoki?
Z tego, co mi wiadomo, wsparcia dla takich 16-bitowych programów nie ma od Visty, więc to przypadek, że działało...

Jakiego kompilatora?
BP7, a raczej BPW 7 to seria narzędzi do obiektowego paskala: IDE, kompilator, workshop, plus biblioteka OWL, i inne rzeczy, wszystko z lat 90-tych.
Tylko debagery nie działają począwszy od XP.

0

Jakiego kompilatora?

FPC? Z całym środowiskiem Lazarusem?

0

Teraz odpalam i nie da rady.
Ale masz źródła żeby zobaczyć na czym się wywala? Bo tak na razie z objawem „wywala mi się” niewiele można pomóc.

0
Azarien napisał(a):

Teraz odpalam i nie da rady.
Ale masz źródła żeby zobaczyć na czym się wywala? Bo tak na razie z objawem „wywala mi się” niewiele można pomóc.

Program ma ponad 1MB kodu - kilkanaście plików paskala... chyba ze 100 tyś, linii razem.

W źródłach jest na pewno OK.
Chodzi mi bardziej o to co ten Windows może blokować, ograniczać dostęp, itd.

Przywracałem też ostatnio system, tak z 10 dni do tyłu, więc może wtedy coś pokaszaniło się - pomieszał wersje bibliotek z tymi aktualizacjami, albo coś tam...
ewentualnie to strategia MS - eliminacja starych programów, których obsługa komplikuje im robotę, no i zysków nie przynosi ze sprzedaży nowych platform programistycznych.

0
Patryk27 napisał(a):

Jakiego kompilatora?

FPC? Z całym środowiskiem Lazarusem?

Raczej kaszana...

Obecnie próbuję go przerzucić na 32 bit, ale nada z tymi OWL, bo tam jest tego... z milion ton,
a z tego co wiem, ogarnia to jedynie Virtual Pascal - też szmelc, no ale najniższym kosztem pójdzie.

Wolałbym przerobić to kompletnie na C++, no ale to kupa roboty.
Może ktoś nie ma co robić, i się podejmie... no ale musiałby być arcymistrzem w obiektowym paskalu, owl, c++ i perfect znać winapi - 16 i 32 bit, wsio naraz. :)

0

Jeśli szukasz najniższego kosztu, to Windows 7 Pro ma coś takiego jak XP Mode. (trzeba doinstalować)

To jest tak naprawdę wirtualka XP-ka, integrująca się z pulpitem Win7.
Pod XP Mode program powinien ruszyć.

0

Każdy Win 32 bit obsługuje 16 bitowe programy.
Win 7 również, ale mi się coś zjeb*** i dlatego nawala.

Kiedyś pod XP podobnie wywalał acces violation, ale nie od razu na starcie.

Długo szukałem błędu i nic nie znalazłem.
Zmieniłem jedynie sekwencję w kodzie, i już nie wywalał się:
zładowałem tam dane po wybraniu opcji przed otwarciem okna, a wcześniej samo okno to robiło.

loadslowa(6); // ładuje słówka dł. 6, jeśli nie są już załadowane - i ten kod jest zbyteczny, bo okno samo ładuje jeśli potrzeba
dialogBox(6, ...); // otwiera okno które wyświetli słowa dł. 6

w zasadzie zerowa zmiana, ale program się już nie wywalał, co znaczy że to system - Windows jest popsuty, a nie program.

Sprawdzałem teraz na Virtualu z win 98, i wsio działa, i do tego jak rakieta - błyskawica... aż się przestraszyłem!
Im nowszy Windows tym wolniej programy działają... fest postęp. :)

0

Można zresetować ustawienia Windwsa 7 ?
Uprawnienia, poziom ochrony, te różne komunikaty - alarmy, usługi, itd. na domyślne, tj. na takie, jakie są z instalacji.

0

Namierzyłem to wreszcie!

PrintDlg coś tam szmaci po instalacji Worda no i to tyle...

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