コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
takumi ◆Ce3Q40uXWJjn
2019/5/8 16:55
質問
プログラムを一行にまとめる方法について
PRGを一行にまとめたいと思っています。
どうすればできるでしょうか...
OSの更新プログラムを一つにまとめたくて。
理想は、
A$="プログラム"
SAVE "TXT:プログラム名",A$
です。
教えてください。

コメント

アバター
はる 2019/5/8 17:18 ◆75Vh4SY8TdKS
どういう意味ですか?
改行はCHR$(10)でできますよ。
アバター
takumi 2019/5/8 17:25 ◆Ce3Q40uXWJjn
普通にプログラムしてたら100行程行くんです。
ACLS
D=1
F=2
PRINT D
を、
ACLS改行D=1改行F=2改行PRINT D
みたいにしたいんです。
アバター
Soybeanman 2019/5/8 17:51 ◆SDLkyXUP6WqK
:(コロン)で繋げます。
が、一行に使いすぎると読みにくくなるので多用しすぎないようにしましょう。
アバター
takumi 2019/5/8 18:12 ◆Ce3Q40uXWJjn
それを自動化する方法ありますか?
アバター
こういち 2019/5/8 18:40 ◆ou0jbJnEJ0Kb
INSTR()を使うといいかと

VAR I
A$="プログラム"
REPEAT
 I=INSTR(I,A$,CHR$(10))
 IF I!=-1THEN
  A$[I]=":"
 ENDIF
UNTIL I==-1
SAVE"TXT:ファイル名",A$
アバター
Soybeanman 2019/5/8 18:44 ◆SDLkyXUP6WqK
はるさんが仰ってるように、改行コードはCHR$(10)ですが、私の記憶ではCHR$(13)がキーボードで打てるものだったと思います。
追記:プログラムコードではCHR$(10)となるようです。
こちらに違いが書いてありました。
http://wiki.hosiken.jp/petc3gou/?cmd=read&page=Mame%2F%B2%FE%B9%D4%A4%CE%B2%F2%BC%E1&word=%B2%FE%B9%D4
なので、そのプログラムを文字列にして、if 文字列[n]==CHR$(10) then 文字列[n]=":"
をfor n=0 to len(文字列)-1で回せば行けそうです。
アバター
Soybeanman 2019/5/8 18:46 ◆SDLkyXUP6WqK
こういちさんのコードの方が速そうですね…
精進します。
アバター
はる 2019/5/8 18:46 ◆75Vh4SY8TdKS
キーボードで打てるものは確かにそうですが、
保存時にCHR$(10)に変わります。
アバター
Soybeanman 2019/5/8 18:52 ◆SDLkyXUP6WqK
>>はるさん
回答ありがとうございます。
そうでしたか。完全に忘れていました。
訂正しておきます。
アバター
あまさとしおん 2019/5/8 19:19 ◆mzDKTVUAtwqE
(最近のVersionでは改行をchr$(13)に変換する機能はなくなった、過去の仕様だったりする
アバター
まるだい 2019/5/8 19:22 ◆AdwyE6qhnxpV
もし中身に
IF ~ THENがあって、ENDIFがない一行の分岐だと
一行化したときに不具合が出るので、
そんなコードも追加したほうがいいと思います
アバター
はる 2019/5/8 20:02 ◆75Vh4SY8TdKS
あまさとしおんさん

そうなんですね。
ですが書くときはCHR$(10)になりますね。
アバター
しんいち 2019/5/8 20:05 ◆lHy.hAWXbthn
一行にまとめるのは、IF文とか考えると自動化は面倒そうですが、もしかしたら改行を無くすのが目的じゃなくて、1個の文字列変数に代入できれば良いのかな。であれば
A$=LOAD("TXT:プログラム名",0)
で良いと思う(ファイルの場合)。
スロット1のプログラムなら
PRGEDIT 1
A$="":REPEAT
L$=PRGGET$()
INC A$,L$
UNTIL L$==""
SAVE"TXT:プログラム名",A$
こんな感じ。
アバター
クロマリオ 2019/5/8 23:12 ◆jST6XW8BxBax
一行にまとめる?改行をコロンに置き換えたらいいんじゃね?(適当)
アバター
こういち 2019/5/8 23:40 ◆ou0jbJnEJ0Kb
1行IFの存在忘れてた…
そもそも1行IF使わない主義だから…と言い訳しておく。
アバター
しんいち 2019/5/9 0:03 ◆lHy.hAWXbthn
もしくは、複数のプログラムを1つのプログラム内にまとめて、そのまとめた1つのプログラムからまとめる前の複数のプログラムを生成できるように、1プログラム=1文字列変数で持ちたい、とかかな。
であれば、プログラム全体を"(ダブルクォーテーション)でくくって文字列変数に代入できるように変換する必要がありますね。
具体的には、"を"+CHR$(34)+"に、改行を"+CHR$(10)+"に変換すれば良いかな。
例:
VAR P=-12,DQ$=CHR$(34),A$=LOAD("TXT:プログラム名",0)
REPEAT
 P=INSTR(P+12,A$,DQ$)
 IF P!=-1THEN A$[P]=DQ$+"+CHR$(34)+"+DQ$
UNTIL P==-1
P=-12:REPEAT
 P=INSTR(P+12,A$,CHR$(10))
 IF P!=-1THEN A$[P]=DQ$+"+CHR$(10)+"+DQ$
UNTIL P==-1
PRGEDIT 1
PRGINS "A$="+DQ$+A$+DQ$
PRGINS "SAVE"+DQ$+"TXT:プログラム名"+DQ$+",A$"

勝手に想定して色々提案してみたけど見当違いだったらごめんね^^;
アバター
クロマリオ 2019/5/9 0:09 ◆jST6XW8BxBax
実はINSTR()を使わなくてもprggetから行文拾える
あとは後ろの改行をコロンに置き換えて文字列変数に追記していけばいいのら
アバター
takumi 2019/5/9 10:35 ◆Ce3Q40uXWJjn
みなさんありがとうございます!
みなさんが言うように開業をコロン等に変えると上手く行きました!
これでWinphone petitの更新が簡単にできます!
本当にありがとうございました!
アバター
RU-RA 2019/5/9 16:33 ◆WXDJqyOv9yBK
開業で草

saveということはnあのpcもどきかな?

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -