অদ্ভুত স্ট্রিং আচরণ
Results 1 to 8 of 8

Thread: অদ্ভুত স্ট্রিং আচরণ

  1. #1
    কেউ কি পরবর্তীতে এসেছেন?

    আমি নিম্নলিখিত ঘোষণা সঙ্গে একটি স্ক্রিপ্ট আছে

    স্ট্রিং প্রতীক = XXXXXX;
    স্ট্রিং খোলা = শুরু করুন; স্ট্রিং স্টপ = স্টপ; স্ট্রিং takeP = নিতে;
    ডবল পরিমাণে [3];
    int ডাটা [1];

    আমি তারপর একটি DLL ঘোষণা নিম্নলিখিত হিসাবে ঘোষণা

    শূন্যতা Param জিজ্ঞাসা পেতে (স্ট্রিং চিহ্ন, স্ট্রিং খোলা, স্ট্রিং স্টপ, স্ট্রিং takeP,
    দ্বিগুণ পরিমাণ [], ইন্ট ডেটা []);

    ডিএলএল-এ ফিরে আসা মানগুলি প্রত্যাশিত হয় অর্থাৎ প্রতীক, খোলা, স্টপ এবং লেআউটের ডিফল্ট মান পরিবর্তিত হয় কিন্তু যদি আমি পরবর্তী মূল্যায়ন করি

    যদি (খোলা! = শুরু)
    মুদ্রণ (এনই);
    আর
    মুদ্রণ (EQ);

    পরীক্ষা ব্যর্থ এবং আমি EQ মুদ্রিত পেতে

    কি ঘটছে কোন ধারণা এবং এটি প্রায় একটি নোংরা কাজ ছাড়া সংশোধন করা যাবে

    ধন্যবাদ

  2. #2

    Quote Originally Posted by ;
    যদি (খোলা!) = শুরু) প্রিন্ট (NE); অন্য প্রিন্ট (ইকু); পরীক্ষার ব্যর্থ এবং আমি প্রকাশিত EQ প্রকাশিত
    কেন ফোন কল করার পরে ফ্যাক্টরটিতে কি অন্তর্ভুক্ত আছে তা আমাদের বলুন না কেন? আপনি কি নিশ্চিতভাবে আপনি পংক্তিগুলি হিসাবে স্ট্রিং (হিসাবে আপনি পরিষ্কারভাবে পদক্ষেপ নিতে) পাস করতে পারে, তাদের আছে আপনার DLL মধ্যে পরিবর্তন এবং এখনও একটি অ্যাক্সেস লঙ্ঘনের উত্পাদনের ছাড়া MT4 কাজ? আপনি আপনার DLL মধ্যে নতুন সিরিজের জন্য নতুন মেমরি বরাদ্দ করতে পারেন? কেন আপনি স্ট্রিং ব্যবহার না বরং নতুন পয়েন্টার ফিরে আসতে সক্ষম? এই নতুন বরাদ্দ মেমরি মুক্ত করার জন্য কে দায়ী? এবং প্রশ্ন: কেন পৃথিবী আপনি স্ট্রিং সঙ্গে এই করছেন?

  3. #3

    Quote Originally Posted by ;
    কল পরে কেন আপনি খোলা পরিবর্তনশীল পাওয়া যায় না আমাদের বলুন না?
    মূলত এটি হতে পারে যাই হোক না কেন 4 অক্ষরের সিরিজ abcd
    Quote Originally Posted by ;
    আপনি কি নিশ্চিত নন যে আপনি স্ট্রিংগুলিকে পয়েন্টার হিসাবে পরিনত করতে পারেন (কারণ আপনি স্পষ্টতই পদক্ষেপ নিচ্ছেন), তাদের আপনার DLL এ পরিবর্তিত হয়েছে এবং তারপরও অ্যাক্সেস লঙ্ঘন না করে MT4 তে কাজ করছে?
    ভাল আমি কোন AV এর আছে না। এবং সব কাজ ভাল আমি আমার স্ক্রিপ্ট মধ্যে কারণগুলির জন্য যথেষ্ট মেমরি দিতে (অন্তত যে কারণে আমি সেট আপ ডিফল্ট মান) অন্তত হিসাবে ফিরে মান হিসাবে চিন্তিত হয় এটি ব্যর্থতা যে তুলনা ফাংশন হয় তবে কিছু স্পষ্টত ভুল আমার অনুমানের মধ্যে এবং আমি এই পদ্ধতিতে স্ট্রিং পাস করতে পারেন যদি জানতে পারেন যেমন আমি ডাবলস এবং পূর্ণসংখ্যার (যেমন অ্যারে যেমন)
    Quote Originally Posted by ;
    আপনি আপনার ডিএলএল নেভিগেশন নতুন সিরিজ নতুন মেমরি বরাদ্দ না?
    যদি আমি সঠিকভাবে বুঝতে পারি আমি স্ক্রিপ্ট দ্বারা বরাদ্দ মেমরির তথ্য কপি করছি
    Quote Originally Posted by ;
    কেন আপনি স্ট্রিং ব্যবহার না বরং নতুন পয়েন্টার ফিরে আসতে সক্ষম? এই নতুন বরাদ্দ মেমরি মুক্ত করার দায়িত্ব কার?
    সিরিজের ব্যবহার একটি এভি প্রদান করে এবং আমি বুঝতে পারি যে সমস্ত মেমরি স্ক্রিপ্ট দ্বারা পরিচালিত হয়
    Quote Originally Posted by ;
    এবং প্রধান প্রশ্ন: কেন আপনি বিশ্বের সব স্ট্রিং সঙ্গে তাই করছেন?
    একটি বিট বিভ্রান্তিকর আমি সম্মত কিন্তু বাস্তব মান পাস করার জন্য আমি স্তর অ্যারে ব্যবহার করছি স্ট্রিং নিম্নলিখিত উদ্দেশ্য জন্য সম্পূর্ণভাবে

  4. #4

    Quote Originally Posted by ;
    আমি সঠিকভাবে বুঝতে হলে আমি স্ক্রিপ্টের সাথে বরাদ্দ মেমরিতে তথ্য অনুলিপি করছি
    আপনি কিভাবে মেটাট্রেডার অভ্যন্তরীণভাবে স্ট্রিংগুলি পরিচালনা করে তা নিশ্চিত করতে পারেন না। সম্ভবত আপনার DLL কেবল একটি সি নির্দেশিকা পেতে হবে একটি স্ট্রিং এর compliant (পরিত্যাগ) কপি কল পরে বাতিল করা হবে এবং এটি একটি সম্পূর্ণরূপে ভিন্ন ভাবে স্ট্রিং সঞ্চয়। এটি হ্যাপ ম্যানেজারের অপারেশনগুলির জন্য ক্লোন তৈরি করে এবং রেফারেন্স পরিচালনা করবে, সম্ভবত তারা প্যাসকেল স্ট্রিং এবং সি স্ট্রিং নয়, অথবা তারা একটি স্ট্রিং লাইব্রেরী ব্যবহার করে যা ইউনিকোড বা এইরকম কিছু কাজ করে। কে জানে? এটা কোথাও নথিভুক্ত করা হয় না! আপনি একটি অনথিভুক্ত ইন্টারফেসের মাধ্যমে মেটাট্রেডারের নিজস্ব ডেটা স্ট্রাকচারগুলি নিছক করার চেষ্টা করছেন! আপনি কি সত্যিই এটি করার চেষ্টা করছেন ঐতিহ্যগত উপায় করা যাবে না?
    Quote Originally Posted by ;
    কিছুটা বিভ্রান্তিকর আমি সম্মত কিন্তু আমি বাস্তব মূল্য পাস করার জন্য ডিগ্রী অ্যারে ব্যবহার করছি স্ট্রিং অন্য উদ্দেশ্য জন্য সম্পূর্ণভাবে
    এটি ইন্টিগ্রেটেড ইন্টিগ্রেটেড হতে পারে না? এই স্ট্রিং একটি কমান্ড বা রাজ্য সীমিত সংখ্যা প্রতিনিধিত্ব করে তাহলে তাদের এনকোড। প্রতিটি সম্ভাব্য কন্ট্রোল বা মোড বা রাষ্ট্রের জন্য একটি ধ্রুবক স্থাপন করুন অথবা এটি আরও ভাল পঠনযোগ্যতার জন্য যা কিছু তাও মেটাট্রেডারে করা যায়: (OP_BUY, OP_SELL, MODE_FOO, MODE_BAR, ইত্যাদি)। এমন জিনিসগুলির জন্য স্ট্রিং ব্যবহার করে যেটা অদ্ভুত মনে হয়। এমন একটি পদ্ধতি আছে যা এইভাবে করা হয় না। (পিএইচপি ছাড়া, পিএইচপি kiddies কি একটি ধ্রুবক কি না জানি না)

  5. #5

    Quote Originally Posted by ;
    আপনি কি করতে চান তা প্রচলিত উপায় করা যাবে না?
    তাই একটি DLL (আমি পথ থেকে Delphi7 ব্যবহার করে) একাধিক সিরিজ মান পাস করার প্রচলিত উপায় কি আমি আমি পূর্ণসংখ্যার ব্যবহার ব্যাখ্যা হিসাবে কাছাকাছি একটি কাজ করতে পারে নিতে কিন্তু আমি শব্দের মেমরি পয়েন্টার হিসাবে পাস হতে পারে বুঝতে পেরেছি ব্লক দেখুন
    http://docs.mql4.com/basis/variables/extfunctionsধন্যবাদ

  6. #6

    Quote Originally Posted by ;
    সুতরাং একটি DLL (আমি পথ থেকে Delphi7 ব্যবহার করে) বিভিন্ন সিরিজ মান পাস করার ঐতিহ্যগত উপায় কি আমি আমি পূর্ণসংখ্যা ব্যবহার করে বর্ণনা হিসাবে আমি কাছাকাছি কাজ করতে পারেন নিতে কিন্তু আমি যে স্ট্রিং মধ্যে পয়েন্টার হিসাবে পাস হতে পারে পরিচিত চাই মেমরি ব্লক ঘড়ি
    http://docs.mql4.com/basis/variables/extfunctionsদরুন
    মেমরি ব্লক পয়েন্টার সম্পর্কে কিছু লিখিত আছে এবং কিছু যা প্যাসকেল স্ট্রিং এর মত শব্দে রয়েছে, এটি (যদি এটি মূলত রাশিয়ান মূল থেকে আরও বেশি করে করে তোলে) নাও তবে তারা পরবর্তীতে mql4 স্ক্রিপ্ট দ্বারা ব্যবহারের জন্য সব সময় পরিবর্তন করতে আলোচনা করবেন না। আমার নিজের অভিজ্ঞতার থেকে আমি কি বলতে পারি যে DLL এর কাছে যে স্ট্রিংগুলি পাস হয়েছে তা কেবল স্ট্রিং বন্ধের পয়েন্টার হবে। এই জন্য আপনি প্যাসকেল একটি PChar ফর্ম ব্যবহার করবে। আমি একটি কেস আছে যেখানে আমি কখনও dll থেকে স্ক্রিপ্ট মধ্যে একটি সিরিজ ফেরত প্রয়োজন অনুভূত এবং যে যখন আমি আমার নিজের পাইথন বাঁধাই লিখেছিলাম। কলাম mql4 স্ক্রিপ্টে একটি পাইথন স্ট্রিং অবজেক্টের মান ফেরত ফাংশনটি এইরুপে দেখায়: সন্নিবেশিত কোড ফাংশন PyGetString (আইটেম: PPyObject): # 91; রঙ = রেড # 93; পিসার # 91;রঙ # 93 ;; stdcall; var জিএস: টিজিআইএলএলটিটি; শুরু করুন gs: = PyGilState_Ensure (); PyGetString: = PyString_AsString (আইটেম); PyGILState_Release (GS); শেষ; (আপনি সম্পূর্ণ সোর্স কোড খুঁজে পেতে পারেন (লাসার্সএফপিসি) সাইটের শেষে। Rar ফাইল হিসাবে সংযুক্ত:
    http://sites.google.com/site/prof/me...on-integration) উপরে একটি পয়েন্টার সিরিজ (পিথন DLL থেকে তৈরি) ফিরে আসবে, শুধু fuction রিটার্ন মান ব্যবহার করে। MT4 পয়েন্টার থেকে স্ট্রিং এর নিজস্ব মেমরিতে কপি করবে। একবার আমি ঐতিহ্যবাহী উপায় প্রস্তাবিত একবার আমি সমস্যা সমাধানের জন্য ঐতিহ্যগত উপায় ছিল, না ফেরত স্ট্রিং এর ঐতিহ্যগত উপায়। সমস্যা সমাধান করার প্রচলিত উপায় (যাই হোক না কেন) সম্ভবত স্ক্রিপ্টের মধ্যে ফিরে কোনও স্ট্রিং ব্যবহার অন্তর্ভুক্ত হবে না। তাই এখানে আবার প্রশ্ন?

  7. #7
    7 বিট হিসাবে আপনি মেমরির যে আপনি (DLL) বরাদ্দ havent manipulating হয় এবং আপনি কি জানেন না কিভাবে MQL যে স্ট্রিং মধ্যে মেমরি বরাদ্দ করা বা এটি তার জীবন্ত আকার (স্প্যান) MQL স্ট্রিং tstr সঞ্চয় যে উপায়; tstr = DLLreturnNullString (); এটি কাজ করে কারণ MQLটি একটি টার্ম স্ট্রিং (যা আপনার DLL বরাদ্দ মেমরি বরাদ্দ করা হয়) একটি পয়েন্টার প্রদান করা হয় MQL তারপর তার নিজস্ব মেমরি এবং অভ্যন্তরীণ বরাদ্দ তালিকাস্ট্রিং আকার তালিকা বরাদ্দ এবং নতুন MQL মেমরি থেকে ডাটা অনুলিপি সঙ্গে মোকাবিলা। আপনি যদি MQL এর স্ট্রিং এর নিজস্ব কপি তৈরি করার অনুমতি দিবেন, তাহলে সর্বদা ভাল থাকবেন। MQL স্ট্রিং tstr; DLLchangethisString (tstr); এটি বেশ কয়েকটি কারণের জন্য বিপজ্জনক: একটি) আপনি জানেন না কত মেমরি (যদি থাকে) এমকিউএল আপনার পয়েন্টার আপনার DLL recieves বরাদ্দ হয়েছে। বি) আপনি যদি স্ট্রিংটি পরিবর্তন করেন তাহলে এমকিউএলটি এটি সম্পর্কে জানতে পারবে না এবং আপনি যদি এর দূরত্বটি পরিবর্তন করেন তবে MQL এর স্ট্রিং এর দৈর্ঘ্যের 'knowlegde' আপডেট করা হবে। আপনি স্ট্রিংটি পরিবর্তন বা পড়ার চেষ্টা করবেন এবং উপরোক্ত মেমরির মাপকাঠিটি মেইল ​​করুন যেটি MQL কে বরাদ্দ করা হয়েছে তারপর আপনার একটি সুরক্ষা দোষ আছে D) আমার অভিজ্ঞতার মধ্যে যখন MQL এর স্ট্রিংগুলি 64KB আকারের হতে স্ট্রিং হতে পারে তখন নিশ্চিত যে মেমরিটি সবসময় মেমরির এক সংলগ্ন ব্লকের মতো আলাদা নয়। যদি আপনি এই পাথ (এবং আইডি না উপদেশ) সর্বদা সেরা উপায় MQL int len ​​হবে; স্ট্রিং tstr =;/প্যাড পর্যন্ত 255 অক্ষর সংজ্ঞা সময় যাতে মেমরি বরাদ্দ করা হয়েছে DLLchangethisString (len, tstr); মুদ্রণ (StringSubstr (tstr, 0, লেন)); এইভাবে আপনার DLL এই স্ট্রিং এর নতুন দৈর্ঘ্য ফেরত পাঠায় যাতে আপনার নতুন স্প্যানের কিছু জ্ঞান থাকে। আমি একটি সি হেডার লক্ষ্য করেছি যেটি MQL চেইন গঠনটি (কিন্তু এটি কখনো ব্যবহার করা হয়নি) বর্ণনা করে যা স্ট্রিংয়ের প্রারম্ভের পূর্বে একটি INT (4 বাইট) এর মধ্যে স্ট্রিং এর দৈর্ঘ্য কিভাবে সংরক্ষণ করা হয় তার সমালোচনা করে। তাই আপনার DLL এ আপনি MQL দ্বারা সরবরাহিত স্ট্রিং পয়েন্টার হ্রাস করতে চেষ্টা করতে পারেন (4 বাইটের দ্বারা) এবং মেমরি অবস্থানের জন্য একটি পূর্ণসংখ্যা লিখতে নতুন দৈর্ঘ্য হওয়ায় Ive কখনো চেষ্টা করে নিএটা জানি না যখন এই সঙ্গে ডান এবং im যে আমি এটি করার পরামর্শ দেওয়া হচ্ছে কারণ আপনি MQL- এর জ্ঞানের সাথে জড়িয়ে পড়েছেন যে এই স্ট্রিংটি দিয়ে আপনার কি করা উচিত তা আপনি 255 থেকে 10 এর মধ্যে তার স্পন পরিবর্তন করতে চান তাহলে MQL হয়তো মেমরিটি রিলাক করতে পারে যা আপনার DLL এটিকে অজ্ঞাত করে ফেলেছে।

  8. #8
    ঠিক আছে Guys এটি MQL ডক্স প্রদর্শিত সাহায্যের জন্য ধন্যবাদ স্পষ্ট নয়। আমি এখন বিদ্যমান লোকেদের পরিবর্তনের পরিবর্তে DLL (ডেলফিতে একটি ফাংশন কল হিসাবে) নতুন স্ট্রিংগুলি ফেরত নিয়ে মনোনিবেশ করব এবং যতক্ষণ পর্যন্ত 7 বিট প্রস্তাব দিবে ততক্ষণ আমি স্ট্রিং ব্যবহার সীমিত করতে দেখব

অনুমতি প্রদান

  • আপনি হয়তো নতুন থ্রেড পোস্ট করবেন না
  • আপনি হয়তো উত্তর পোস্ট করবেন না
  • আপনি হয়তো সংযুক্ত কিছু পোস্ট করবেন না
  • আপনি হয়তো আপনার পোস্ট এডিট করবেন না
  •  
  • বি বি কোড চালু
  • স্মাইলি চালু
  • [IMG] কোড চালু
  • [VIDEO] কোড চালু
  • HTML কোড বন্ধ
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.