Alle Fragen von einem PROFI an einen SUPER PROFI - 1. - Seite 22

 
int start()
  {
//----
   int massa=100,shag=10,kol=4;
   perebor(massa,shag,kol);
//----
   return(0);
  }
//+------------------------------------------------------------------+
void perebor(int massa, int shag, int kol)
   {
   int massiv[];
   ArrayResize(massiv,kol);
   int x=kol;
   int handle = FileOpen("test.csv",FILE_WRITE,' ');
   
   recurs(massa,shag,massiv,x,kol,handle);
   FileClose(handle);
   }
void recurs  (int massa, int shag, int & massiv[], int x, int kol, int handle)
   { 
   int i,y;
   for(i=0;i<=massa;i+=shag)
      {
      if(x-1>0)
         {
         massiv[kol-x]=i;         
         recurs(massa-i,shag,massiv,x-1,kol,handle);                  
         }
      else
         {
         massiv[kol-x]=massa-i;
         for(y=0;y<kol;y++)
            {            
            FileWrite(handle,y," - ",massiv[y]);
            }
         return;   
         }   
      }
   } 
 
Herzlichen Dank für den Code. Es fällt mir allerdings schwer zu verstehen, wie das funktioniert:)
 
Sie haben richtig geschrieben, dass das Problem rekursiv gelöst werden sollte. Es gibt eine bestimmte Anzahl von Elementen. Solange das Element nicht das letzte ist, tritt die Funktion selbst mit einem um den Wert aller Inkremente in den vorherigen Iterationen reduzierten Massenwert ein. Beim letzten Element wird einfach der letzte Rest berechnet und ausgedruckt.
 

Was fehlt mir in der Funktion, dass die Schaltfläche nicht sichtbar ist?

Dies ist eine Funktion in einer DLL:

#define IDB_BUTTON   6500

//------------------------------------------------------------------
int __stdcall CreateBtn(int hWnd)
{
  HWND wnd=(HWND)hWnd; // хендл окна чарта
  HWND pwnd=GetParent(wnd); // получили родителя для создания кнопки
  ShowWindow(wnd, SW_HIDE); // скрыли чарт
  // создали кнопку
  HWND btn=CreateWindow("Button", "DLL BUTTON", WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON, 
                15, 15, 100, 100, pwnd, (HMENU)IDB_BUTTON, (HINSTANCE)GetModuleHandle(NULL), NULL);
  ShowWindow(btn, SW_SHOW); // показали кнопку
  UpdateWindow(btn);

  // нарисовали на ней текст (для проверки что окно кнопки существует)
  HDC hdc = GetDC(btn);
  TextOut(hdc, 0, 0, (LPSTR)"String", 6);
  ReleaseDC(btn, hdc);
  RECT Rect; 
  GetWindowRect(btn,  &Rect); // получили размер
  return(Rect.right-Rect.left);  // вернули для проверки размера
}

Wenn die Funktion vom Skript aus aufgerufen wird, funktioniert alles einwandfrei.

Das Diagramm oben zeigt den Text "String", die Funktion selbst gibt die korrekte Schaltflächenbreite Nummer 100 zurück.

Aber die Schaltfläche ist nicht sichtbar.

-------------

ZS
Ich habe das Problem gefunden - ich habe vergessen, UpdateWindow auszuführen .
Vielen Dank an alle :)


 
wie man Nachrichten auf dem Chart in MT5???? deaktiviert
 
parkhomenko:
Wie kann man im MT5 die Anzeige von Nachrichten im Chart deaktivieren????

hier am besten kennen
 

Haben Sie eine Idee, wie man "Notepad" von MT4 aus aufrufen kann?

Ich bin es leid, Daten in .txt zu speichern und sie von Hand (mit der Maus) zu öffnen. Ich möchte die Notepad-Datei ..МТ4\experts\files\data.txt nach Abschluss der Berechnungen öffnen

danke

 
#import "shell32.dll"
   int ShellExecuteA(int hwnd, string oper, string prog, string param, string dir, int show);
#import

ShellExecuteA(0, "Open", "notepad.exe", "data.txt", TerminalPath()+"\\experts\\files", 3);
 

Wie kann man eine Plus- in eine Minusbedingung umwandeln?

es sieht aus wie aus dem Reich der Fiktion, wenn plus oder minus hatte einen Wert von int Integer-Typ, könnten Sie int pl = +;)))

vielleicht gibt es eine Option.......

if(......) + ; else -;
 
Martingeil:

Wie kann ich in der Bedingung das Plus vom Minus unterscheiden?



Wählen Sie S=1 oder S=-1. Multiplizieren Sie dann den gewünschten Wert mit S

zum Beispiel so:

double S(bool b) 
{
  if (b) return(1); else return(-1); 
}

a=123;
Print(a*S(a<0))
Print(a*S(a==123))