premus 10 Geschrieben 15. April 2005 Melden Teilen Geschrieben 15. April 2005 Hallo, hat jemand eine Ahnung wie ich Windows XP dazu bewegen kann direkte Laufwerkszugriffe aus alten MS-DOS-Anwendungen zu akzeptieren. Ich hab das Problem dass eine alte DOS-Anwendung eines Kunden direkt aus der Anwendung (Clipper5) eine ASCII-Datei auf eine Diskette schreiben möchte. Wird dies durchgeführt meldet sich XP dass da einer direkt auf ein Laufwerk zugreifen möchte und das ist gar verboten :( Gibts da womöglich einen Schalter um das zuzulassen Grüße Roland Zitieren Link zu diesem Kommentar
RamRequester 10 Geschrieben 15. April 2005 Melden Teilen Geschrieben 15. April 2005 Hi premus, habe von ASCII-Dateien und Befehlen leider nicht die große Kenne oder Ahnung, aber bestünde nicht eventuell die Möglichkeit dem Programm oder dem Nutzer über die Sicherheits-Freigabe, die es genauso wie bei den anderen Ordnern(über Eigenschaften) für Laufwerke A gibt, eine Freigabe einzurichten, mit deren Hilfe sich die Fehlermeldung umgehen ließe? Muß zu meiner Schande gestehen, daß ich noch nicht vor einem ähnlichen Problem gestanden habe(Gott sei Dank, puhh und bisher Schwein gehabt, toi, toi, toi xxxxx!!) und möchte mit meinem Kommentar auch nicht unterstellen, daß Du nicht eventuell auch schon selber auf diese Möglichkeit gestoßen sein kannst. Würde mich jedenfalls interessieren, ob es auf die beschriebene Weise klappt?! :wink2: So long & P.S.: Noch´ne andere Idee bzw. Frage: Laufen alle anderen Win32-Anwendungen einwandfrei? Zitieren Link zu diesem Kommentar
Das Urmel 10 Geschrieben 15. April 2005 Melden Teilen Geschrieben 15. April 2005 Hallo, Gibts da womöglich einen Schalter um das zuzulassen Ja, gibt es. der nennt sich Win98 :p Zitieren Link zu diesem Kommentar
Finanzamt 73 Geschrieben 16. April 2005 Melden Teilen Geschrieben 16. April 2005 Hi! Wie sicher bist Du Dir, daß die Clipper-Anwendung direkt auf Disk schreiben will? Es ist m.E. zumindest ungewöhnlich. Üblicher ist es, einen Ausgabeport einzustellen (LPTx, COMx, File), im Programm COPY TO [Device] zu programmieren bzw. mit SET PRINT TO z.B. "File" anzugeben und einen Druckbefehl abzuschicken. Welches Device genau, stellt man dann via Parameter ein (und sollte in der Bedienungsanleitung des Programmes stehen). Wenn das der Fall ist, könntest Du die Ausgabe an LPTx schicken und LPTx mit einem lokal freigegebenen Generic-Drucker an File mappen. Gegrüßt Zitieren Link zu diesem Kommentar
premus 10 Geschrieben 16. April 2005 Autor Melden Teilen Geschrieben 16. April 2005 Hallo Finanzamt, das Programm ist von mir und da bin ich grad sicher dass direkt auf die Diskette zugegriffen wird. Das schreiben der Datei wird mit "Low-Level" Befehlen bewerkstelligt und die greifen ohne Umwege auf die Laufwerke zu. XP mag das grad überhaupt nicht dass da wer am Betriebssystem vorbei direkt auf Hardware zugreift und ich befürchte dass ich für die Geschichte wirklich einen Windows 98 PC hinstellen muß. Mist aber auch mit diesen alten Programmen (heul). Ich könnte das umschreiben auf einen Windows-Compiler, jedoch wer soll das bezahlen :-( Falls doch noch jemand eine Lösung hat würde ich mich wirklich freuen :-) Grüße Roland Zitieren Link zu diesem Kommentar
lupo45 10 Geschrieben 16. April 2005 Melden Teilen Geschrieben 16. April 2005 Hi! Installier einfach eine virtuelle Maschine und lass da drin deine DOS-Antiquitäten laufen, dann sollte das klappen! Zu empfehlen sind VMware oder Virtual-PC...ist jedenfalls billiger als'ne 2. Hardware mit Schrott-OS hinzustellen... :D Zitieren Link zu diesem Kommentar
Finanzamt 73 Geschrieben 16. April 2005 Melden Teilen Geschrieben 16. April 2005 Hi Premus, wenn's von Dir ist, dann hast Du ja auch noch die Entwicklungsumgebung und könntest was ändern. Ich denke, es wird auch nicht zu viel sein, weil SchreibenAufDiskette ja nur bei bestimmten Exports Sinn macht. Was nutzt Du: fopen() oder C/ASM-Inline? Und was schreibst Du? Könntest Du das evtl. mit einer Tabelle lösen? Einfache Struktur, nur ein Feld, z.B. ZZ,Char,254 (oder weniger, je nachdem, wieviel Platz Du wirklich brauchst). Falls Du Zeile für Zeile LowLevel schreibst, könntest Du diese Tabelle auf einem freien Select öffnen und in einer Schleife mit APPE BLAN Satz für Satz mit Deinem Report oder was auch immer füllen. Wenn Du dann nicht direkt mit der Tabelle weiterarbeiten kannst, könntest Du sie .SDF nach A:\IrgendWas.TXT kopieren ... schon das müßte funktionieren. Wenn Du das Programm noch längere Zeit brauchst und es auf 32 Bit portieren willst, kannst Du Dir auch Alaska in einer Probierversion runterladen und den Übersetzer bemühen. Die Umstrickerei hält sich in Grenzen und Probleme wie beschrieben gibt es nicht. Du behieltest die zeichenorientierte Anwendung, hättest aber echtes 32Bit. und brauchst für die Distribution nur rund 1 MB .DLLs. Alternative sind auch Delphi mit TDBF, dbWin oder Fox - dann aber mit GUI und entsprechendem Aufwand und wie Du schreibst, auch Kosten. Du kannst mir auch gerne die relevanten Codestücke mailen; mein erstes xBase war dBase 1.1 unter CP/M und für die meisten xBase-Befehle habe ich Substitutionen in C. Gegrüßt! PS @viele: Das mit Schrott ist so eine Sache. Versucht mal, unter irgendeiner Windows-Version was in Echtzeit zu programmieren. Oder macht eine Meßdatenerfassung. So schön die Mausklickerei ist: Kleine Routinen in ASM-Antiquitäten geschrieben sind um Potenzen performanter als bildreiche "Sind Sie sicher?" Hindernisrennen. Und mancher hat für eine Spezialanwendung 5stellige DEM-Beträge ausgegeben und soll jetzt noch mal das gleiche in Euros ausgeben, damit es auf einer 10*schnelleren Maschine 5*langsamer geht? Zitieren Link zu diesem Kommentar
zuschauer 10 Geschrieben 16. April 2005 Melden Teilen Geschrieben 16. April 2005 Hi ! Ich halte den Ansatz von Finanzamt auch für den günstigeren. Der Vorteil von Clipper war ja, daß man eine lauffähige Umgebung hatte ohne weitere Zusatzkosten, im Gegensatz zu dBase-Lösungen. @Finanzamt: fopen() war doch aber auch kein LowLevel-Zugriff, der sollte doch funktionieren, oder irre ich mich da ? Zitieren Link zu diesem Kommentar
Wurzerl 10 Geschrieben 16. April 2005 Melden Teilen Geschrieben 16. April 2005 @Premus Wenn Du das Programm im Kompatibilitätsmodus von z. B. Win95 laufen lässt (Eigenschaften der Anwendung - Kompatibilitätsmodus), könnte es funktionieren. @Finanzamt Das mit Schrott ... Selten sprach mir ein Finanzamt so aus der Seele :D Zitieren Link zu diesem Kommentar
Finanzamt 73 Geschrieben 17. April 2005 Melden Teilen Geschrieben 17. April 2005 @Zuschauer: Ich stimme Dir zu. FOpen, FRead, FWrite etc. wurden aber in den diversen xBase-Dialekten als "Low-Level" Routinen bezeichnet; ein z.B. sektorweises Lesen/Schreiben war m.W. nirgendwo implementiert. Und genau deshalb (!) fragte ich nach. Diese F...()-Routinen erlaubten z.B. über _dos_creat [int 21h ?] und Handle die diversen Dateioperationen. So jedenfalls sieht es in meiner Lib aus (vgl. Codeschnipsel). Und das sollte als Konsolenanwendung laufen. Gegrüßt! /** FOpen() **/ Num FOpen( dateiName, modus) Char *dateiName; Num modus; { Signed datei; /** Dateihandle --------------------**/ Int zugriff = modus == FIO_O_NUR_LESEN ? O_RDONLY : modus == FIO_O_NUR_SCHREIBEN ? O_WRONLY : O_RDWR; zugriff |= O_BINARY; /** Kein CR/LF-Mapping -------------**/ datei = open( dateiName, zugriff); /** Datei öffnen -------------------**/ ErrnoVar = datei != -1 ? 0 : errno; /** Fehlerstatus setzen ------------**/ return( (Num) datei); /** Rückgabe: Dateihandle ----------**/ } /** FWrite()**/ Num FWrite( datei, puffer, anzZeichen) Num datei; PVoid puffer; Num anzZeichen; { Signed writeStat = write( (int) datei, (Char *) puffer, (int) anzZeichen); ErrnoVar = writeStat != -1 ? 0 : errno; return( (Num) writeStat); } Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.