したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

波形描画ビューのその後

26sagamat:2023/12/29(金) 22:03:03
うつぼかずら様

ありがとうございます!おかげ様でGUIクラスのデータ(の一部)は保存・読込できるようになりました。ただ、文字列の保存・読込に苦戦しております。

controller.hで
std::string dataText = "test";
int dataTextLen = dataText.length();
と宣言し、パラメータ操作クラスのgetstate()で
state->write(&dataTextLen, sizeof(int));
state->write(&dataText, dataTextLen);
と記載、setstate()で、
res = state->read(&dataTextLen, sizeof(int));
res = state->read(&dataText, dataTextLen);
と記載するとクラッシュします(正確には、state->read(&dataText, dataTextLen)でクラッシュします)。

std::stringで保存しようとしていることがそもそも間違いなのか、参照の仕方に間違いがあるのか、いろいろ試しておりますが、どうもうまくいきません。
もし、お気づきの点があればご指摘頂けますと幸いです。

27管理人★:2023/12/30(土) 13:21:21
sagamatさん

書き込みがstringクラスのポインタなので、最初に文字列のバッファがあるとは限らないと思います。
シンプルに文字列そのものを保存した方がわかりやすいかもしれません。

state->write(dataText.c_str(), dataTextLen);

読み込みも、上記で文字列を保存したのであれば、一度文字列で読み込んでstring型に設定する形でよいかと思います。

char *tmpText = new char[dataTextLen];
res = state->read(tmpText, dataTextlen);
dataText = tmpText;
delete[] tmpText;

(stringクラスの文字列バッファのポインタを直接取得できるのであれば、上記のtmpTextは使う必要がありません。)

28sagamat:2023/12/30(土) 14:10:35
うつぼかずら様

年末の慌ただしい時期にも関わらず迅速にご対応いただき、ありがとうございます。
的確なご指導のおかげで、無事に目的のプラグインを作成することができました!
大変勉強になりました。重ねて感謝申し上げます。

もしお許しいただけるのであれば、少しでも何かお礼をしたく、メールででもご連絡いただけますと幸いです。

29管理人★:2023/12/30(土) 15:08:46
sagamatさん

無事解決してよかったです。
調べればいずれわかることだと思うので、特にお礼などは不要です。

30sagamat:2023/12/30(土) 19:54:50
うつぼかずら様

調べに調べればいずれわかることかもなのかもしれませんが、ご教示いただいたことで多大な時間と労力を削減できました。ありがとうございます。
ちなみにこのスレッドで質問させていただいて作成したのはチューナーとコンボルバーです。
特にコンボルバーですでに出回っているものはいろんな機能が追加されており、根本の部分がブラックボックス化しているものが多く、ネイティブに作成できたことで安心して使用することができます。
もしかすると今後もまたご質問させていただくことがあるかもしれませんが、できる限り自分で解決できるよう引き続きC++、ならびに、VSTのことを勉強するようにいたします。
取り急ぎ、深く御礼を申し上げます。良いお年をお迎えください。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板