| |
|
|
- Seite 1 - |
|
Andreas Spelter | Moin moin,
ich bekomme eine Textdatei geliefert die Daten enthält die ich grafisch darstellen möchte. Die Datei hat immer den selben Namen und kommt auf einer PCMCIA-Karte daher. Mit meinem Programm möchte ich nun mehrere dieser Dateien in ein Diagramm zeichen um diese miteinander vergleichen zu können.
Also starte ich mein Programm und lese die erste Datei mit folgendem Programmteil ein und lasse sie zeichnen: KompilierenMarkierenSeparierenassign #1,sDatei$
reset #1
input #1,sZeile$ Datum lesen
sDatei$=mid$(sZeile$,13,4)+"-"+mid$(sZeile$,10,2)+"-"+mid$(sZeile$,7,2)+"_"+mid$(sZeile$,1,2)+"-"+mid$(sZeile$,4,2)
...
input #1,sZeile$
rX%=val(substr$(sZeile$,2,","))
rY%=val(substr$(sZeile$,5,","))
moveto (rX0%+rX%*3.5),(rY0%-rY%*1.5)
whilenot @eof(#1)
input #1,sZeile$
rX%=val(substr$(sZeile$,2,","))
rY%=val(substr$(sZeile$,5,","))
lineto (rX0%+rX%*3.5),(rY0%-rY%*1.5)
endwhile
close #1
Nachdem nun also die erste Kurve gezeichnet ist, muß die PCMCIA-Karte also aus dem Notebook raus und in einem Drucker mit einer neuen Datei beschrieben werden und genau hier beginnt mein Problem: Windows 2000 weigert sich die Karte zu deaktivieren, es behauptet immer sie würde noch verwendet und ich solle es später nochmal versuchen. Aber auch Stunden später geht es noch nicht, erst wenn ich mein Programm beende kann ich die Karte deaktivieren. Wenn ich die Karte bei aktivem Programm einfach so entferne bekomme ich schimpfe von Windows beim nächsten einstecken der Karte piepst Windows dann zwar, findet die Karte aber trotzdem nicht und mein Programm dann selbstverständlich auch nicht. Also Karte nochmal raus, nochmal Mecker von Windows, Karte wieder rein und alles ist wieder gut. Ich kann die Karte lesen aber danach wieder nicht deaktivieren und das ganze Spiel beginnt wieder von vorne.
Wenn mein Programm nicht läuft kann ich die Karte jedesmal deaktivieren oder auch unter Windows-Gemecker einfach so entfernen beim nächsten einschieben wird sie sofort erkannt.
Irgendwie scheint also mein close #1 die Karte nicht freizugeben. Es wird aber wirklich jedesmal durchlaufen.
Was kann ich gegen diesen Fehler tun?
Viele Grüße Andreas |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
Jörg Sellmeyer | Hallo Andreas, Vielleicht reicht auch schon ein FileMode 0 für Readonly vor dem Assign. Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.12.2004 ▲ |
|
|
|
|
Andreas Spelter | Danke für die Tips, alles probiert, nichts hilft:
Solange mein Programm aktiv ist kann ich die Karte nicht deaktivieren, selbst dann nicht wenn ich die Datei von der Karte mit shell cmd... auf die Festplatte kopiert und von dort gelesen habe.
Noch mehr Ideen?
Andreas
PS: Hab gerade noch ein Notebook mit Windows 98 gefunden, das stellt sich mit meinem Programm nicht so pingelig an: Karte raus, Karte rein, einlesen geht. |
|
|
| |
|
|
|
| Ich hab Dir hier mal ne dll gebastelt - versuchs mal damit.
Wichtig dabei ist das die DLL nicht per usedll geladen wird - sondern nur per extern. Die DLL hat auch nur eine Funktion CP Filename1 Filename2 CopyFileMode.
Mit dem einstellbaren CopyFileMode kannst Du ja mal rummspielen.
Es kann aber sein das die DLL mit komischen Pfaden nicht klarkommt. Teste es bitte erst wie ich auf LW C. Also bei mir klappte es wunderbar.
So gehts: KompilierenMarkierenSeparierenSalve, iF |
|
|
| |
|
|
|
Andreas Spelter | Danke für die Mühe, aber diese DLL funktioniert bei mir nicht.
- unter Windows 98 hängt sich das Programm einfach weg - unter Windows 2000 gibt es immer zwei Fehlermeldungen und ist dann weg - unter Windows XP erzeugt es entweder eine Datei mit wirrem Dateinamen und falschem Inhalt oder ist nach zwei Fehlermeldungen weg
Ich hatte für diese Versuche auch wirklich nur dieses Programm übersetzt:
cls print external (cp.dll,cp,c:est1.txt,c:est2.txt,0)+ Bytes waitkey end
Andreas |
|
|
| |
|
|
|
| Welches Profan hast?
Wenn <xprofan, dann mache statt
print external (cp.dll,cp,c:est1.txt,c:est2.txt,0)+ Bytes
einfach
f1$=c:est1.txt f2$=c:est2.txt print external (cp.dll,cp,addr(f1$),addr(f2$),0)+ Bytes
Salve, iF |
|
|
| |
|
|
|
Andreas Spelter | Ich arbeite hier mit Profan 7.0 unter Windows XP.
Mit dem Umweg über die Variablen hat es einmal fast funktioniert: Es wurde die richtige Datei kopiert, das Ziel hatte auch den richtigen Namen am Ende der Datei wurden jedoch einige Zeilen gelöscht und irgendwelcher Unsinn angehängt.
Bei allen weiteren Versuchen passierte jedoch nichts mehr, auch nicht nach einem Neustart von Windows, das Programm hängt sich jetzt immer nach test weg.
Andreas
cls declare f1$ declare f2$ print test f1$=c:est1.txt f2$=c:est2.txt print external(cp.dll,cp,addr(f1$),addr(f2$),0)+ Bytes waitkey end |
|
|
| |
|
|
|
Jörg Sellmeyer | Hallo, Du mußt auf jeden Fall entweder Großbuchstaben für die Literale benutzen oder den Backslash doppelt schreiben. Ansonsten interpretiert Profan das als Tabulator. Also: C:TEST.TXT c:\test.txt Wenn es tatsächlich schon bei print test hängt, fällt mir allerdings auch nix dazu ein. Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 02.12.2004 ▲ |
|
|
|
|
| Das mit dem Print <- war wirklichn blödes Beispiel. Wäre ja nicht die 1. Sprache mit Escsequenzen.
Machs doch anders - wenn die Anwendung beendet sein muß - dann beende sie doch. Machen wir ein Trick. Laß deine Exe das File einfach über ne 2. Instanz kopieren. Solle doch deine exe sich selbst aufrufen mit nem parameter.
shell par$(0)+ -copyit
Deine exe stellt am anfang des Programmes fest das es mit nem Parameter gestartet wurde:
if trim$(par$(1))=-copyit
copy bla bla END
endif
und kopiert das File. Die exe die es kopierte is doch dann beendet.
Was da nun der Unterschied sein soll zwischen dem Aufruf einer CMD oder einer Eigenen exe weiß ich auch nicht - aber ein Versuch isses wert.
Salve, iF |
|
|
| |
|
|
|
Andreas Spelter | es geht voran: Das Kopieren funktioniert jetzt, aber die Datei wird beim kopieren verändert:
Andreas
cls declare f1$ declare f2$ print test f1$=d:\test1.txt f2$=d:\test2.txt print external(cp.dll,cp,addr(f1$),addr(f2$),0)+ Bytes waitkey end |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Andreas Spelter | Oh weh, bin ich blöd!
Es war gar nicht ASSIGN und CLOSE das die Karte festhält, sondern das FINFFIRST mit dem ich vorher überprüfe ob die Datei überhaupt vorhanden ist.
Ich hoffe Ihr könnt mir noch einmal verzeihen.
Andreas |
|
|
| |
|
|
|
|
Schön das es jetzt funzt. |
|
|
| |
|
|
|
Dennis Schulmeister | Ich fürchte, dass wir nicht ganz ohne Konsequenzen wegkommen, Andreas. Seien wir mal nicht so. Drei mal das Roland-Unser und zwei mal nächtlich der Profan²-Kranz sollten genügen. |
|
|
| (Fast) alle Profan²-Versionen seit Version 2.6, sowie (fast) alle Windows-Versionen seit Windows 3.1 | 03.12.2004 ▲ |
|
|
|