30. maj 1999 - 13:17Der er
20 kommentarer og 1 løsning
Turbopascal-Delfi-konversion
Da der ikke er nogen kategorier med det indrømmet lidt forældede turbo-pascal (7)-programmeringssprog føler jeg mig nødsaget til at oprette spørgsmålet her da delfi jo er (var ?) efterfølgeren der mest lingnede vores gamle kære turbo (hulk).Mine turbo-programmer vil slet ikke køre på den maskine jeg fik for ½/ til 1 år siden (windows 98).Faktisk mener jeg at nogen af programmerne fungerede fint indtil jeg installerede delfi.Jeg kunne selvfølgelig prøve at afinstallere men der er jo sikkert en anden forklaring.En slægtning jeg har har osse en maskine af samme type, men kører windows 97 og har ikke nogen problemer, jeg har dog ikke tænkt mig at nedgradere.På min gamle 486 havde jeg windows 97 og slet ingen problemer, så det må være noget med setuppet af windows.Håber nogen har nogen opklarende løsninger ellers må jeg specificere det lidt mere med de fejlmeddellelser der kommer blandt andet men en af disse jeg kan huske er;
"Error: division by zero"
Og det mærkelige er at hvis jeg går ned og compilerer i turbo vers 3 er der ingen problemer overhovedet.Men det er jo lidt tungt. Imidlertid lykkes kompileringen somme tider (ca hver 3 gang) men det kompilerede program vil altså ikke køre, men kommer med den nævnte kryptiske meddellelse.
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Det er samtlige de mange forskellige programmer jeg har lavet i årenes løb, der ellers på tidligere maskiner/systemer har været velfungerende, som ved kørsel af det compilerede program allerede ved opstart melder fejl.Vedbliver man med at forsøge at køre programmerne vil det nogen gange kunne lade sig gøre.Det skal bemærkes at programmerne er skevet til DOS og kører i et vindue af windows.
Division er jo en gammel kending.... Kan det tænkes at have noget med den måde den laver beregninger på?
Hvis compileren er sat op til at bruge matematisk co-processer, så prøv at slå det fra (Så den emulerer det med software). Hvis den er sat til at emulere det, prøv at slå den til at bruge co-processoren.
Ja, jeg forstår det godt, men det kan ikke have noget at gore med selve beregningerne i programmet, da de jo fungerer upåklageligt i andre sammenhænge.Iøvrigt er der ingen problemer med at "runne" programmet. Jeg skal imidlertid nok prøve at lege med de indstillinger du foreslår og iøvrigt tak for interessen, men jeg må indtil videre afvise svaret som sandsynligt.Der er noget med windows- versionen turbo-7 ikke forstår.(I gamle dage var der tit gevinst ved og information til at fordele extended og expanded memory, og det har jeg osse overvejet at gå ind i setup og forsøge, men det skulle jo være helt aut. med real mode og hvad ved jeg.Det er alt for kompliceret).Og jeg kan selvfølgelig tilføje at kører man i dos-mode er der heller ingen problemer, men det var jo netop det jeg i mange år stræbte efter ikke at skulle (tilbage i 286-erens dage).Jeg er kort sagt hægtet af og er lidt vemodig ved at skulle slippe et stort kartotek med mange sjove programmeringseksempler, hvilket som nævnt en af mine slægtninge, der deler min turbo-lidenskab ikke har haft behov for og den eneste forskel på vores maskinopsætning og hardware er at han bruger windows 97.Han har osse lissom mig Delfi installeret.Vil osse forsøge at reinstallere Delfi og se om det hjælper, men min lidenskab er som tidligere nævnt ikke stor nok til at jeg vil nøjes med windows 97.
Du mener vel 95 eller 98, men det er ikke vigtigt. Umiddelbart lyder det som om nogle compilerdirektiver får dit program til ikke at opføre sig særlig pænt i Windows. Og hvis koden generelt er lidt Dos-hack agtig, understøtter windows det sikkert ikke. Der er jo en del gamle dos-programmer der ikke virker under DOS...
Prøv evt. at give et konkret eksempel, så der er noget at arbejde med...
Ja selvfølgelig er der noget jeg har glemt at fortælle og det er nok mere sandsynligt at problemet centrerer sig om denne programmeringsmæssige spidsfindighed, men ellers er betingelserne nogenlunde nøjagtigt beskrevet: følgende lille trik i min programmeringsteknik adskiller sig bl.a fra den slægtning jeg nævner ikke har samme problem.Og desværre indgår denne feature i de fleste af mine programeksempler og det er osse der curseren havner i første omgang under forsøg på fejlfinding: Memo: array[ 0..1 ] of record Scr: array[0..24] of Columns; Extra: array[1..48] of integer;
end absolute $B800:0000;
Dette lille triks med memo bruges til
"at skrive direkte til skærmen"
og er altså noget min "nye" maskine ikke vil spise.
Det er svært for mig at fjerne denne programmeringsingrediens fra mine programmer, da jeg brugte den gennem nogle år og udover at den er totaltinfiltreret i programmerne vil de virke fattige og blodtomme hvis de skulle genopbygges uden. Jeg ville selvfølgelig være meget stolt over vise at et eksempel på en exe fil jeg kan lægge ind som zip på en web- side evt sammen med kildefilerne, men det bliver nok ikke lige i dag (har haft døgnvagt og er lidt for slap til den slags lige nu). Du spurgte hvad mit program laver: Det er et skema hvor man udfylder nogle talværdier og så regner det nogle ting ud.Memodelen bevirker at resultaterne skives ud på et defineret sted på skærmen, der således ikke ruller som mere simple programmer (kan dog rulle når man kommer til bunden af skærmen). I virkeligheden skulle jeg jo prøve at lave det i javascript, hvilket nok er meget nemmere, men det var altså ikke det der var spørgsmålet. MVH Jan jeg er ikke sikker på
Det er jo trist, da det sikkert er fordi Windows ikke kan spise den form for tilgang til skærmen. Sker det også hvis du kører det i fuldskærm? I så fald er der nok ikke noget at gøre.
Der er dog et windows program (makecompat) eller noget i den stil, som kan bruges til at få gamle programmer til at køre under Windows - det ligger vistnok i System bibbet, ellers er det nok en del af de gamle powertoys... Let me know if you need it.
Kan slet ikke finde noget som helst nede i det bib i øjeblikket, men jeg er som nævnt osse lidt træt i dag.Og det med powertoys er jeg helt blank i. Vil meget forsøge nogen af dine forslag der lyder meget fornuftige, selvom det vil i den sidste ende vel kun vil betyde at mine programmer kun kan køre på min specielt konfigurerede maskine ?.(hvis det i bedste fald virkede).Jeg ved i øvrigt godt at selve problemstillingen er lidt kontrær, fordi dossen nok ikke er så interessandt for særlig mange. Jeg har selvfølgelig osse prøvet at lave det som en consolapplikation i Delfi, men her er problemstillingen stort set den samme.Programmer uden memo kører fint, men ikke mine memo-versioner. Og det er bare svært at se i øjnene at man skal til at starte fra scratch. Men det skal I selvfølgelig ikke "lide under".Så svært skulle spørgsmålet heller ikke være.Jeg kunne bare godt tænke mig at få indkredset HVORFOR. Og jeg synes selv det er ved at dæmre lidt.
Iøvrigt er der osse en mulighed for at det skyldes carambolage med at man når man har både Delfi og turbo-pascal installeret "stjæler" Delfi Pas-fil associationen på computeren (er der iøvrigt nogen der ved hvordan man kan omgå det vil jeg godt ofre en snes point på det).Jeg har iøvrigt kørt et af de compilerede programmer der ikke virker og der gives en fejlmeddellelse om error 200 ved.. og så en adresse. Iøvrigt synes jeg kørsel af delfiprogrammer tit får maskinen til at gå ned efter win98 er det en oplevelse andre Delfi-folk har ?.
Hvordan man omgår filtyperegistreringer? Jeg er ikke sikker på det er det du mener, men her er en mulighed:
Klik / dobbeltklik "denne computer". vælg Vis || Mappeindstillinger. vælg fanen Filtyper Find nu den filtype du gerne vil lave om på. Du kan også tilføje egne...
(Microsoft har en mani med at flytte rundt på dette, så alt efter din version af Windows / Internet Explorer / Skrivebordsopdateringer mv. er det desværre ikke sikkert at det er der du skal finde det.
Så du skal bare klikke dig ind med svar (har jeg ladet mig inf. om at man gør) Og tak for deltagelsen.Man kan jo håbe på et par kommentarer hvis nogen måske har stødt på noget af lign. karakter.
Fejlen "Div by 0" kommer i gamle turbo/borland pascal programmer hvis de afvikles på en maskine der er hurtigere end 200MHz Pentium. Det er en intern fejl i Borland's CRT Unit
Memo: array[ 0..1 ] of record Scr: array[0..24] of Columns; Extra: array[1..48] of integer;
end absolute $B800:0000;
I virkeligheden er det ikke denne ingrediens, den ikke vil "sluge", Da jeg nylig har kunnet compilere en reduceret udg. hvor denne metode forekom.Men at det skyldes en "ingediens" er jeg ikke i tvivl om formentlig en procedure med en funktion jeg kalder "scanasc".
og det er denne var der driller som den ikke vil acc.:
regs :registers;
Er der nogen, der kender et alternativ til dette på de nymodens maskiner: spm oprettet u Registeralternetiv
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.