Mit VB6 Datei auf UNIX-Server lesen

Hallo,
ich habe Daten auf einem UNIX-Rechner, die ich mit einem VB-Programm bearbeite. Um die Daten lesen zu können, habe ich mir bei Planet Sourcecode ein Beispiel geladen und verwende davon das Modul, das per FTP auf die UNIX-Maschine zugreift. Dazu greift das Modul auf die wininet.dll zu.

So weit der Teil, der i.O. ist. :wink:

Leider arbeitet das Modul so, daß sich der Rechner an der Unix-Maschine anmeldet, die Datei liest und sich wieder abmeldet.
Der Anwender, der die Daten auf dem Unix-Rechner ändert, erwartet eine sofortige Reaktion. Deshalb muß die Datei alle 2 Sekunden gelesen werden. (eine Möglichkeit, das VB-Programm vom Unix-Rechner aus zu starten kenne ich nicht)
Als Folge wird jede Anmeldung protokolliert und die Platte läuft so weit voll, daß der Rechner abstürzt.

Ich habe schon in dem Modul einiges geändert.
Die Anmeldung und das Lesen habe ich getrennt, aber ich kann die Datei nur ein mal lesen.

Code an der Stelle:

Public Declare Function FtpOpenFile Lib „wininet.dll“ Alias „OpenFileA“

und dann Aufrufe dieser Funktion.
Ich finde kein ‚CloseFile‘ o.ä. !!!

Wie kann ich die Datei mehrmals lesen, ohne jedes Mal die Session zu schließen und neu zu öffnen?

(Was auf der Ünix-Maschine läuft ist ein geschlossenes System, an dem ich nichts machen kann. Ich könnte besten Falls ein Script starten, … wenn ich intensiv darüber nachdenke, wie das ging. Ich habe schon Probleme beim Umgang mit VI :wink:)

Danke schon mal für Tipps.

cu Rainer

Hallo,
ich habe Daten auf einem UNIX-Rechner, die ich mit einem
VB-Programm bearbeite. Um die Daten lesen zu können, habe ich
mir bei Planet Sourcecode ein Beispiel geladen und verwende
davon das Modul, das per FTP auf die UNIX-Maschine zugreift.
Dazu greift das Modul auf die wininet.dll zu.

So weit der Teil, der i.O. ist. :wink:

Leider arbeitet das Modul so, daß sich der Rechner an der
Unix-Maschine anmeldet, die Datei liest und sich wieder
abmeldet.

Hallo
Das Modul scheint für Downloads für normale Internetuser zu sein .
Einzige Alternative , Du suchst Dir alle Funktionen, Befehle und Methoden des Inetcontrols zusammen , und erstellst ein eigenes Modul .
Dann brauchst Du natürlich noch eine Zugriffsberechtigung für den Server .
MfG
Matthias

Hallo Matthias,

Das Modul scheint für Downloads für normale Internetuser zu
sein .
Einzige Alternative , Du suchst Dir alle Funktionen, Befehle
und Methoden des Inetcontrols zusammen , und erstellst ein
eigenes Modul .

Hab’ ich inzwischen gemacht. Weil ich in der dll keinen Befehl finden kann, um das File zu schließen (gibt’s den nicht?) habe ich das Problem umgangen und lade mit ‚FtpGetFileA‘ die Datei erst auf meine Platte und lese sie dann da. So kann ich mich beim Programmstart anmelden, mehrfach lesen, und erst bei Programmende die Session schließen. Die Datei ist nur 80 Zeichen groß, da geht das. Nicht elegant, aber funktioniert.

Dann brauchst Du natürlich noch eine Zugriffsberechtigung für
den Server .

Natürlich werden bei der Anmeldung Benutzername und Passwort übergeben und natürlich verwende ich nicht root. :wink:

Die Syntax für die Funktion zu finden war nicht leicht.
Wie kann ich so etwas sicher finden, wenn mir z.B. eine dll über den Weg läuft, die ich noch nicht kenne. Die verfügbaren Funktionen müssen doch zumindest für die dlls irgendwo dokumentiert sein, die auf jedem Windows Rechner vorhanden sind.

cu Rainer

Hallo Rainer

So ganz verstehe ich nicht, was Deine dll oderDein Modul machen kann , und was Du damit machst.
Was Funktionen im Windows-API betrifft, versuch mal hier:
http://msdn.microsoft.com/
Was undokumentierte Funktionen in dll’s irgendwelcher anderen Hersteller betrifft, so bietet sich an, den Hersteller zu befragen.
Bei undokumentierbaren Funktionen besteht eine große Unsicherheit, so würde ich davon die Finger lassen. Man könnte über den Namen oder die Ordinalzahl die Einsprungsadresse ermitteln, und mit speziellen debugging-tools den Stack begucken , aber das ist schon reichlich vagant.
Das inet-control in der vb-umgebung hat doch eine ausführliche Beschreibung. Damit kannst Du bestimmt einen ftp-download machen, bzw. darauf zugreifen.
Was ich überhaupt nicht verstehe, ist das mit dem mehrfachem Laden.
Warum nicht lesen, ggf. löschen, ggf. neu speichern ???
MfG
Matthias

Hallo Matthias,

So ganz verstehe ich nicht, was Deine dll oderDein Modul
machen kann , und was Du damit machst.

Das Modul stellt die Funktionen der dll zur Verfügung.
Die dll ist von Microsoft.

Was Funktionen im Windows-API betrifft, versuch mal hier:
http://msdn.microsoft.com/

Werde ich gleich tun. Bisher habe ich die Knowledgebase durchsucht, ein verweis auf msdn kam da nicht. Ich werde mir nachher auch mal die msdn-CDs genauer ansehen.

Was undokumentierte Funktionen in dll’s irgendwelcher anderen
Hersteller betrifft, so bietet sich an, den Hersteller zu
befragen.

Von undokumentierten Funktionen lasse ich die Finger. Ich ‚bastel‘ hier auf einem produktiv-System. :wink:

Das inet-control in der vb-umgebung hat doch eine ausführliche
Beschreibung. Damit kannst Du bestimmt einen ftp-download
machen, bzw. darauf zugreifen.

Da habe ich nichts gefunden, was mir hilft.

Was ich überhaupt nicht verstehe, ist das mit dem mehrfachem
Laden.
Warum nicht lesen, …

Das ist, was ich will. :wink:
Ich will die Daten lesen und prüfen, ob das noch die selben sind, wie beim letzten mal. Falls nicht, kann das Programm seine Arbeit machen.
Falls ja, warte ich zwei Sekunden und will dann erneut lesen. Das klappt aber nicht ohne Login/Logout! Genau das ist mein Problem.

ggf. löschen,

Unwichtig. Ob ich lese, oder prüfe, ob die Datei vorhanden ist macht keinen Unterschied, den ich sehe. Es geht um 80 Bytes.

ggf. neu speichern ???

Schreiben darf ich nicht! Dann fliegt mir das System um die Ohren. Hilft auch nicht, ich will ja nur lesen.

cu Rainer