anoniem Geplaatst: 7 maart 2004 Delen Geplaatst: 7 maart 2004 Ik heb een tijd geleden een programma geschreven in pascal waarin geen geheugen meer vrij is. Om nu een uitbreiding te kunnen maken voor dit programma wil ik een windows programma opstarten vanuit dat pascal/dos programma. Het dos programma hoeft niet te wachten op de uitvoer. Voor swapvectors is geen geheugen! Is het mogelijk om met pascal 7 een windows programma te starten zonder dat er geheugen vrij gemaakt moet worden? Aangezien ik de klant al beloofd heb dat we het zo gingen doen is dit een heel serieus probleem! Quote Link naar reactie
anoniem Geplaatst: 8 maart 2004 Auteur Delen Geplaatst: 8 maart 2004 Het is al lang geleden dat ik met pascal heb geprogammmeerd. Maar kan je geen .bat bestand uitvoeren ? (en dit batch bestand het windows bestand laten uitvoeren) Kijk anders even hier : http://www.bsdg.org/swag/EXEC/index.html Quote Link naar reactie
anoniem Geplaatst: 8 maart 2004 Auteur Delen Geplaatst: 8 maart 2004 Ik ben ook niet zo blij met een uitbreiding van het pascal programma, ik moet toch regelmatig stevig nadenken van hoe was het ook al weer. Op de pagina die je tipt staan een paar interessante opties die de job zouden moeten kunnen klaren. Als het werkt laat ik het je nog even weten. Nu gebruik ik met de standaard swapvectors 50000 byte voor de aanroep en dat kan ik niet missen. Als ik hiermee 30000 byte kan terugwinnen ben ik klaar. Bedankt. Quote Link naar reactie
anoniem Geplaatst: 18 maart 2004 Auteur Delen Geplaatst: 18 maart 2004 Misschien een paar onbruikbare ideetjes :P : Kun je niet een deel van het geheugen swappen naar de harde schijf? Of gebruik maken van extended memory? Quote Link naar reactie
anoniem Geplaatst: 19 maart 2004 Auteur Delen Geplaatst: 19 maart 2004 Inmiddels heb ik een goede oplossing m.b.v. een execute routene die geen geheugen kost. [code:1:4cb2ac164f] PROCEDURE ReallocateMemory(P : POINTER); ASSEMBLER; ASM MOV AX, PrefixSeg MOV ES, AX MOV BX, WORD PTR P+2 CMP WORD PTR P,0 JE @OK INC BX @OK: SUB BX, AX MOV AH, 4Ah INT 21h JC @X LES DI, P MOV WORD PTR HeapEnd,DI MOV WORD PTR HeapEnd+2,ES @X: END; FUNCTION EXECUTE(Name : PathStr ; Tail : STR127) : WORD; ASSEMBLER; ASM {$IFDEF CPU386} DB 66h PUSH WORD PTR HeapEnd DB 66h PUSH WORD PTR Name DB 66h PUSH WORD PTR Tail DB 66h PUSH WORD PTR HeapPtr {$ELSE} PUSH WORD PTR HeapEnd+2 PUSH WORD PTR HeapEnd PUSH WORD PTR Name+2 PUSH WORD PTR Name PUSH WORD PTR Tail+2 PUSH WORD PTR Tail PUSH WORD PTR HeapPtr+2 PUSH WORD PTR HeapPtr {$ENDIF} CALL ReallocateMemory CALL SwapVectors CALL DOS.EXEC CALL SwapVectors CALL ReallocateMemory MOV AX, DosError OR AX, AX JNZ @OUT MOV AH, 4Dh INT 21h @OUT: END; [/code:1:4cb2ac164f] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen