Funzione - Metodo per ordinare un array di strutture. Premio 10$ - pagina 7

 
Artyom Trishkin:

1) Per te sono un paio di dozzine di linee oscure.
Ma per me significa decine di giorni di lavoro, che sono stati interamente spesi per la localizzazione dei problemi rilevati, la loro riproduzione, la descrizione, la ricerca di workaround, e non dimenticare il ri-testing al momento del rilascio di una nuova build e la segnalazione, in modo che nulla fosse perso...


2) Sul chiedere miglioramenti:

Bug, bug, domande

Sergey Dzyublik, 2019.05.23 13:52

Suggerimenti:
"Permettere alla funzione ArrayCopy di copiare classi e strutture "complesse", in modo simile a come le strutture forniscono funzionalità di copia profonda per qualsiasi tipo di oggetto".


3) Sulla condivisione del lavoro in corso:

Bug, bug, domande

Sergey Dzyublik, 2017.11.05 13:08

Problema: c'è un anno di freelance, diversi trucchi non standard con WinApi ecc. utile per la comunità.
Ma non vedo il punto di spendere tempo per trovarli, elaborarli, metterli in kodobase - 0 profitto.

Suggerimento: fornire il pulsante "Grazie" in kodobase, attraverso il quale è possibile ringraziare l'autore per il codice fornito.
Il denaro va al conto MQL, a sua volta MQ detrae una certa percentuale per il servizio fornito.

 
Sergey Dzyublik:

1) Per voi si tratta di un paio di decine di corde oscure.
Ma per me - decine di giorni di lavoro, che interamente spesi sulla localizzazione dei problemi rilevati, la loro riproduzione, la descrizione, la ricerca di workaround, così come non dimenticare il re-testing dopo il rilascio di una nuova build e la creazione di report, cosa non sarebbe stato perso...


2) Sul chiedere miglioramenti:


3) Sulla condivisione delle esperienze:

  1. Non dirò incomprensibile, ma irrilevante. Mi scusi, ma chi la obbliga a fare questo? Qualcuno ti ha ordinato di fare tutto questo? O da solo? Se l'hai fatto da solo, di tua spontanea volontà, allora perché ti lamenti - nessuno ti ha costretto.
  2. Questo è un bene. L'ho visto. A volte gli sviluppatori vedono meglio perché c'è un divieto per questo o quel "miglioramento". E succede per una serie di ragioni che l'"utente" medio non può intuire.
  3. Probabilmente ha più senso che stiano raccogliendo polvere su uno scaffale, cadranno nell'oblio più velocemente. E il nome è lo stesso profitto.
    Da qualche parte qui sul forum avete già scritto "Pensare più a fondo".
 

Chi ne avrebbe dubitato. Tutto ciò che è scomodo da leggere viene cancellato.

Solo a pochi eletti è permesso di parlare. La correttezza di un'affermazione viene giudicata dal moderatore a seconda dell'umore e del tempo.

Parlate con voi stessi.

 
Artyom Trishkin:
  1. Non dirò incomprensibile, ma irrilevante. Mi scusi, ma chi la obbliga a fare questo? Qualcuno ti ha ordinato di fare tutto questo? O da solo? Se l'hai fatto da solo, di tua spontanea volontà, allora perché ti lamenti - nessuno ti ha costretto.
  2. Questo è un bene. L'ho visto. A volte gli sviluppatori vedono meglio perché c'è un divieto per questo o quel "miglioramento". E succede per una serie di ragioni che l'"utente" medio non può intuire.
  3. Il fatto che tu li abbia a prendere polvere su uno scaffale probabilmente ha molto più senso - svaniranno nell'oblio più velocemente. E il nome è lo stesso profitto.
    Da qualche parte qui su questo forum hai già scritto "Pensa più in profondità".
  1. L'uomo sta cercando di rendere questo mondo un posto migliore e ci riesce, cosa di cui è grato.
  2. -
  3. Onestamente, se domani Sergey metterà in kodobase contenitori normali, con un iteratore, con una macro che fornisce range-based per la logica, quale percentuale della comunità locale lo capirà e apprezzerà? E il tempo che ci ha ucciso sopra... Ecco perché queste cose sono promosse sul puro entusiasmo, un cucchiaino all'anno. E qui gli sviluppatori dovrebbero attirare la gente con un piccolo o non così piccolo kopeck, e poi appariranno i contenitori normali e un sacco di altre cose interessanti...
 

Vladimir Simakov:

Onestamente, se domani Sergey metterà in kodobase contenitori normali, con un iteratore, con una macro che fornisce range-based per la logica, quale percentuale della comunità locale lo capirà e apprezzerà? E il tempo che ci ha ucciso sopra... Ecco perché queste cose sono promosse sul puro entusiasmo, un cucchiaino all'anno. E qui gli sviluppatori dovrebbero attirare la gente con un piccolo o non così piccolo kopeck, e poi appariranno i contenitori normali e accadranno molte più cose interessanti...

tutto ciò che c'è e tutto funziona - scrivere un articolo e ottenere premiato, sorprendentemente, Metakvot è abbastanza fedele al tema degli articoli

o di cosa stiamo parlando? di un'esplosione di applausi?

imho, "normalità" di una soluzione di programma è qualcosa che non può essere valutato, si può scrivere sulla brevità del codice, leggibilità, codice indiano, g...ocode cercando di valutare una creazione ma, imho, c'è un criterio ragionevole per la valutazione - rilevanza, ma purtroppo, questa valutazione sarà disponibile dopo la pubblicazione.

Lasciatelo pubblicare gratuitamente nella KB o scrivere un articolo, "non mettetevi in mostra come una ragazza".

 
Igor Makanu:

tutto è lì e tutto funziona - scrivi un articolo e vieni premiato, sorprendentemente, Metacquotes è abbastanza fedele all'argomento degli articoli

o di cosa stiamo parlando, di uno scoppio di applausi?

imho, "normalità" di una soluzione di programma è qualcosa che non può essere valutato, si può scrivere sulla brevità del codice, leggibilità, codice indiano, g...ocode cercando di valutare una creazione, ma, imho, c'è un criterio ragionevole per la valutazione - rilevanza, ma purtroppo, questa valutazione sarà disponibile dopo la pubblicazione.

Lasciatelo pubblicare gratuitamente nella KB o scrivere un articolo, "invece di mostrarsi come una ragazza".

Dovresti leggere il thread dall'inizio, sembra che tu stia giudicando dagli ultimi post scritti non da Sergei.
 
Igor Makanu:

o di cosa stiamo parlando, di uno scoppio di applausi?

Sul fatto che le persone che hanno risposto sull'argomento e con un codice funzionante, sono state molestate sul posto.
Ha detto che ha speso un sacco di ore a scrivere e testare, quindi non stende i plushies extra? Beh, sì, cheapkate, dovrebbe essere bandito all'inferno.

In generale, tutto andava bene con l'argomento fino a quando un moderatore è arrivato con la sua visione della situazione.

ps: strano, il secondo messaggio non è stato cancellato.

 

Ho letto il thread dal primo giorno.

la questione è risolta, ma non come il topicstarter può usare dalla sua esperienza

riguardo allo "spremere il codice" - è semplice qui - o si condivide o non si condivide.... , anche un moderatore "va al libero professionista" - l'anno scorso ho visto problemi MQL5 nel thread ))))

Se non ti ricordi, siamo nel 2020, e il 99% delle soluzioni per problemi elementari sono liberamente disponibili, mentre la gente viene nel forum per risparmiare tempo o per ottenere la conoscenza mancante, ma non per storie illuminanti e illuminanti con insegnamenti morali... Che è quello che stiamo facendo ora)))

 

Purtroppo ora anche i metodi suggeriti da fxsaber non funzionano più.

E sto cercando metodi per ordinare un array di strutture. Qualcuno ha qualche variante funzionante?

 
Vladimir Pastushak:

Purtroppo ora anche i metodi suggeriti da fxsaber non funzionano più.

E sto cercando metodi per ordinare un array di strutture. Qualcuno ha qualche variante funzionante?

Personalmente, mi sono scritto una classe CStructWrapper, ereditata da CObject (CMyObject è in realtà la stessa cosa, con campi di debug aggiuntivi), e per l'ordinamento uso una funzione standard.

template <typename T>
class CStructWrapper:public CMyObject
{
protected:
   T  m_tObject;

public:
   CStructWrapper() {};
   CStructWrapper(T & tObj) { m_tObject = tObj; };
   ~CStructWrapper() {};

   // Копирование
   T CopyFrom(const T &tObj) { m_tObject = tObj; return (m_tObject); };
   T operator=(const T &tObj) { return (CopyFrom(tObj)); };
   T CopyFrom(const CStructWrapper<T> &tWObj) { m_tObject = tWObj.GetCoreObject(); return (m_tObject); };
   T operator=(const CStructWrapper<T> &tWObj) { return (CopyFrom(tWObj)); };

   // Возврат объекта   
   T GetCoreObject() const { return(m_tObject); };
};


Se ho bisogno di un array di strutture, dichiaro una classe derivata basata su questo modello. In esso, dichiaro una funzione per confrontare i campi necessari della struttura. E poi - uso una classe standard di un array di oggetti con ordinamento.

Gli oggetti creati possono essere copiati direttamente dalle strutture usando l'operatore di assegnazione. Se necessario - li copio.