お世話になっております。
OGGファイルを複数読み込んで表示してまして、IDは正常に入るのですがタイトルがうまく表示できず困っています。
2ファイル目以降を代入するとそれまでに代入していたファイルも更新されてしまいます。
ただ、代入をFileInfo.Nameではなく直接文字列を入れた場合は正常に動作します。
よろしくお願いいたします。
以下はソースコードです。
#include <DxLib.h>
class Test {
private:
int id;
const char* title;
public:
Test() {
title = u8"test";
id = -1;
}
int get_id()const { return id; }
const char* get_title()const { return title; }
void set_id(int id) { this->id = id; }
void set_title(const char* title) { this->title = title; }
};
int ToolTest() {
// データ
Test testData[10];
// 見つかったファイル数
int findFile = 0;
// フォルダ内の曲の読み込み用
FILEINFO FileInfo;
DWORD_PTR FindHandle;
// 検索開始、最初のファイルの情報を取得
FindHandle = FileRead_findFirst(u8"*.ogg", &FileInfo);
// ファイルが見つかった場合のみ実行
if (FindHandle != (DWORD_PTR)-1){
do{
// 画面をクリア
ClearDrawScreen();
// ファイル(FALSE)かフォルダ(TRUE)判定
if (FileInfo.DirFlag == FALSE) {
// 見つかったファイル名で書き込む
testData[findFile].set_title(FileInfo.Name);
testData[findFile].set_id(LoadSoundMem(FileInfo.Name));
for (int j = 0; j < 10; j++) {
//if (j == 8) { }
DrawFormatString(0, j * 20, -1, u8"title:%s id:%d", testData[j].get_title(), testData[j].get_id());
}
findFile++;
}
// 裏画面の内容を表画面に反映
ScreenFlip();
// キー入力待ち
WaitKey();
// 次のファイルを検索、無かったらループを抜ける
} while (FileRead_findNext(FindHandle, &FileInfo) >= 0);
}
// 検索ハンドルの後始末
DxLib::FileRead_findClose(FindHandle);
return 0;
}