অটোহোটকি - ব্যবহার করার সময় সমস্যাগুলি, অন্যথায় যদি ফাংশনের ভিতরে বিবৃতি থাকে


0

আমি ব্যবহার সংক্রান্ত সমস্যা রয়েছে if, else ifকার্যাবলী ভিতরে বিবৃতি তারা আমার Vars চিনতে না সত্ত্বেও আমি স্ক্রিপ্ট শুরুতে বিশ্বব্যাপী তাদের সেট করেছেন ...

global AR4toolCur :=
global AR4psetCollCurY :=
global AR4psetCollCurYselect :=
global AR4psetCollCurYfill :=
global AR4psetCollCurYeraser :=
global AR4psetCollCurYknife :=

~l::
AR4toolCur := "Selection"   ; means the current selected tool
return




AR4psetCollCurYperToolSelFn()    ; Sel means Select, I want to pass the value of AR4psetCollCur*NameOfTheTool* to AR4psetCollCurY
{
    msgbox, AR4psetCollCurYperToolSelFn will run`nAR4toolCur = %AR4toolCur%
    If (%AR4toolCur% := "Selection")    ; this pass the value of AR4psetCollCur*NameOfTheTool* (in this case "select") to AR4psetCollCurY
        AR4psetCollCurY := AR4psetCollCurYselect
    Else If (%AR4toolCur% := "Fill")
        AR4psetCollCurY := AR4psetCollCurYfill
    Else If (%AR4toolCur% := "Eraser")
        AR4psetCollCurY := AR4psetCollCurYeraser
    Else If (%AR4toolCur% := "Knife")
        AR4psetCollCurY := AR4psetCollCurYknife
    msgbox, AR4psetCollCurY = %AR4psetCollCurY%
return
}

এই ফাংশন উপরে কাজ করছে।

আমার গর্ত স্ক্রিপ্ট আদেশের মান পাস উপরে এই ফাংশন সঞ্চালিত হয় AR4psetCollCur*NameOfTheTool*(বর্তমান নির্বাচিত টুল) এর AR4psetCollCurY পরে পরিবর্তন AR4psetCollCurYমান এবং অন্য ফাংশনের প্যারামিটার হিসাবে এটি ব্যবহার, এবং তারপর এটি সংশোধিত মান ফিরে সংরক্ষণ করা উচিত AR4psetCollCurYমধ্যে AR4psetCollCur*NameOfTheTool* যে কেন আমি এই ফাংশন নিচে ব্যবহার করেন , কিন্তু এটি কাজ করে না, এটি সর্বদা %AR4toolCur%শূন্য দেখায়, এটি কেন?

AR4psetCollCurYperToolStrFn()
{
    msgbox, AR4psetCollCurYperToolStrFn will run`nAR4toolCur = %AR4toolCur%
    If (%AR4toolCur% := "Selection")
        AR4psetCollCurYselect := AR4psetCollCurY
    Else If (%AR4toolCur% := "Fill") ; I have tried    AR4toolCur = Fill   it doesn't work either
    {
        AR4psetCollCurYfill := AR4psetCollCurY
        msgbox, AR4psetCollCurYfill = %AR4psetCollCurYfill%
    }
    Else If (%AR4toolCur% := "Eraser")
        AR4psetCollCurYeraser := AR4psetCollCurY
    Else If (%AR4toolCur% := "Knife")
        AR4psetCollCurYknife := AR4psetCollCurY
return
}

ধন্যবাদ উন্নত।


কোনও অভিব্যক্তিতে পরিবর্তনশীল নামগুলি শতাংশ চিহ্নগুলিতে আবদ্ধ হয় না। চেষ্টা করুন If (AR4toolCur = "Selection"), যদি "নির্বাচন" একটি আক্ষরিক স্ট্রিং হয়।
ব্যবহারকারী 3419297

এটি মজার, কিন্তু উপলব্ধি চিহ্ন ছাড়া এটি কাজ করে না, আমি প্রথমে চেষ্টা করেছিলাম। গুগলে কিছু দেখেছি এর ByRefকি ব্যবহার হয় ??
litu16

আমার যদি 16 টি else ifস্টেটমেন্ট থাকে তবে এটি কি সমস্যা ? উভয় ফাংশন এর if statementsপ্রতিটি 17 আছে , এটা ঠিক ??
litu16

দেখে মনে হচ্ছে একরকম আহক আমাকে else ifএকের পর এক 16 টি স্টেটমেট থাকতে দেয়নি, আমি তাদের ifসমস্ত বিবৃতিতে পরিবর্তন করতে হয়েছিল , তাদের returnপ্রত্যেকের মধ্যে কোঁকড়ানো ধনুর্বন্ধনী একটি রেখেছিলাম এবং বাক্যটি If (AR4toolCur = "Selection")কেবল তখনই পরিবর্তন করতে হয়েছিল (সমস্ত কিছু একসাথে দিয়ে) ) কাজ করছে. ধন্যবাদ ব্যবহারকারী 3419297
litu16

BTW মধ্যে msgbox, var1 = %var1%'nvar2 = %var2%'n and so on 17 timesএটি কোড গুণিতক লাইনে msgbox এর (পরামিতি) লিখতে সম্ভব? আমি কোডটি নিজেই বোঝাতে চাইছি (কেবলমাত্র প্রকাশিত বাক্সে নয়, কোডেও) কুয়েজ এর ভীষণ 'nপরিবর্তনশীল এবং বিভ্রান্তিমূলক ব্যবহার করে ভেরিয়েবলের সাথে সমস্ত টগিটার ব্যবহার করে , ধন্যবাদ অগ্রসর।
litu16

উত্তর:


0

স্ক্রিপ্টের শুরুতে আমি তাদেরকে বিশ্বব্যাপী সেট করে রেখেছি, অন্যথায় যদি ফাংশনগুলির মধ্যে বিবৃতিগুলি আমার যুদ্ধগুলি স্বীকৃতি না দেয় তবে ব্যবহার করার ক্ষেত্রে আমার সমস্যা আছে ...

আপনি বিশ্বাস করেন যে সমস্যাটি যদি / অন্যথায় বিবৃতি দেওয়া হয় তবে তার প্রমাণ স্থানীয় / বৈশ্বিক ভেরিয়েবলগুলির সাথে সমস্যাগুলির দিকে ইঙ্গিত করে।

ভেরিয়েবলের বৈশ্বিক সংস্করণ (পরিবর্তকের স্থানীয় সংস্করণের পরিবর্তে) উল্লেখ করার জন্য আপনাকে একটি ক্রিয়াটি গ্লোবাল হিসাবে সংজ্ঞায়িত করতে হবে।

উদাহরণ কোড:

^q::
vText := "hello" ;the global version of vText
Func1()
Func2()
Func3()
Return

Func1()
{
MsgBox %vText% ;the function's local version of vText is blank
Return
}

Func2()
{
global vText
MsgBox %vText% ;the function uses the global version of vText
Return
}

Func3()
{
global
MsgBox %vText% ;the function uses the global versions for all variables
Return
}

দ্রষ্টব্য:
'if' লাইনগুলি ফর্মের হওয়া উচিত:

If (AR4toolCur = "Selection")

না:

If (%AR4toolCur% := "Selection")

মানুষ, কিন্তু আমি বিশ্বব্যাপী সেট আপ, দুঃখিত আমি একটি প্রশ্ন কিভাবে বন্ধ করতে জানি না, আসলে আমি ঠিক আগে বিবৃতি ব্যবহার করে সমাধান করেছি, বিবৃতি যদি অন্য একটি গুচ্ছ নয় 13। যাইহোক ধন্যবাদ মানুষ, ধন্যবাদ
litu16

- আপনি নিজেই প্রশ্নের উত্তর দিতে পারেন, এবং তারপরে উত্তর হিসাবে এটি গ্রহণ করতে টিক ক্লিক করুন। - অথবা আপনি যদি এই প্রশ্নের উত্তর দেন তবে আপনি এই উত্তরটি গ্রহণ করতে পারেন। - আমি যখন প্রথম ছিলাম তখন এই বিশ্বব্যাপী / স্থানীয় সমস্যা আমাকে সত্যই বিভ্রান্ত করেছিল তাই আমি যে কেউ এর থেকে উপকৃত হতে পারি তার জন্য সাধারণত তথ্য সরবরাহ করি।
ভ্যাফাইলেক

হ্যাঁ, অনেক ধন্যবাদ, তবে আমি শুরুতেই প্রশ্নে বলেছিলাম যে আমি স্ক্রিপ্টের অটো এক্সিকিউটেবল অংশে (স্ক্রিপ্টের শীর্ষ অংশ) বৈকল্পিকগুলি বিশ্বব্যাপী হিসাবে সেট করেছি। বর্তমানে আমি এই সমস্যাটি নিয়ে নরকে পাচ্ছি superuser.com/questions/1149519/… আশা করি আপনি এটি খুঁজে পেতে পারেন, দয়া করে প্রশ্নের শেষ সম্পাদিত অংশটি দেখুন। ধন্যবাদ উন্নত।
litu16

Func2 দেখুন, ভেরিয়েবলের বৈশ্বিক সংস্করণ অ্যাক্সেস করার জন্য আপনার ফাংশনটির প্রেক্ষাপটে ভেরিয়েবলগুলি বৈশ্বিক হিসাবে সেট করতে হবে। Func2 এবং Func1 এর সাথে তুলনা করুন।
ওয়াফাইলেক

- আমি আপনার Alt + স্পেস + কিউ সমস্যা সমাধানের প্রস্তাব দিয়েছি, উপরের ইউআরএলে, আমি মনে করি এটি বেশ ভালভাবে কাজ করে। - বিটিডব্লু আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি যে আপনি ফানক 1 () এবং ফানক 2 () এর মধ্যে পার্থক্যটি পর্যবেক্ষণ করুন। - (যেমন আপনি অটো এক্সিকিউট বিভাগে বৈশ্বিক পরিবর্তনশীল হিসাবে ভিটিেক্সট সেট করতে পারেন, তবে ফাংশনটি ভিটেক্সটের স্থানীয় সংস্করণ পড়বে, যদি না এটি ভিটেক্সটের গ্লোবাল সংস্করণ global vTextপড়ার জন্য লাইনের দ্বারা না বলা হয় ।)
ভ্যাফিলিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.