テキストファイルからランダムで1行読み込む方法

テキストファイルから1行読み出す応用で、ランダムな1行を読み出すことが可能です。

特に難しいことはしていませんのでサンプルで確認してみてください。

 

テキストファイルからランダムで1行読み込むサンプル

fileID = FOPEN("sample.txt", F_READ) // 読み込みモードでファイルを開く
maxLine = FGET(fileID, F_LINECOUNT)	 // 全部で何行あるかを数値で取得
str = FGET(fileID, RANDOM(maxLine) + 1) // どの行を読み出すかランダムにする
FCLOSE(fileID)
PRINT str

 

FGET関数リファレンス

FGET関数のリファレンスをマニュアルから転載します。

戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
引数
 ファイルID: オープン時に返されたID
 行: 取出したい行 (1から指定)
     F_LINECOUNT  を指定した場合はファイルの行数を返す
     F_ALLTEXT   を指定した場合はファイルの全内容を返す
 列: 取出したい列 (1から指定:,カンマ区切りのCSVファイルに対応)
 ダブルコーテイション:
   FALSE: 両端のダブルコーテイションは削除する (デフォルト)
   TRUE: 削除しない
   2:   CSV処理にて2つ連続ダブルコーティションを1つに (Excel同等処理)
戻値
 取出された値

 

テキストファイルの内容が何行あるか調べる方法

テキストファイルの内容が何行あるか調べるためにはFGET関数を利用します。

FGET関数は通常指定された行の内容を取得しますが、行の変わりにF_LINECOUNTを指定することで全体の行数を取得できます。

最後の行が空の場合はカウントされないようです。

事前にFOPEN関数でファイルを開いておくことを忘れないでください。

 

テキストファイルの内容が何行あるか調べるサンプル

fileID = FOPEN("sample.txt", F_READ) // 読み込みモードでファイルを開く
n = FGET(fileID, F_LINECOUNT) // 全部で何行あるかを数値で取得
FCLOSE(fileID)
PRINT "全部で" + n + "行あります"

 

FGET関数リファレンス

FGET関数のリファレンスをマニュアルから転載します。

戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
引数
 ファイルID: オープン時に返されたID
 行: 取出したい行 (1から指定)
     F_LINECOUNT  を指定した場合はファイルの行数を返す
     F_ALLTEXT   を指定した場合はファイルの全内容を返す
 列: 取出したい列 (1から指定:,カンマ区切りのCSVファイルに対応)
 ダブルコーテイション:
   FALSE: 両端のダブルコーテイションは削除する (デフォルト)
   TRUE: 削除しない
   2:   CSV処理にて2つ連続ダブルコーティションを1つに (Excel同等処理)
戻値
 取出された値

 

テキストファイルから1行読み出す方法

テキストファイルから1行読み出すためにはFGET関数を利用します。

FGET関数は読み出す行を指定できます。

事前にFOPEN関数を利用してファイルを開く必要があります。

読み込む行の指定は1から始まります。

 

テキストファイルから1行読み出すサンプル

fileID = FOPEN("sample.txt", F_READ) // 読み込みモードでファイルを開く
str = FGET(fileID, 1) // 1行目を変数に読み込む
FCLOSE(fileID)
PRINT str

 

FOPEN関数リファレンス

FOPEN関数のリファレンスをマニュアルから転載します。

 戻値 = FOPEN( ファイル名, [オープンモード] )
引数
 ファイル名: テキストファイル名
 オープンモード: 以下の方法で指定
   F_READ        // 読み専用モード(デフォルト) SJIS、UTF8、UTF16に対応
   F_WRITE      // 書き専用モード(既にファイルがあれば前の情報は消去)
              (UNICODEがある場合に UTF8、無い場合にはSJISになる)
   F_READ or F_WRITE // 読み書き両用指定
   F_EXISTS      // ファイル存在チェック(ファイルオープンせずにファイルが存在するかを返す)
              (ディレクトリをチェックしたい場合は最後に \を付加)
  追加指定
   F_EXCLUSIVE     // 排他制御 (排他制御の読み書き: F_READ or F_WRITE or F_EXCLUSIVE)
   F_TAB        // CSV処理に対しカンマではなくタブを使用
   F_NOCR       // 書き込みにてファイルの最後の改行は付加しない (F_WRITE or F_NOCR)
  ※ 文字コードを指定したい場合は、F_WRITE の代わりに以下を指定する
   F_WRITE8:UTF8、 F_WRITE8B:BOM付きUTF8、 F_WRITE16:UTF16、 F_WRITE1:SJIS
戻値
 ファイルID
 オープンできなかった場合は-1 を返す
 F_EXISTS 指定時は TRUE(在り)/ FALSE(無し)を返す

 

FGET関数リファレンス

FGET関数のリファレンスをマニュアルから転載します。

戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
引数
 ファイルID: オープン時に返されたID
 行: 取出したい行 (1から指定)
     F_LINECOUNT  を指定した場合はファイルの行数を返す
     F_ALLTEXT   を指定した場合はファイルの全内容を返す
 列: 取出したい列 (1から指定:,カンマ区切りのCSVファイルに対応)
 ダブルコーテイション:
   FALSE: 両端のダブルコーテイションは削除する (デフォルト)
   TRUE: 削除しない
   2:   CSV処理にて2つ連続ダブルコーティションを1つに (Excel同等処理)
戻値
 取出された値

 

FCLOSE関数リファレンス

FCLOSE関数のリファレンスをマニュアルから転載します。

戻値 = FCLOSE( ファイルID, [エラー処理] )
引数
 ファイルID: オープン時に返されたID
 エラー処理:
   FALSE: エラー時はエラーダイアログを出す (デフォルト)
   TRUE: エラーダイアログを出さない
戻値
 TRUE:正常終了、 FALSE:エラー有り