[過去ログ] AutoHotkey スレッド part30 IDのみ (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
634(3): 2023/10/13(金)20:31 ID:lUFs50Mf0(1) AAS
v2使ってます
ダブルクオーテーションで囲んだ変数を展開する方法はあるでしょうか?
調べてみたらv1の頃はできたっぽいんですが…
以下は例で、本当にやりたいのはテキストファイルに書いておいた文字列が含む変数を展開することです
v := "「A_AhkVersion」"
MsgBox v ; A_AhkVersionと表示されるのを2.0.10とかにしたい
635(1): 2023/10/13(金)21:09 ID:kszrn8gL0(1) AAS
無変換(SC07B)+変換(SC079)+o
はどうやって書けばいいでしょうか?
~SC079 & SC07B & o::
は動きませんでした
636(1): 2023/10/13(金)22:58 ID:1crCpIhe0(1) AAS
>>634
外部リンク[htm]:ahkscript.github.io
>>635
修飾キー(Ctrl、Shift、Alt、Win)以外の3つ以上のコンビネーションキーはサポートされていない
ホットキーを2つまでにして、#IF または ホットキーの処理内で GetKeyState で3つ目以降のキー状態を取得して分岐させることは可能ではあるが
そもそも使用中のキーボードによっては修飾キー以外のキーは3つ以上の同時押しを認識できない場合も多々あるのでそこら辺は環境による
637(2): 2023/10/13(金)23:04 ID:ERs/JTAS0(1) AAS
>>634
外部リンク[htm]:www.autohotkey.com
これv1の時からTransform廃止するからこんな感じの関数でやってねって言ってたけど
関数内ローカルの展開に使えなくてTransformの代わりにならない
638(2): 2023/10/14(土)00:58 ID:iMxXiXwK0(1/2) AAS
>>636
ありがとうございます
アドバイス通りにやったらうまくいきました
#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::
SendInput, {Up}
return
#if
ところが次の問題が~sc079 & i::を設定していると動かなくなります
同時併用はできないでしょうか?
639(1): 2023/10/14(土)08:08 ID:DXkbEwUP0(1) AAS
>>638
SC079 & i::
if(GetKeyState("SC07B", "P")){
;処理A
} else {
;処理B
}
return
とかどう?
640(1): 2023/10/14(土)08:39 ID:281ftA3E0(1/2) AAS
>>638
実際にどういう書き方をしているかはわからんけど、おそらく #If が同条件での発動になってて ~sc079 & i:: の方が優先されているだけだと思う
やり方は色々あるけど一例としてこんな感じでも動く
#If !GetKeyState("SC07B", "P")
~sc079 & i::SendInput, {Down}
#If
#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::SendInput, {Up}
#If
641(1): 2023/10/14(土)09:17 ID:3TcJyM+70(1/2) AAS
>>637
どうにかならないかと思ったけどあんまりどうにもならなかった
ローカル変数を扱いたいときだけ列挙してクロージャにして渡して
MsgBox Deref("%var1%def%var2%", varName => (var1, var2, %varName%))
関数定義のところで受け取って
Deref(Str, derefFunc?)
途中のderef部分を
out .= IsSet(derefFunc) ? derefFunc(m[2]) : %m[2]%
みたいな
642(1): 2023/10/14(土)13:14 ID:281ftA3E0(2/2) AAS
>>634
636だけどちょっと読み違えてた。そういうことをやりたいならこんな感じで変数にしたい文字列を置き換えるかな…
v := "「A_AhkVersion」「A_YYYY」"
for var in ["A_AhkVersion", "A_YYYY"]
v := RegExReplace(v, var, %var%)
MsgBox v
連想配列を用いる方法もある。一見冗長に見えるがプログラミング的に推奨されるのはこちらの方だと思う
variables := Map("A_AhkVersion", A_AhkVersion, "A_YYYY", A_YYYY)
for key in variables
v := RegExReplace(v, key, variables[key])
省6
643: 2023/10/14(土)17:31 ID:iMxXiXwK0(2/2) AAS
>>639
ありがとうございます それで完璧に動作しました!
>>640
ありがとうございます アドバイス通り競合していたみたいです
644: 2023/10/14(土)21:33 ID:3TcJyM+70(2/2) AAS
>>642
元の質問とは別で>>637の挙げてるドキュメントの話だって説明ないとわかりにくかったね、今度から気をつけるわ
> 手段が目的化 はまさにそれで、パズル感覚でどうにかならないかなと考え始めたんで
Transformについては自分も同意するところ
645: 633 2023/10/15(日)13:03 ID:/B+GGiqI0(1) AAS
お返事をくださった皆さん、ありがとうございました
書き忘れてましたがv1でのやり方はご指摘の通りTransformでした
使う変数は組込変数で、使う場面も限定されるので、連想配列で工夫したいと思います
646: 2023/10/15(日)15:47 ID:TKXXnipr0(1) AAS
外部リンク[htm]:www.autohotkey.com
だいぶ前のレスで上記URLを参考にしたと思われる
v2でのヒアドキュメントが変数を絡めると見にくくなる話が出てたが
継続行開始と終了の()の内側に"入れ改行位置を分けてやればいけることに気がついた
F1:: { ; 公式ドキュメントの例に則った記述
MsgBox("
(Join
現在のバージョンは「
)" A_AhkVersion "
(
省15
647: 2023/10/16(月)06:27 ID:HnFsiC+R0(1) AAS
なんか無理やりヒアドキュメント使いたいってだけで本末転倒なんよ
最初の例だと
F1:: {
MsgBox(
"現在のバージョンは「"
A_AhkVersion
"」です。"
,"テストメッセージ"
)
}
省2
648: 2023/10/16(月)10:20 ID:Bz5r9zRC0(1) AAS
なにがなんでもv2の欠点を欠点と認めない人がずっと頑張ってるけど
その行為なんかメリットある?
649: 2023/10/16(月)11:38 ID:Wb0gkuWM0(1/2) AAS
v3まで待つしか
650: 2023/10/16(月)12:44 ID:JfuEMiXm0(1) AAS
v1のヘンタイコードに対応することは二度とないよ
651: 2023/10/16(月)16:43 ID:eNxVDezc0(1) AAS
過去の資産のあるゴミ言語から
資産のないゴミ言語になった
652: 2023/10/16(月)16:50 ID:Wb0gkuWM0(2/2) AAS
先進性があるならともかく、どっかで見たような言語を再開発する意味とは
653: 2023/10/16(月)18:31 ID:dLR3pMBg0(1) AAS
AA省
上下前次1-新書関写板覧索設栞歴
あと 349 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.154s*