![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
外部テキストファイルの読み込みを参考資料などを見ていると、下記のような形式で読み込みを行っているのですが。
a.txt
---------------------
任意の変数名1=値
任意の変数名2=値
任意の変数名3=値
---------------------
下記のようなテキストファイルを読み込むことは可能でしょうか?
a.txt
---------------------
2<>名前<>メールアドレス<>画像.jpg<>
1<>名前<>メールアドレス<>画像.jpg<>
---------------------
※最初の1文字目は連番の数字です
前文の方の読み込みは成功しておりますが、下の内容については、どうすればよいかわかりません・・・
読み込みができるのであれば、各行はsplitで配列に格納したいと思っています。
どうぞよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
以下,#2 の方の補足的回答だと思っていただければよろしいかと思います。
> 各行はsplitで配列に格納したいと思っています。
ここが具体的でなくてよくわかりませんが,
「<>」 を区切り記号として,
2, 名前, メールアドレス, 画像.jpg,
1, 名前, メールアドレス, 画像.jpg,
というような2次元配列1つを作成するということとして回答します。
- - - - - - -
そして外部テキストですが,
回答するにはもう1つ問題点があります。
データを作成するソフトやOSやプログラムや設定によって改行コードは違います。
1つの例として,
Windows の メモ帳 を用いて
文字コードShift-JIS(ANSI)で普通に,
2<>名前<>メールアドレス<>画像.jpg<>
1<>名前<>メールアドレス<>画像.jpg<>
というデータを記入して,
「data.txt」 というファイル名で保存した場合
についてスクリプト例を回答します。
「data.txt」 と同じフォルダにSWFがある場合の,
フレームに書くスクリプト↓。
----------------------------------------
// テキストをShift-JIS として扱う
System.useCodepage = true;
// LoadVarsクラスのインスタンス myLV を作成
myLV = new LoadVars();
// データを格納する配列 dataArr を作成
dataArr = new Array();
// ロード完了時の動作定義(引数:ロードしたデータ)
myLV.onData = function(myData) {
// 改行コード区切りで preArr を作成
preArr = myData.split("\r\n");
// preArr の要素数未満でループ
for (i=0; i<preArr.length; i++) {
// preArr を <>区切りで dataArr のi番要素 に代入
dataArr[i] = preArr[i].split("<>");
}
// ---↓出力検証(本題と関係なし)↓---
for (i=0; i<preArr.length; i++) {
for (j=0; j<dataArr[0].length+1; j++) {
trace("dataArr["+i+"]["+j+"]="+dataArr[i][j]);
}
trace("------------");
}
// ---↑出力検証(本題と関係なし)↑---
};
// 外部テキストのロード
myLV.load("data.txt");
----------------------------------------
通常,
LoadVars.onLoad でロード完了のタイミングを取得すると思いますが,
上の例では LoadVars.onData で取得しています。
LoadVars.onData = function(変数名){ }
という形で定義するとその 変数 の値としてロードしたデータ自体が代入されます。
このような方法を使うと,
変数名=値&変数名=値&変数名=値&…
というデータ形式でなくてもロードしたデータを取ってくることが可能になります。
ご質問では,
> 外部テキストファイルの読み込みを参考資料などを見ていると、
> 下記のような形式で読み込みを行っているのですが。
と書かれていらっしゃいますが,
読み込み まででしたらどんな形のテキストファイルでも可能です。
たとえば XML でも HTML でも CSV でも SVG でも何でもです。
テキストのロードは何でも可能なのですが,
ただ,
XML を除くテキストの場合,
変数名=値&変数名=値&変数名=値&…
のような形にしておかなければ,
データの値が利用できない (名指しで呼べない) から,
そういう形式のデータにしてあるだけです。
上のように LoadVars.onData を使うと,
データ全体は名指しで呼べるようになるので,
変な形のデータでも工夫次第でその後の利用が可能になります。
- - - - - - -
Windows メモ帳 の改行コードは \r\n(CR+LF) です。
また,文字コードは変えられますがデフォルトでは Shift-JIS です。
Excel で CSV を保存した場合も \r\n( CR+LF) です。
その他はソフトやそのソフトの設定によって変わります。
Mac の場合はソフトの設定によっては変えられると思いますが,
デフォルトでは Shift-JIS で,
基本的に改行コードは \n(LF) だと思います。
その他も場合によって変わります。
- - - - - - -
上のコードを書いて 「制御」→「ムービープレビュー」 してみると,
「出力検証(本題と関係なし)」 によって次のようなものが出力表示されます。
dataArr[0][0]=2
dataArr[0][1]=名前
dataArr[0][2]=メールアドレス
dataArr[0][3]=画像.jpg
dataArr[0][4]=
dataArr[0][5]=undefined
------------
dataArr[1][0]=1
dataArr[1][1]=名前
dataArr[1][2]=メールアドレス
dataArr[1][3]=画像.jpg
dataArr[1][4]=
dataArr[1][5]=undefined
------------
「<>」 を区切り記号としていますから,
画像.jpgの後にも <> があるため 画像.jpg の後にも "" という要素は存在します。
この点に少し注意してください。
お返事ありがとうございます!
ま、まさに知りたいことが全て解決しました!!
スクリプトまでご提示いただき、とても感謝しております。
ご指摘のとおり、テキストファイルの内容は操作上、自由に書きかえれるものではなく、FLASHに読み込みだけとなるため、「<>」の区切り線の最後についても注意いたします!
テキストファイルの文字コードは「Shift-JIS」です。質問内容に不備があったかと思いますが、ここまでご理解いただき幸いです!
本当にありがとうございました!!
No.3
- 回答日時:
データ形式が固定されてるのであれば
myIndex_1=2<>名前<>メールアドレス<>画像.jpg<>
myIndex_2=1<>名前<>メールアドレス<>画像.jpg<>
としたらどうでしょうか
myIndex_n の部分は好きなように変えていただけますし
あるいはテキストファイルの先頭に単純に
myDat=を付加して
myDat=2<>名前<>メールアドレス<>画像.jpg<>1<>名前<>メールアドレス<>画像.jpg<>
とか
この回答への補足
アドバイスありがとうございます。
データ形式というよりテキストファイル自体を操作することが
できないという前提です。
なので、「myDat=」という文字列を追加することはできません。
あくまでも、テキストファイルを開いたら下記のようにデータが
格納されているのを前提にFlash側で読み込み各値を操作したいのです。
---------------------
2<>名前<>メールアドレス<>画像.jpg<>
1<>名前<>メールアドレス<>画像.jpg<>
---------------------
よろしくお願いいたします。
No.2
- 回答日時:
私は外部ファイル読み込みにLoadVarsを使っており、以下はその場合の話となります。
LoadVarsでは、
1.ファイルを読み込み終わったとき
2.1のあとファイルをを解析し、自動で変数に格納し終わったとき
の処理を指定することができます。
2を使う場合にはa.txtのような形式にする必要がありますが、
1を使うなら好きな形式にし、読み込んだ内容を受け取って自分で加工することができます。
参考URL内の(3)を応用(区切り文字を「=」から[<>]に変更)して頑張ってみてください
参考URL:http://hima.chu.jp/flash/tips/loadvars.htm
アドバイスありがとうございます。
参考URLで少し道が開けた感じがいたします!!
通常のテキストファイルも(2)で読み込めると書いてますし、
(3)では改行コードで分けられることもありますね!!
参考に頑張ってみます!ありがとうございました。
No.1
- 回答日時:
質問ですが、単純に
SAMPLE2=2,名前,メールアドレス,画像.jpg
SAMPLE1=1,名前,メールアドレス,画像.jpg
とテキストファイルに書いて、Flashに読み込み、
読み込んだ変数「SAMPLE1」、「SAMPLE2」をsplitで区切っても
出来なかったのでしょうか?
この回答への補足
ご意見ありがとうございます。
ご質問にある以下の形式のファイルであれば、読み込みは成功しております。
-----------
SAMPLE2=2,名前,メールアドレス,画像.jpg
SAMPLE1=1,名前,メールアドレス,画像.jpg
-----------
上記は「変数名=値」の形式ですから、理解できるんですが、
下記テキストには「=」もないしflashからみれば、ただの
文字列にしかならないのではないかと考え、そうなれば
どうやって読み込むのか?となりました。
-----------
2<>名前<>メールアドレス<>画像.jpg<>
1<>名前<>メールアドレス<>画像.jpg<>
-----------
これを1行がひとかたまりとして認識させ、値を読み込む
のかが知りたく、投稿させていただいたしだいです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- Excel(エクセル) [Excel2016] 相関表等の自動作成 2 2022/08/01 20:34
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 バッファについて。
-
C#でDLLファイル読み込みを行う...
-
GetPrivateProfileString変値
-
XMLを使わずに同様の事をしたい...
-
フレーム内に移動したい
-
格闘ゲームのコマンド→↓→のプロ...
-
フレーム内のオプションボタン...
-
擬似フレームとPHP
-
Flashで右クリックメニューにつ...
-
左フレームの選択結果を右フレ...
-
Gifアニメの再生について(検索...
-
フラッシュで逆再生中の停止に...
-
phpで音を鳴らす
-
FLASHでシーンをつなげる。
-
プルダウンメニューの件で、至...
-
getURLのurl記述部分を外部...
-
Actionscriptでのフレーム間の移動
-
ムービー再生ボタンをクリック...
-
ASではどうやって記述するのか
-
2倍速を等速動画に(車載動画)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 バッファについて。
-
再読み込みが可能なPDFビューワ...
-
画像が一瞬とぎれてしまいます...
-
C#でDLLファイル読み込みを行う...
-
delphi6trialで読み込み違反エラー
-
C#でブラウザのタイムアウト処理
-
SDHCカードのデータをPCに取り...
-
読み込んだテキストを Split で...
-
ルートとムービークリップの関...
-
WebBrowserでgoogle検索するには?
-
FLASH8 外部テキストファイル...
-
ソニーのPlayMemoriesHomeを使...
-
ipadでdブックがとんでもなく遅...
-
外部ファイルからのデータの読...
-
スマートフォンでYahoo!知恵袋...
-
外部swfファイルを予め読み込ん...
-
動画ファイルから画像ファイル...
-
DVD(ROM)DLの読み込み速度
-
now loadingの作り方
-
Now Loading+FLV_????? 教えて...
おすすめ情報