Реter Konow: Voilà ce que je pensais. Il est possible d'utiliser les ressources d'autres programmes. Je suppose que la solution est là. Je vais devoir regarder dans la documentation.
La ressource n'a pas été connectée correctement.
Vous devez spécifier le chemin d'accès au programme dont nous voulons lire la ressource.
Dans l'Inite du programme de lecture, vous devez établir la connexion au fichier de ressources dans un autre programme :
if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"\\Experts\\Tester EA.ex4::Resource"))Print("Resource is not connected!");
Et lorsque vous lisez la ressource, spécifiez également le chemin d'accès complet :
if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",Data,width,height))Print("Failed to read resource! ",GetLastError());
//--------------------------------------------
Mais, il y a un nouveau non-sens :
Lors de la lecture de la ressource, des mouchetures apparaissent dans la ligne. Voici le code :
Et ce qui est étrange, c'est que si nous supprimons le conseiller expert avec la ressource du graphique, le programme de lecture continuera à recevoir la ressource. Cette ressource aura le même texte rouge et les mêmes déchets. Les ordures sont toujours différentes.
Et comment y faire face ?
ZS. Je vais essayer de spécifier d'autres encodages de pages dansCharArrayToString().
Il est intéressant de noter que la taille de la ligne de caractères cursifs est la même que celle du tableau contenant le message.
Mais, dans le flot des franges, il y a parfois des éclairs de valeurs Bid presque exactes qui sont inscrites sur la deuxième face. Elles clignotent une fois, et il y a aussi une ou deux franges à l'intérieur. Mais ils sont lisibles. Et puis, à nouveau, un flot de mouchetures.
Il s'avère que du côté de l'expéditeur de l'événement de remplissage des ressources, tout est fait correctement. Ensuite, le côté lecture accepte la ressource, qui a été corrompue en interne et mise à sac. Plus la partie lectrice lit rapidement le message dans la ressource, plus le message sera intact.
Vous avez donc besoin d'une synchronisation précise en lecture/écriture ?
ZS. Cher fxsaber, pouvez-vous clarifier ce qui ne va pas ici ?
ZS. Cher fxsaber, pouvez-vous expliquer ce qui ne va pas ici ?
Beaucoup de gens ici voient immédiatement vos erreurs, mais préfèrent se taire car c'est plein de dangers. Et je les comprends très bien. Je dirais à l'avance que je ne répondrai pas par la suite. Apprenez à chercher vos propres erreurs et à construire correctement l'attitude des autres.
Au code.
Vous copiez uint en uchar par ArrayCopy - une erreur.
CharArrayToString - cela fonctionnera si les chaînes de caractères sont ANSI.
Régler les particularités de la représentation des types par octet.
Beaucoup de gens ici voient tout de suite vos erreurs, mais préfèrent se taire car c'est plein de dangers. Et je les comprends très bien. Je ne répondrai pas après. Apprenez à chercher vos propres erreurs et à construire correctement l'attitude des autres.
Au code.
Vous copiez uint en uchar par ArrayCopy - une erreur.
CharArrayToString - cela fonctionnera si les chaînes de caractères sont ANSI.
Essayez de comprendre les particularités de la représentation des types par octet.
Lorsque les gens qui m'entourent respectent mes solutions, je respecte les leurs. Eh bien, vous ne pouvez pas l'avoir d'une autre manière. Le respect mutuel.
Par le code. Merci. Je vais voir ce que je peux faire.
Merde, j'en ai marre. Ça m'a pris une demi-journée pour le découvrir.
J'ai déjà trouvé les syndicats. Mais cette solution est une béquille dans un cube. Vous avez toujours besoin d'opérations sur les octets. Mais pour mes tâches, cela n'est absolument pas pertinent.
Il est beaucoup plus facile de travailler avec des descriptions d'objets. Il est garanti et simple. Mais je ne sais pas si les ressources fonctionneront avec le testeur. Ça n'en vaut pas la peine.
Voici une solution via les syndicats :
//+------------------------------------------------------------------+//| Tester EA.mq4 |//| Peter Konow |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Peter Konow"#property link"https://www.mql5.com"#property version"1.00"#property strict//+------------------------------------------------------------------+union Char_Uint
{
uchar Char[8];
uint Uint[2];
double Double;
};
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//----------------------------------------------if(!ObjectCreate(0,"Resource",OBJ_BITMAP_LABEL,0,0,0))Print("Object is not created! ",GetLastError());
elsePrint("Object created!");
//-------------------------------if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"::Resource"))Print("BMPFILE is not created!");
elsePrint("BMPFILE created!");
//----------------------------------------------return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy timer
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---------------------------
Char_Uint u;
//---------------------------
u.Double = Bid;
//---------------------------if(!ResourceCreate("::Resource",u.Uint,2,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA))Print("Resource is not created!");
//---------------------------
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---
}
//+------------------------------------------------------------------+
Et un indicateur de lecture :
//+------------------------------------------------------------------+//| Resource reader.mq4 |//| Peter Konow |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Peter Konow"#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_window//+------------------------------------------------------------------+union Char_Uint
{
uchar Char[8];
uint Uint[2];
};
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingEventSetMillisecondTimer(5250);
if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"\\Experts\\Tester EA.ex4::Resource"))Print("Resource is not connected!");
elsePrint("Resource connected!");
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---
Char_Uint u;
uint width,height;
string Message;
//-----------------------------if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",u.Uint,width,height))Print("Failed to read resource! ",GetLastError());
//-----------------------------
Message = CharArrayToString(u.Char);
//-----------------------------Print(Message);
//-----------------------------
}
//+------------------------------------------------------------------+
Je continue à avoir des crocodiles. C'est toujours différent. Il y a donc toutes sortes de déchets dans la ressource. Si son contenu était le même, alors il ne changerait pas trop.
En général, la façon dont tout cela devrait fonctionner n'est pas claire...
Je trouverai peut-être une solution plus tard.....
Les syndicats sont certainement une chose intéressante. Cependant, je ne vois pas à quelles fins (autres que la conservation d'une ressource) il pourrait être utile.
Magnifique monologue)
Hamlet se repose.)
Alors, qu'est-ce qui ne va pas ?
l'erreur -
ERR_RESOURCE_NOT_FOUND
https://www.mql5.com/ru/docs/runtime/resources
Lire l'aide .
Citation :
https://www.mql5.com/ru/docs/runtime/resources
Lire la référence .
Citation :
Oui. J'ai compris. Je l'ai mal branché.
Voilà ce que je pensais. Il est possible d'utiliser les ressources d'autres programmes. Je suppose que la solution est là. Je vais devoir regarder dans la documentation.
La ressource n'a pas été connectée correctement.
Vous devez spécifier le chemin d'accès au programme dont nous voulons lire la ressource.
Dans l'Inite du programme de lecture, vous devez établir la connexion au fichier de ressources dans un autre programme :
Et lorsque vous lisez la ressource, spécifiez également le chemin d'accès complet :
//--------------------------------------------
Mais, il y a un nouveau non-sens :
Lors de la lecture de la ressource, des mouchetures apparaissent dans la ligne. Voici le code :
Et ce qui est étrange, c'est que si nous supprimons le conseiller expert avec la ressource du graphique, le programme de lecture continuera à recevoir la ressource. Cette ressource aura le même texte rouge et les mêmes déchets. Les ordures sont toujours différentes.
Et comment y faire face ?
ZS. Je vais essayer de spécifier d'autres encodages de pages dansCharArrayToString().
Il est intéressant de noter que la taille de la ligne de caractères cursifs est la même que celle du tableau contenant le message.
Mais, dans le flot des franges, il y a parfois des éclairs de valeurs Bid presque exactes qui sont inscrites sur la deuxième face. Elles clignotent une fois, et il y a aussi une ou deux franges à l'intérieur. Mais ils sont lisibles. Et puis, à nouveau, un flot de mouchetures.
Il s'avère que du côté de l'expéditeur de l'événement de remplissage des ressources, tout est fait correctement. Ensuite, le côté lecture accepte la ressource, qui a été corrompue en interne et mise à sac. Plus la partie lectrice lit rapidement le message dans la ressource, plus le message sera intact.
Vous avez donc besoin d'une synchronisation précise en lecture/écriture ?
ZS. Cher fxsaber, pouvez-vous clarifier ce qui ne va pas ici ?
Je joins les fichiers :
ZS. Cher fxsaber, pouvez-vous expliquer ce qui ne va pas ici ?
Beaucoup de gens ici voient immédiatement vos erreurs, mais préfèrent se taire car c'est plein de dangers. Et je les comprends très bien. Je dirais à l'avance que je ne répondrai pas par la suite. Apprenez à chercher vos propres erreurs et à construire correctement l'attitude des autres.
Au code.
Vous copiez uint en uchar par ArrayCopy - une erreur.
CharArrayToString - cela fonctionnera si les chaînes de caractères sont ANSI.
Régler les particularités de la représentation des types par octet.
Beaucoup de gens ici voient tout de suite vos erreurs, mais préfèrent se taire car c'est plein de dangers. Et je les comprends très bien. Je ne répondrai pas après. Apprenez à chercher vos propres erreurs et à construire correctement l'attitude des autres.
Au code.
Vous copiez uint en uchar par ArrayCopy - une erreur.
CharArrayToString - cela fonctionnera si les chaînes de caractères sont ANSI.
Essayez de comprendre les particularités de la représentation des types par octet.
Lorsque les gens qui m'entourent respectent mes solutions, je respecte les leurs. Eh bien, vous ne pouvez pas l'avoir d'une autre manière. Le respect mutuel.
Par le code. Merci. Je vais voir ce que je peux faire.
Merde, j'en ai marre. Ça m'a pris une demi-journée pour le découvrir.
J'ai déjà trouvé les syndicats. Mais cette solution est une béquille dans un cube. Vous avez toujours besoin d'opérations sur les octets. Mais pour mes tâches, cela n'est absolument pas pertinent.
Il est beaucoup plus facile de travailler avec des descriptions d'objets. Il est garanti et simple. Mais je ne sais pas si les ressources fonctionneront avec le testeur. Ça n'en vaut pas la peine.
Voici une solution via les syndicats :
Et un indicateur de lecture :
Je continue à avoir des crocodiles. C'est toujours différent. Il y a donc toutes sortes de déchets dans la ressource. Si son contenu était le même, alors il ne changerait pas trop.
En général, la façon dont tout cela devrait fonctionner n'est pas claire...
Je trouverai peut-être une solution plus tard.....
Les syndicats sont certainement une chose intéressante. Cependant, je ne vois pas à quelles fins (autres que la conservation d'une ressource) il pourrait être utile.