このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
sakura-macro [2022/01/13 13:03] tanaka |
sakura-macro [2022/02/01 10:31] (現在) tanaka [visible_pack.js] |
||
---|---|---|---|
行 38: | 行 38: | ||
// ----------------------------------------------- | // ----------------------------------------------- | ||
// 1行の最大文字数を指定して改行を入れる | // 1行の最大文字数を指定して改行を入れる | ||
- | // 0x0Dが含まれる時は0x0Fに変換する(確認メッセージ有) | + | // ファイル名に.chopを付けて保存する(改行コードは入力する) |
+ | // 0x0Dが含まれる時は確認メッセージ表示 | ||
+ | // [はい]:0x0D を 0x0F に変換する | ||
+ | // [いいえ]: | ||
+ | // ※ 0x0D:' | ||
// ----------------------------------------------- | // ----------------------------------------------- | ||
main(); | main(); | ||
行 78: | 行 82: | ||
// ペースト | // ペースト | ||
Editor.Paste(0); | Editor.Paste(0); | ||
+ | |||
+ | // 改行コード | ||
+ | var code = parseInt(Editor.InputBox(' | ||
+ | if(isNaN(code)){ | ||
+ | Editor.WarnMsg(' | ||
+ | return; | ||
+ | } | ||
// 名前を指定して保存 | // 名前を指定して保存 | ||
var fileName = Editor.GetFilename() + ' | var fileName = Editor.GetFilename() + ' | ||
- | Editor.FileSaveAs(fileName); | + | Editor.FileSaveAs(fileName, 0, code); |
} | } | ||
</ | </ | ||
行 186: | 行 197: | ||
===== xsort.js ===== | ===== xsort.js ===== | ||
<sxh javascript; | <sxh javascript; | ||
- | TODO | + | // ----------------------------------------------- |
+ | // 複数キーのソート | ||
+ | // [入力方法]{開始位置}: | ||
+ | // ----------------------------------------------- | ||
+ | |||
+ | main(); | ||
+ | |||
+ | function main() { | ||
+ | |||
+ | // キー | ||
+ | var input = Editor.InputBox(' | ||
+ | if(!input) return; | ||
+ | |||
+ | var keys = []; | ||
+ | var inputWords = input.split(',' | ||
+ | var orderWords = inputWords[inputWords.length-1].split(' | ||
+ | if(inputWords.length - 1 == orderWords.length) { | ||
+ | for(var i=0; i< | ||
+ | |||
+ | var words = inputWords[i].split(':' | ||
+ | if(words.length == 2){ | ||
+ | var pos = 0; | ||
+ | var len = 0; | ||
+ | var order = ''; | ||
+ | |||
+ | pos = parseInt(words[0]); | ||
+ | len = parseInt(words[1]); | ||
+ | order = orderWords[i]; | ||
+ | |||
+ | var obj = new Key(pos, len, order); | ||
+ | keys.push(obj); | ||
+ | } | ||
+ | } | ||
+ | } else { | ||
+ | Editor.ErrorMsg(' | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // 行 | ||
+ | var items = []; | ||
+ | for(var i=1; i< | ||
+ | var line = GetLineStr(i); | ||
+ | |||
+ | var itemKeys = []; | ||
+ | for(var j=0; j< | ||
+ | itemKeys[j] = line.substr(keys[j].pos-1, | ||
+ | } | ||
+ | |||
+ | var objItem = new Item(i, itemKeys); | ||
+ | items.push(objItem); | ||
+ | } | ||
+ | |||
+ | // ソート | ||
+ | items.sort(function(a, | ||
+ | |||
+ | for(var i=0; i< | ||
+ | |||
+ | if(a.key[i] !== b.key[i]) { | ||
+ | if (a.key[i] < b.key[i]) { | ||
+ | return (keys[i].order.toUpperCase() == ' | ||
+ | } | ||
+ | if (a.key[i] > b.key[i]) { | ||
+ | return (keys[i].order.toUpperCase() == ' | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | }); | ||
+ | |||
+ | var sortTxt = ''; | ||
+ | for(var i=0; i< | ||
+ | sortTxt += GetLineStr(items[i].lineNo); | ||
+ | } | ||
+ | |||
+ | // 上書き | ||
+ | Editor.SelectAll(); | ||
+ | Editor.InsText(sortTxt); | ||
+ | } | ||
+ | |||
+ | function Key(pos, len, order) { | ||
+ | this.pos = pos; | ||
+ | this.len = len; | ||
+ | this.order = order; | ||
+ | } | ||
+ | |||
+ | function Item(lineNo, | ||
+ | this.lineNo = lineNo; | ||
+ | this.key = key; | ||
+ | } | ||
</ | </ | ||
行 483: | 行 583: | ||
// pic句のバイト数を集計 | // pic句のバイト数を集計 | ||
// PICTURE文字列がN, | // PICTURE文字列がN, | ||
- | // OCCURS と REDEFINES は出てきた数だけ数えます。 | + | // REDEFINES |
+ | // ・出現した時は警告を出します。 | ||
+ | // ・出てきた数を数えて警告に表示します。 | ||
// ----------------------------------------------- | // ----------------------------------------------- | ||
行 826: | 行 928: | ||
} | } | ||
} | } | ||
- | + | ||
+ | /** | ||
+ | * オプション | ||
+ | */ | ||
+ | function getOption(option) { | ||
+ | |||
+ | for(var index in option) { | ||
+ | if(option[index]==' | ||
+ | || option[index]==' | ||
+ | return option[index]; | ||
+ | } | ||
+ | } | ||
+ | return ''; | ||
+ | } | ||
/** | /** | ||
* Pic配列を文字列に変換 | * Pic配列を文字列に変換 | ||
行 839: | 行 955: | ||
txt += ' | txt += ' | ||
txt += picArr[i].type; | txt += picArr[i].type; | ||
+ | var option = getOption(picArr[i].option) | ||
+ | if(option){ | ||
+ | txt += ' ' + getOption(picArr[i].option); | ||
+ | } | ||
txt += ' | txt += ' | ||
txt += picArr[i].byte; | txt += picArr[i].byte; | ||
行 849: | 行 969: | ||
return txt; | return txt; | ||
- | } | ||
- | </ | ||
- | |||
- | \\ | ||
- | ===== visualize_pack.js ===== | ||
- | <sxh javascript; | ||
- | // ----------------------------------------------- | ||
- | // パック10進の可視化 | ||
- | // 選択されていなかったら全範囲する | ||
- | // ----------------------------------------------- | ||
- | |||
- | var jisArr = [ | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | [' | ||
- | ]; | ||
- | |||
- | main(); | ||
- | |||
- | function main() { | ||
- | |||
- | var isSelected = Editor.IsTextSelected(); | ||
- | if(isSelected == 0) { | ||
- | Editor.MessageBox(' | ||
- | Editor.SelectAll(); | ||
- | } | ||
- | |||
- | var colFrom = GetSelectColumnFrom(); | ||
- | var colTo = GetSelectColumnTo(); | ||
- | var lineFrom = GetSelectLineFrom(); | ||
- | var lineTo = GetSelectLineTo(); | ||
- | // 選択範囲の文字列取得 | ||
- | var selectText = GetSelectedString(0); | ||
- | |||
- | // 最後の改行削除 | ||
- | selectText = selectText.replace(/ | ||
- | |||
- | // 改行で分割 | ||
- | var selectArr = selectText.split(' | ||
- | |||
- | Editor.CancelMode(); | ||
- | |||
- | for(var i=0; i< | ||
- | |||
- | var change = ''; | ||
- | for(var j=0; j< | ||
- | |||
- | var hex = (' | ||
- | |||
- | var top = hex.charAt(0); | ||
- | var low = hex.charAt(1); | ||
- | |||
- | if(isNaN(top)==0 && isNaN(low)==0) { | ||
- | change += jisArr[low][top]; | ||
- | }else{ | ||
- | change += String.fromCharCode(parseInt(hex, | ||
- | } | ||
- | } | ||
- | |||
- | // 範囲選択 | ||
- | Editor.MoveCursor(lineFrom + i, colFrom, 0); | ||
- | if(colTo == 1) { | ||
- | Editor.SelectLine(0); | ||
- | Editor.Left_Sel(0); | ||
- | } else { | ||
- | for(var col=colFrom; | ||
- | Editor.Right_Sel(0); | ||
- | } | ||
- | } | ||
- | |||
- | // 上書き | ||
- | Editor.InsText(change); | ||
- | } | ||
} | } | ||
</ | </ |