Austausch 2er Metatrader über txt-File - txt-File abspeichern unter absolutem Pfad

 

Hallo

ich möchte über ein Txt-File Informationen zweier installierter Metatrader austauschen.

Da über die normalen MetaTrader Funktionen dies nicht möglich ist, binde ich die kernel32.dll ein.

Leider klappt es bei mir auf diesem Rechner nicht mehr. Die kernel32.dll ist vorhanden.

Funktioniert bei euch dieses Beispiel: https://www.mql5.com/de/code/8314 

Es wird bei mir kein File erzeugt, und für count erhalte ich "4" und für den buffer selbst "xxxx" 

Unabhängig davon was ich in das selbst erzeugte Dokument schreibe. 

Über einen Tipp wäre ich sehr froh, da ich mich grad ziemlich im Kreis drehe...

File Operations without Limitations
File Operations without Limitations
  • www.mql5.com
Die Funktion von Dateioperationen werden von der Systembibliothek kernel32.dll bereitgestellt. Diese Systembibliothek werden wir in den EA importieren. Der Code ist beigefügt.
 
Doch es geht. Alle Terminals haben Zugang zum selben Ordner Common. Ist eine Option beim Eröffnen des Handles einer Dtei.
 
Carl Schreiber:
Doch es geht. Alle Terminals haben Zugang zum selben Ordner Common. Ist eine Option beim Eröffnen des Handles einer Dtei.

Das geht aber nur, wenn der Metatrader fest installiert ist und keine portable Version, oder?

 
sunshineh:

Das geht aber nur, wenn der Metatrader fest installiert ist und keine portable Version, oder?

Ich habe folgendes erfolglos versucht:

InpDirectoryName = TerminalInfoString(TERMINAL_COMMONDATA_PATH)+"\\Files\\"+"test.csv";    
int file_handle=FileOpen(InpDirectoryName,FILE_WRITE|FILE_CSV);   
if(file_handle == INVALID_HANDLE)
	PrintFormat("Failed to open %s file, Error code = %d",InpDirectoryName,GetLastError());

Und als Ausgabe erhalten

Failed to open C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\Common\Files\test.csv file, Error code = 5002

Im Ordner selbst ist auch keine neue Datei.

Wenn ich dort eine erstelle und auslesen möchte, so erhalte ich den gleichen Fehler.

Mein Metatrader läuft als portable Version, den Common-Data Pfad kennt er aber ja trotzdem.


 
portable ist definit kein Problem. Was heißt jetzt nochmal Error 5002?
 
sunshineh:

Ich habe folgendes erfolglos versucht:

Und als Ausgabe erhalten

Failed to open C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\Common\Files\test.csv file, Error code = 5002

Im Ordner selbst ist auch keine neue Datei.

Wenn ich dort eine erstelle und auslesen möchte, so erhalte ich den gleichen Fehler.

Mein Metatrader läuft als portable Version, den Common-Data Pfad kennt er aber ja trotzdem.


Du sagst ihm auch nicht, das dieses File im Common Ordner ist, das musst du ihm schon mitteilen

 

Nein, ein absoluter Pfad darf als Dateiname auf keinen Fall verwendet werden. Wenn dann so:

int file_handle=FileOpen("test.csv",FILE_WRITE|FILE_CSV|FILE_COMMON);

Der Common Data Path wird automatisch vorne drangehängt.

 
lippmaje:

Nein, ein absoluter Pfad darf als Dateiname auf keinen Fall verwendet werden. Wenn dann so:

Der Common Data Path wird automatisch vorne drangehängt.

Wo wird der common path automatisch drangehängt?

 
amando:

Wo wird der common path automatisch drangehängt?

Das AppData\Roaming\usw wird vor den Dateinamen gehängt.
 
lippmaje:
Das AppData\Roaming\usw wird vor den Dateinamen gehängt.

das geht so nicht, schau in die Doku, du hast nur 2 Möglichkeiten files zu speichern, den eigenen oder den Common Ordner, da brauchst für beides keinen Pfad

Grund der Beschwerde: