Errori, bug, domande - pagina 2732

 
Vladimir Karputov:

Avviare la ricerca (qualsiasi ricerca, qualsiasi nome) e fermare la ricerca immediatamente. Questo farà apparire una barra di ricerca dove è possibile selezionare il tipo di file:


Ops... Grazie.
 
Artyom Trishkin:

So che devo trovare i file video. Tutto. Assolutamente. E che tipo e nome sono, lascia che sia la macchina stessa a cercarli.

È difficile indovinare come la macchina cerca, ma come cercare in DOS (premere Win+R e scrivere cmd), così:

dir/b/s  *.3 g2 *.3 gp *.3 gp2 *.3 gpp *.3 gpp2 *.asf *.asx *.avi *.bin *.dat *.drv *.f4v *.flv *.gtp *.h264 *.m4v *.mkv *.mod *.moov *.mov *.mp4 *.mpeg *.mpg *.mts *.rm *.rmvb *.spl *.srt *.stl *.swf *.ts *.vcd *.vid *.vid *.vid *.vob *.webm *.wm *.wmv *.yuv > d:\filename.txt

Ho cercato su Google il primo sitohttp://fileext.ru/video, l'ho incollato in Excel, in modo che fosse in colonne, poi in notepad

ultimo parametro dove scrivere i dati di ricerca con percorsi e nomi di file d:\filename.txt

Ho controllato. Sta lavorando .... Ma il mio binario non ha nulla a che fare con il video ))))

 
La compilazione con MQL5 cloud protection sembra bloccare l'editor in assenza di internet. All'inizio si blocca dolcemente (cioè l'editor è disponibile per altre azioni, ma il comando di compilazione è in attesa di completamento e non è chiaro quanto tempo aspettare se c'è un timeout). Se il pulsante Annulla viene premuto, si blocca saldamente.
 

Voglio restituire la stringa da .dll a MQL4 (MQL5 non ha alcun problema)

Ho già fatto un sacco di errori, quindi devo chiedere al sapiente: cos'è un array di stringhe in memoria? - Cos'è un array di stringhe?

string s_arr_1[];
// эти массивы чем-нибудь отличаются?
string s_arr_2[10];
 
Igor Makanu:

Voglio restituire la stringa da .dll a MQL4 (MQL5 non ha alcun problema)

Ho già fatto un sacco di errori, quindi devo chiedere al sapiente: cos'è un array di stringhe in memoria? - Cos'è un array di stringhe?

Un array di stringhe è un array di oggetti stringa. Da qualche parte, uno degli sviluppatori ha scritto che ci sono due campi: un puntatore a una stringa e 32 bit di dimensione della memoria allocata. In generale, sarebbe bello scrivere queste cose nei documenti ufficiali, per non indovinare.
 
Igor Makanu:

cos'è un array di stringhe in memoria? - cos'è un array di stringhe?

A proposito di una struttura di dati MASSIVA.
Lo sto descrivendo per MT5, lo stesso dovrebbe essere anche per MT4, probabilmente qualcosa sarà diverso, ma dovrebbe essere vicino.

In generale, l'array consiste di due parti: descrizione e dati, ma può anche consistere solo di dati.
I dati sono la memoria allocata per gli elementi dell'array.
Descrizione - la struttura contenente i seguenti campi, la sequenza non viene salvata:

flags - insieme di flags che descrivono l'array: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
dimensione - numero di elementi creati nell'array;
capacità - numero di elementi riservati nell'array;
puntatore al costruttore - puntatore alla funzione costruttore per gli elementi dell'array;
puntatore destructor - puntatore alla funzione destructor per gli elementi dell'array;
puntatore dati - puntatore all'inizio dell'array.

stringa s_arr_1[];- array dinamico che consiste in una descrizione e un array di dati.
stringa s_arr_2[10]; - il tipo di array dipende dalla posizione della stringa:
se usato come variabile locale, è un array statico, che consiste in una descrizione e un array di dati, situati in sequenza sullo stack.
se usato come campo in una struttura/classe, è solo un array di dati (manca la parte di descrizione).
 
Sergey Dzyublik:

Sulla struttura dei dati MASSIVE.
Questa è una descrizione a memoria e per MT5, lo stesso dovrebbe essere anche per MT4, probabilmente qualcosa sarà diverso ma dovrebbe essere vicino.

In generale, l'array consiste di due parti: descrizione e dati, ma può anche consistere solo di dati.
I dati sono la memoria allocata per gli elementi dell'array.
Descrizione - la struttura contenente i seguenti campi, la sequenza non viene salvata:

flags - un insieme di flag che descrivono l'array: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
dimensione - numero di elementi creati nell'array;
capacità - numero di elementi riservati nell'array;
puntatore al costruttore - puntatore alla funzione costruttore per gli elementi dell'array;
puntatore destructor - puntatore alla funzione destructor per gli elementi dell'array;
puntatore a dati - puntatore all'inizio di una matrice.

stringa s_arr_1[];- array dinamico, che consiste in una descrizione e un array di dati.
stringa s_arr_2[10]; - il tipo di array dipende dalla posizione della stringa:
se usato come variabile locale, è un array statico, che consiste in una descrizione e un array di dati, situati in sequenza sullo stack.
se usato come campo in una struttura/classe, è solo un array di dati (non c'è una parte di descrizione).

Grazie!

C'era una speranza che forse esiste qualche struttura standard da WinAPI, ma apparentemente non può essere lo stesso con le stringhe

SZZ: ho risolto lo scambio con la dll, ma come prima in 2 chiamate - query per l'azione nella dll e ritorno della dimensione del buffer richiesta per la stringa e la 2a chiamata con la stringa che copia nel buffer preparato, ok, il problema è locale, ma speravo di semplificare la soluzione


Vladimir Simakov:
Un array di stringhe è un array di oggetti stringa. Da qualche parte, qualche sviluppatore ha scritto che ci sono due campi: un puntatore a una stringa e 32 bit di dimensione della memoria allocata. In generale, sarebbe bello scrivere queste cose nei documenti ufficiali, per non indovinare.

il problema principale è che MQL4 e 5 sono programmi molto diversi ))))

La stringa in MQL4 è perfettamente analizzata in .Net daStringBuilderClass, quindi hai ragione che la stringa non è una posizione di memoria, ma piuttosto un oggetto.

 
что из себя представляет массив строк в памяти? - что такое массив строк?! 

Sulla struttura dei dati STR.
Lo descrivo a memoria per MT5, lo stesso dovrebbe valere anche per MT4, probabilmente, qualcosa sarà diverso, ma dovrebbe essere vicino.


La linea consiste in Descrizione + Dati.
La Descrizione contiene i seguenti campi:

buffer_len - dimensione del buffer allocato per la stringa;
puntatore unicode_str - puntatore al campo unicode_str (offset+8) nella struttura dati.

I dati contengono i seguenti campi:
flags - insieme di flags che descrivono la stringa: static(0x03)/dynamic (0x01), eventualmente codifica...
len - lunghezza della stringa;
unicode_str - stringa unicode_str puntata direttamente dal puntatore unicode_str da Description.
 
Sergey Dzyublik:

Sulla struttura dei dati STR.
Lo descrivo a memoria per MT5, lo stesso dovrebbe valere anche per MT4, probabilmente, qualcosa sarà diverso, ma dovrebbe essere vicino.


La linea consiste in Descrizione + Dati.
La Descrizione contiene i seguenti campi:

buffer_len - dimensione del buffer allocato per la stringa;
puntatore unicode_str - puntatore al campo unicode_str (offset+8) nella struttura dati.

I dati contengono i seguenti campi:
flags - insieme di flags che descrivono la stringa: static(0x03)/dynamic (0x01), eventualmente codifica...
len - lunghezza della stringa;
unicode_str - stringa unicode_str puntata direttamente dal puntatore unicode_str da Description.

Domanda. È descritto da qualche parte o l'hai analizzato tu stesso?

 
Igor Makanu:

Voglio restituire la stringa da .dll a MQL4 (MQL5 non ha alcun problema)

Ho già fatto un sacco di errori, quindi devo chiedere al sapiente: cos'è un array di stringhe in memoria? - Cos'è un array di stringhe?

Passa solo un array uchar invece di un array di stringhe. È più facile così.
Per esempio, si può convertire così:

int StringArrayToCharArray(string &stringArr[],uchar &c[]) {
   uchar temp[];
   int pos=0;
   for (int i=0; i<ArraySize(stringArr); i++) {
      ArrayFree(temp);
      StringToCharArray(stringArr[i],temp);
      ArrayCopy(c,temp,pos);
      pos+=ArraySize(temp);
   }
   return pos;
}
//+------------------------------------------------------------------+

int CharArrayToStringArray(string &stringArr[],uchar &c[]) {
   ArrayFree(stringArr);
   int pos=0;
   int j=0;
   for (; pos<ArraySize(c); j++) {
      ArrayResize(stringArr,j+1);
      stringArr[j]=CharArrayToString(c,pos);
      while(c[pos]!=0) pos++;
      pos++;
   }
   return j;
}

Funziona allo stesso modo per MQL4 e MQL5