![]() |
Vista: Turbopascal startet Win32 Exe nicht
Moin Leute :hi:
Ich habe schon ein bisschen gesucht und nichts gefunden. Von meinem Programm in Turbopascal aus starte ich eine Delphi-Applikation durch. Unter Win98 benutze ich eine etwas andere Konstellation als unter XP. Es funktioniert unter den beiden Systemen einwandfrei. Bloß unter Vista geht das nicht. Von einer Konsole aus kann ich das Delphi-Programm starten. Hat jemand damit Erfahrungen gesammelt? Wer ärgert sich noch mit Borland- oder Turbopascal rum? Es gibt bestimmt noch einige Leidensgenossen, die eine alte Anwendung weiter pflegen müssen. Stefan |
Re: Vista: Turbopascal startet Win32 Exe nicht
Was passiert denn wenn Du versuchst, das Delphiprogramm zu starten? Überhaupt nichts? Oder gibts ne Fehlermeldung?
Möglicherweise hat Dein TP-Programm ungenügende Rechte unter Vista. |
Re: Vista: Turbopascal startet Win32 Exe nicht
Evtl. wurde unter Vista die Konstellation unterbunden, dass 16-bittige Programme 32-bittige starten dürfen. Allerdings reine Vermutung, ich habe kein Vista und kann das deshalb nicht nachvollziehen.
|
Re: Vista: Turbopascal startet Win32 Exe nicht
Zitat:
das Orakel ist etwas ratlos, es weiss nicht, was Turbo Pascal dafür kann, wenn MicroSoft ihre Exe Formate nicht mehr unterstützt. Ansonsten was wäre dagegen einzuwenden, das TP Programm unter Delphi zu Kompilieren, und das mit dem 32 Bit Kompiler. Dann sollte das doch gehen. Schöne Grüße aus Delphi |
Re: Vista: Turbopascal startet Win32 Exe nicht
Es passiert einfach nichts. Weder eine Meldung noch eine Fehlercode von der Delphi-Anwendung.
Zitat:
:gruebel: Das geht? |
Re: Vista: Turbopascal startet Win32 Exe nicht
Ah, ich habe eine Kleinigkeit herausgefunden: Ich öffne die Windowsanwendung mittels FreeHeapAndExec.
Delphi-Quellcode:
Es klappt bei leerem Heapspeicher, später nicht mehr. Dann wird der Fehler in meiner Anwendung liegen.
Function FreeHeapAndExec( Command : String;
Params : String):Word; Var lF : Text; lTimeOut : LongInt; OldHeapEnd, NewHeapEnd : Word; Error : Integer; lGetError : Boolean; Begin Error:=0; If MemAvail<$1000 then Error:=8; If Error=0 then Begin {$IfDef MsDos} NewHeapEnd:=Seg(HeapPtr^)-PrefixSeg; OldHeapEnd:=Seg(HeapEnd^)-PrefixSeg; asm mov ah,4Ah mov bx,NewHeapEnd mov es,PrefixSeg Int 21h jnc @EXIT mov Error,ax @EXIT: End; If Error=0 then Begin {$EndIf MsDos} lGetError:=Pos(' DOSERROR ',' ' + UpStr(Params) + ' ') > 0; if lGetError then EraseFile(ExtractFileDir(Command) + 'DosError.Dat'); if Pos('CONGDI',UpStr(Params)) > 0 then Message('vor'); SwapVectors; Exec(Command,Params); SwapVectors; if Pos('CONGDI',UpStr(Params)) > 0 then Message('nach'); if lGetError and (DosError = 0) then begin lTimeOut:=Ticks + 86{5 Sekunden}; while not FileExists(ExtractFileDir(Command) + 'DosError.Dat') and (Ticks < lTimeOut) do Delay(1000); Assign(lF,ExtractFileDir(Command) + 'DosError.Dat'); Reset(lF); If IoResult = 0 then begin ReadLn(lF,Error); if IoResult = 0 then ; end; Close(lF); if IoResult = 0 then ; end; {$IfDef MsDos} asm mov ah,4Ah mov bx,OldHeapEnd mov es,PrefixSeg Int 21h jnc @EXIT mov Error,ax @EXIT: End; End; {$Else MsDos} if Error = 0 then Error := DosError; {$EndIf MsDos} End; FreeHeapAndExec:=Error; End; |
Re: Vista: Turbopascal startet Win32 Exe nicht
Zitat:
Deine unten gequotedete Funktion kannst Du gegen "ShellExecute" ersetzen. Wird von Windows bereitgestellt. Die ganzen INT 21h aufrufe gibt es natürlich auch nicht mehr und wären gegen neuere Systemfunktionen zu ersetzen. Wenn ich mir deine Funktion so ansehe, denke ich fast, eine Portierung nach Delphi wäre einfacher und schneller, als den Fehler zu suchen. Schöne Grüße aus Delphi |
Re: Vista: Turbopascal startet Win32 Exe nicht
Ja, da bin ich bei. Ich binde erst das DOS-Programm in ein Fenster in meiner Delphi-Anwendung ein und rufe die Teile passend auf. Dann portiere ich Stück für Stück und meine Kunden sehen dann immer mehr Windows. So kommt dann auch keine Unruhe auf, wenn die sehen, dass sich immer etwas tut.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz