Erros, bugs, perguntas - página 2732

 
Vladimir Karputov:

Iniciar a pesquisa (qualquer pesquisa, qualquer nome) e parar a pesquisa imediatamente. Isto fará surgir uma barra de pesquisa onde se pode seleccionar o tipo de ficheiro:


Oops... Obrigado.
 
Artyom Trishkin:

Eu sei que preciso de encontrar os ficheiros de vídeo. Tudo. Absolutamente. E que tipo e nome são, deixe a máquina procurar por si própria.

É difícil adivinhar como a máquina procura, mas como procurar em DOS (prima Win+R e escreva cmd), desta forma:

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

Pesquisei no Google o primeiro websitehttp://fileext.ru/video , colei-o no Excel, para que estivesse em colunas, depois em bloco de notas

último parâmetro onde escrever dados de pesquisa com caminhos e nomes de ficheiros d:\filename.txt

Eu verifiquei. Está a funcionar.... mas o meu binário não tem nada a ver com vídeo ))))

 
A compilação com a protecção de nuvens MQL5 parece pendurar o editor na ausência da Internet. No início pende suavemente (ou seja, o editor está disponível para outras acções, mas o comando de compilação está à espera de ser completado e não é claro quanto tempo esperar se houver um intervalo de tempo). Se o botão Cancelar for premido, fica pendurado firmemente.
 

Quero devolver a string de .dll à MQL4 (a MQL5 não tem qualquer problema)

Já cometi muitos erros, por isso tenho de perguntar ao conhecedor: O que é um conjunto de cordas na memória? - O que é um conjunto de cordas?

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

Quero devolver a string de .dll à MQL4 (a MQL5 não tem qualquer problema)

Já cometi muitos erros, por isso tenho de perguntar ao conhecedor: O que é um conjunto de cordas na memória? - O que é um conjunto de cordas?

Uma matriz de cordas é uma matriz de objectos de cordas. Algures, um dos criadores escreveu que existem dois campos: um ponteiro para um fio e 32 bits de tamanho de memória atribuída. Em geral, seria bom escrever tais coisas nos documentos oficiais, de modo a não adivinhar.
 
Igor Makanu:

o que é um conjunto de cordas na memória? - o que é um conjunto de cordas?!

Sobre a estrutura de dados MASSIVE.
Estou a descrevê-lo para MT5, o mesmo deveria ser para MT4 também, provavelmente algo será diferente, mas deveria estar perto.

Em geral, a matriz é constituída por duas partes: descrição e dados, mas também pode ser constituída apenas por dados.
Os dados são a memória alocada para os elementos da matriz.
Descrição - a estrutura contendo os seguintes campos, a sequência não é guardada:

bandeiras - conjunto de bandeiras descrevendo o conjunto: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
tamanho - número de elementos criados na matriz;
capacidade - número de elementos reservados na matriz;
ponteiro do construtor - ponteiro para a função de construtor para os elementos da matriz;
ponteiro destruidor - ponteiro para a função destruidora para os elementos da matriz;
ponteiro de dados - ponteiro para o início da matriz.

string s_arr_1[];- matriz dinâmica que consiste de uma descrição e de uma matriz de dados.
string s_arr_2[10]; - o tipo de matriz depende da localização da string:
se utilizada como variável local, é uma matriz estática, que consiste numa descrição e numa matriz de dados, localizada sequencialmente na pilha.
se usado como campo numa estrutura/classe, é apenas um conjunto de dados (falta a parte da descrição).
 
Sergey Dzyublik:

Sobre a estrutura de dados MASSIVE.
Esta é uma descrição de memória e para MT5, o mesmo deveria ser para MT4 também, provavelmente algo será diferente mas deveria estar perto.

Em geral, a matriz é constituída por duas partes: descrição e dados, mas também pode ser constituída apenas por dados.
Os dados são a memória alocada para os elementos da matriz.
Descrição - a estrutura contendo os seguintes campos, a sequência não é guardada:

bandeiras - um conjunto de bandeiras descrevendo o conjunto: IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
tamanho - número de elementos criados na matriz;
capacidade - número de elementos reservados na matriz;
ponteiro do construtor - ponteiro para a função de construtor para os elementos da matriz;
ponteiro destruidor - ponteiro para a função destruidora para os elementos da matriz;
ponteiro de dados - ponteiro para o início de uma matriz.

string s_arr_1[];- matriz dinâmica, que consiste de uma descrição e de uma matriz de dados.
string s_arr_2[10]; - o tipo de matriz depende da localização da string:
se utilizada como variável local, é uma matriz estática, que consiste numa descrição e numa matriz de dados, localizada sequencialmente na pilha.
se usado como campo numa estrutura/classe, é apenas uma matriz de dados (não há parte de descrição).

Obrigado!

Havia a esperança de que talvez exista alguma estrutura padrão do WinAPI, mas aparentemente não pode ser o mesmo com cordas

SZZ: Fixei a troca com dll, mas como antes em 2 chamadas - pedido de acção em dll e devolução do tamanho de buffer requerido para string e a 2ª chamada com cópia de string no buffer preparado, ok, o problema é local, mas eu esperava simplificar a solução


Vladimir Simakov:
Um conjunto de cordas é um conjunto de objectos de cordas. Algures, algum programador escreveu que existem dois campos: um ponteiro para um fio e 32 bits de tamanho de memória atribuída. Em geral, seria bom escrever tais coisas em documentos oficiais, de modo a não adivinhar.

o problema principal é que a MQL4 e 5 são programas muito diferentes ))))

A corda em MQL4 é perfeitamente analisada em .Net pelaStringBuilderClass, por isso tem razão que a corda não é um local de memória, mas sim um objecto.

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

Sobre a estrutura de dados STR.
Descrevo-o de memória para o MT5, o mesmo deveria aplicar-se também ao MT4, provavelmente, algo será diferente, mas deveria estar próximo.


A linha consiste em Descrição + Dados.
A Descrição contém os seguintes campos:

buffer_len - tamanho do buffer atribuído para string;
unicode_str pointer - ponteiro para unicode_str campo (offset+8) em Estrutura de dados.

Os dados contêm os seguintes campos:
flags - conjunto de bandeiras descrevendo a corda: estática(0x03)/dinâmica (0x01), possivelmente codificações...
len - comprimento da corda;
unicode_str - corda unicode_str directamente apontada pelo ponteiro unicode_str da Descrição.
 
Sergey Dzyublik:

Sobre a estrutura de dados STR.
Descrevo-o de memória para o MT5, o mesmo deveria aplicar-se também ao MT4, provavelmente, algo será diferente, mas deveria estar próximo.


A linha consiste em Descrição + Dados.
A Descrição contém os seguintes campos:

buffer_len - tamanho do buffer atribuído para string;
unicode_str pointer - ponteiro para unicode_str campo (offset+8) em Estrutura de dados.

Os dados contêm os seguintes campos:
flags - conjunto de bandeiras descrevendo a corda: estática(0x03)/dinâmica (0x01), possivelmente codificações...
len - comprimento da corda;
unicode_str - corda unicode_str directamente apontada pelo ponteiro unicode_str da Descrição.

Pergunta. Está descrito algures ou foi você mesmo que o analisou?

 
Igor Makanu:

Quero devolver a string de .dll à MQL4 (a MQL5 não tem qualquer problema)

Já cometi muitos erros, por isso tenho de perguntar ao conhecedor: O que é um conjunto de cordas na memória? - O que é um conjunto de cordas?

Passe apenas uma matriz de uchar em vez de uma matriz de cordas. É mais fácil assim.
Por exemplo, pode converter-se desta forma:

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;
}

Funciona da mesma forma para MQL4 e MQL5

Arquivos anexados: