hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/ファイル入出力 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

ファイル入出力

初心者にとってファイル入出力はプログラミングの一つの関門となっているようです。
そこでファイル入出力の基本的な操作をここでレポートしようと思いました。
各命令の書式はHSP HELPから引用しています。 -- kz3

  • 書式
    bsave "filename",p1,p2,p3
    
    "filename" : セーブするファイル名
    p1=変数    : 変数名
    p2=64〜    : セーブするサイズ(Byte単位)
    p3=0〜(-1): ファイルのオフセット
  1. 新規作成(サイズ無調整)
      1
      2
      3
    
     
     
     
    
        ;新規作成
        path="C:\\test.txt"
        bsave path,path
    これはファイルの新規作成でテキストの内容は自身のフルパスを書き込んでいます。
    が、このファイルを開くと「ヌル」がどうたらとWindowsから言われます。
    p2を省略するとバッファのサイズ分書き込まれます。
  2. 新規作成(サイズ調整)
      1
      2
      3
      4
    
     
     
     
     
    
        ;新規作成
        path="C:\\test.txt"
        strlen size,path
        bsave path,path,size
    HSP3.2
      1
      2
      3
      4
    
     
     
     
     
    
       ;新規作成
       path="C:\\test.txt"
       size=strlen(path)
       bsave path,path,size
    バッファのサイズを指定して書込むと、そのサイズだけ書き込まれます。
  3. 上書き
      1
      2
      3
      4
    
     
     
     
     
    
        ;上書き
        path="C:\\test.txt"
        strlen size,path
        bsave path,path,size,0
    HSP3.2
      1
      2
      3
      4
    
     
     
     
     
    
        ;上書き
        path="C:\\test.txt"
        size=strlen(path)
        bsave path,path,size,0

2番目のコードと何が違うのかと言うと、bsaveのp4パラメータを使用しています。
p4は書込み開始位置のオフセットを指定するという事なので、
「初心者の中にはパラメータの省略はあまりしないほうがいい」と思ってファイル先頭位置(ゼロオフセット)から書込む・・・
と思ってp4=0と指定する人もいると思います。
しかしこれはファイルが無かった時にエラーになります。
新規作成にp4パラメータを指定するときは-1を指定します。
このp4パラメータの新規作成/上書きモードの説明がヘルプに文章として書かれていないので起こしやすいミスになります。
実際私もこのレポートを書くまで分かっておらず、ヌルファイルの作成にnotesaveを使うなどしていました。

  1
 
    bsave "C:\\test.txt",null,0,-1

と書込みサイズに0を指定するとバッファのサイズだけ書き出されてしまい、ヌルファイルにはなりませんでした・・・。
仕様があやふやだな・・・って思ってしまった。

  • HSP3からサイズ0の-1(新規作成)でヌルファイルを作成できるようになりました。 -- kz3 2005-09-29 21:52:13 (木)
  1. まとめ
      1
      2
      3
      4
      5
      6
    
     
     
     
     
     
     
    
        path="C:\\test.txt"
        txt="初めてのHSP"
        size=strlen(txt)
        bsave path,txt,size,-1
        txt="2回目"
        bsave path,txt,size,0
    HSP3.2
      1
      2
      3
      4
      5
      6
      7
    
     
     
     
     
     
     
     
    
        path="C:\\test.txt"
        txt="初めてのHSP"
        size=strlen(txt)
        bsave path,txt,size,-1
        txt="2回目"
        size=strlen(txt)
        bsave path,txt,size,0
    新規作成/上書きモードの違いが分かるようになるとこのようにスマートにかけます。
    最初のbsaveで「初めてのHSP」と書き込んでいますが2つ目のbsaveでファイル先頭から「2回目」と上書きしているので、 「初めて」が「2回目」に書き換えられているのが分かると思います。
  • 書式
    notesave "filename"
    
    "filename" : 書き込みファイル名
  1. 新規作成限定
      1
      2
      3
      4
    
     
     
     
     
    
        path="C:\\test.txt"
        txt="HSP is fantastic!"
        notesel txt
        notesave path
    notesaveは常に新規作成です。
    notesave命令を実行する前に対象となる文字列バッファをnotesel命令を使って設定する必要があります。
  • 書式
    bload "filename",p1,p2,p3
    
    "filename" : ロードするファイル名
    p1=変数    : 変数名
    p2=64〜    : ロードされるサイズ(Byte単位)
    p3=0〜(-1): ファイルのオフセット
  • 書式
    noteload "filename",p1
    
    "filename" : 読み込みファイル名
    p1(0)      : 読み込みサイズの上限値

ファイルダイアログ

コメント

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-02-17 (日) 04:39:45 (294d)