可変長文字列の処理がうまくいってない?

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ganas
記事: 19
登録日時: 2006年3月04日(土) 00:39

可変長文字列の処理がうまくいってない?

#1 投稿記事 by ganas »

現在、次のような文字列処理用のプログラムを作っています。

ZeroStringを使って可変長文字列を処理しようとしたのですが、文字列の長さ(バイト数)が一定の長さ(バイト数)を超えた時点(その長さは未計測)で、BasicCompiler.exeが、エラーも出さずに、いきなりクラッシュしてコンパイルが停止します。

上記の条件を満たさない(一定の長さよりも短い)と、まったくエラーは発生しません。

このプログラムは、指定された文字列を、プログラムで解析して、StrPutに送り、TextOutで出力しています(ゲームなどである、色が途中で変わったり、太字になったりする処理を実現するためのプログラムで、StrPutは内部処理用の関数で、画面へ出力するにはStrOutを使用)。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#2 投稿記事 by イグトランス »

その前に,そのコードではZeroStringを行う必要がありません。
なぜならMakeStrは内部で文字列のメモリを確保してくるためです。

ただZeroStringを取り除いたからと言ってコンパイラが黙りこくるのが直るかどうか自信はありませんが。
MakeStrだって結局はZeroStringを呼んでいることに変わりはありませんし。
ganas
記事: 19
登録日時: 2006年3月04日(土) 00:39

#3 投稿記事 by ganas »

「未知の文字列が開放・・・」というエラーを解消するため、ZeroStringなしで、String型をすべてBytePtrで処理しました(callocなどは一切使用せず)。「未知の文字列」エラーは解消されたのですが、相変わらずこのコンパイラクラッシュは解決しませんでした。

しかしMakeStr内部でZeroStringが動いているとはおもいませんでした。
ありがとうございます。
返信する