[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 558

 
peco:

Es tut mir leid, ich kann nicht finden... können Sie mir das bitte sagen.

WIE VERSCHIEBT MAN ALLE ELEMENTE EINES EINDIMENSIONALEN ARRAYS UM 1 INDEX?

Gibt es einen Vorgang oder muss er in einer Schleife durchgeführt werden?


https://www.mql5.com/ru/forum/131859/page8#434278
 
Chiripaha:

Nicht wirklich...

Ich wollte so etwas wie ein Menü erstellen. Genau wie in bool Variable entweder falsch oder wahr.
Damit der Benutzer nur auf klar definierte Werte des Parameters klicken kann. Damit er nicht "versehentlich" unnötige einträgt, denn in diesem Fall wird der Expert Advisor nicht richtig funktionieren.

Der Benutzer ist sogar ich selbst. Denn es ist möglich, dass man vergisst, welche Parameter für eine bestimmte Variable vorhanden sein sollten.

MQL4 verfügt nicht über eine solche Möglichkeit (MQL5 hingegen schon). Sie können diesen Parameter bei der Initialisierung überprüfen und, wenn er nicht einem bestimmten Wert entspricht, einen Fehler melden. Dann sollte sie gleich zu Beginn des Starts überprüft werden. Ich habe das zum Beispiel in meinem EA getan:

extern int  val=5;
       bool val_error=false;
// -----
init()
{  ...
   if (val!=5  || val!=10 || val!=20 || val!=40 ||
       val!=60 || // и т.д.)
      {   val_error=true;
          Alert("Неправильный val!");
      }
   ...
}
// -----
start()
{  if (val_error=true) return;
   ...
}
 

Hallo zusammen. Ich versuche, eine Funktion zu schreiben, die eine Datei in ein vom Benutzer angegebenes Verzeichnis schreibt (Arbeit außerhalb der Sandbox).

Ich habe den Code mit der Bibliothek"ZI_File_Functions_Full_Lib" geschriebenhttps://www.mql5.com/ru/code/8577

Die Funktion"PathFunctions.dll."https://www.mql5.com/ru/code/10873 ist nicht geeignet, da es mit Vista funktioniert, ich habe Windows 7.

Alles Unnötige wurde entfernt, da das Lesen nicht erforderlich ist, man nimmt einfach ein Verzeichnis und erstellt dort eine Datei mit einem Wert, der anfangs bekannt ist, das ist alles.

Fragen:

1. Ich kann nicht herausfinden, wo der Wert ist, den wir in die Datei schreiben?

2. Ich kann nicht feststellen, wo ein Fehler geschrieben wird?

Vielen Dank im Voraus.

//===============================================================================================================================================================
//     Импортируемые функции.
//===============================================================================================================================================================

#import "ntdll.dll"
int RtlGetLastWin32Error();
int RtlSetLastWin32Error (int dwErrCode);
#import
#include <WinKernel32.mqh>                                      // Заголовочный файл библиотеки "kernel32.dll" функций API Windows XP.

//===============================================================================================================================================================
// Объявленные константы.
//===============================================================================================================================================================

#define FILE_FULL_CREATE    0                                   // Создать или переписать файл.

//===============================================================================================================================================================
//    Функция открывает или создаёт файл.
//    Функция открывает/создает файл для ввода и/или вывода. Если при открытии для записи файла нет, то он будет создан. Для создания директории
//    используется функция "CreateDirectory()". Функция возвращает: handle - файловый описатель, если функция выполнилась без ошибки;
//                                                               -1     - возникла системная ошибка;
//                                                               -2     - ошибка при перемещении файлового указателя в конец файла;
//                                                               -3     - указан недопустимый способ открытия файла.
//===============================================================================================================================================================
int start(){
   int FileOpenFull (string PathName="D:\files\DATA.csv",      // Имя файла с абсолютным путём.
                     int    ModeCWR=0)                         // Способ открытия файла: 0 - FILE_FULL_CREATE    Открытие файла для записи. Если файл существует, то содержимое файла будет
                                                               //                                                уничтожено. Если файл с таким именем не существует, то будет создан новый.
    {
     int Error;                                                // Номер последней ошибки.
     int Handle;                                               // Файловый описатель.
//===============================================================================================================================================================
  RtlSetLastWin32Error(0);                                                                                              // Обнуляем ошибку.
  if (ModeCWR != FILE_FULL_READ)                                                                                        // Если функция вызвана не для чтения, проверяем на наличие файла.
   {                                                                                                                    // Проверяем на наличие файла. Читаем файл.
    Handle = CreateFileA (PathName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (RtlGetLastWin32Error() == 2 && Handle == -1) ModeCWR = FILE_FULL_CREATE;                                        // Файла нет. Создаём файл.
    else
     {
      if (!CloseHandle (Handle))
       {
        Error = RtlGetLastWin32Error();
        Print ("Ошибка в функции \"FileOpenFull()\". Файл с путём \"", PathName, "\" не закрыт при проверки на наличие. Последняя ошибка: \"", Error, "\". ", StringError (Error));
        return (-1);
       }
     }
    RtlSetLastWin32Error(0);                                                                                            // Обнуляем ошибку.
   }
   
//===============================================================================================================================================================
//     Переключатель по способам открытия файла.
//===============================================================================================================================================================
  
  switch (ModeCWR)
   {                                                                                                                    // Создаём файл.
    case FILE_FULL_CREATE:
     {
      Handle = CreateFileA (PathName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
      if (Handle == -1)
       {
        Error = RtlGetLastWin32Error();
        Print ("Ошибка в функции \"FileOpenFull()\". Файл с путём \"", PathName, "\" не открыт. Последняя ошибка: \"", Error, "\". ", StringError (Error));
       }
      return (Handle);
     }
    
//===============================================================================================================================================================
//     Функция закрытия файла.
//     Функция закрывает ранее открытый файл. Если файл закрыт успешно, функция возвращает TRUE, иначе возвращает FALSE.
//===============================================================================================================================================================

   bool FileCloseFull (int Handle)                                                                                   // Файловый описатель, возвращаемый функцией "FileOpenFull()".
    {
     int Error;                                                                                                      // Номер последней ошибки.
     //----
     RtlSetLastWin32Error (0);
     if (!CloseHandle (Handle))
      {
       Error = RtlGetLastWin32Error();
       Print ("Ошибка в функции \"FileCloseFull()\". Последняя ошибка: \"", Error, "\". ", StringError (Error));
       return (false);
      }
     else return (true);
    }

//===============================================================================================================================================================
//    Функция возвращает код системной ошибки.
//===============================================================================================================================================================

   int SystemError()
    {
     return (RtlGetLastWin32Error());
    }
 
//===============================================================================================================================================================
//    Функция возвращает строковое описание кода системной ошибки.
//===============================================================================================================================================================

   string StringError (int ErrorCode)                                                     // Код системной ошибки.
    {
     int    i;
     string String = "";
     //----
     int    Buffer[128];
     //----
     ArrayInitialize (Buffer, 0);
     FormatMessageA (0x1000, 0, ErrorCode, 0, Buffer, ArraySize (Buffer), 0);
     //----
     for (i = 0; i < ArraySize (Buffer); i++)
      {
       String = String + CharToStr (Buffer[i]       & 0xFF)
                       + CharToStr (Buffer[i] >>  8 & 0xFF)
                       + CharToStr (Buffer[i] >> 16 & 0xFF)
                       + CharToStr (Buffer[i] >> 24 & 0xFF);
      }
     return (StringTrimRight (String));
    }
//===============================================================================================================================================================
//    Конец
//===============================================================================================================================================================
}
 
merkulov.artem:

Hallo zusammen. Ich versuche, eine Funktion zu schreiben, die eine Datei in ein vom Benutzer angegebenes Verzeichnis schreibt (Arbeit außerhalb der Sandbox).

Ich habe den Code mit der Bibliothek"ZI_File_Functions_Full_Lib" geschriebenhttps://www.mql5.com/ru/code/8577

Die Funktion"PathFunctions.dll."https://www.mql5.com/ru/code/10873ist nicht geeignet, da es mit Vista funktioniert, ich habe Windows 7.

Alles Unnötige wurde entfernt, da das Lesen nicht erforderlich ist, man nimmt einfach ein Verzeichnis und erstellt dort eine Datei mit einem Wert, der anfangs bekannt ist, das ist alles.

Fragen:

1. Ich kann nicht herausfinden, wo der Wert ist, den wir in die Datei schreiben?

2. Ich kann nicht feststellen, wo ein Fehler geschrieben wird?

Vielen Dank im Voraus.

Artyom!!! Wo steht geschrieben, dass es nicht mit Windows 7 funktioniert? Warum lesen Sie so unaufmerksam? Ich bin nicht überrascht, dass es bei Ihnen nicht funktioniert.



Ich habe mir Ihren Code angesehen und festgestellt, dass Sie keine Ahnung vom Programmieren haben. Nehmen Sie zunächst das Beispiel aus der Hilfe. Führen Sie es aus. Sehen Sie, wie es funktioniert. Dann gehen Sie zu komplizierteren Dingen über.

Eine Datei wird zuerst erstellt oder geöffnet. Dann schreiben oder lesen Sie es. Dann schließen Sie es. Sie haben die Funktionsdeklarationen einfach in den Anfang kopiert. Sie haben einen Teil des Codes aus einer universellen Funktion herausgerissen. Jetzt hängt er einfach da. Das hat nichts mit irgendetwas zu tun. Wozu ist das gut? Es wird nicht funktionieren.

 
Guten Tag, könnten Sie mir bitte sagen, wie ich den Strategietester schließen kann, was muss ich drücken?
 
angelina8:
Guten Tag, könnten Sie mir bitte sagen, wie ich den Strategietester schließen kann, was muss ich drücken?

 
Sie können entweder Strg+R oder die Taste - im mt4-Menü drücken, die in der Abbildung oben rot eingekreist ist.
 
Welches Dokument muss ich in mein persönliches Konto hochladen?
 
angelina8:
Welches Dokument muss ich in mein persönliches Konto hochladen?

Und wozu?
 
Geld abheben