Delphi V7 とXPの組合せでの暴走を避けるには

解決


クッキー  2004-03-31 06:39:06  No: 8089  IP: [192.*.*.*]

V7 をXp上で使っています。
エディターで、スペースが入力できなくなったり、SQL文が誤っていたりするとハングアップします。(SQL文が誤りですというメッセージが出ることもある)
EXEファイルでエラーが発生すると計算結果が誤ったり、入力できなくなります
Arrayの領域を超えているということはありません
Delphiの問題ですか
それともXPですか
これまではV5 と 2000の組合せでした

編集    削除
にしの  2004-03-31 10:01:04  No: 8090  IP: [192.*.*.*]

プログラムに問題があるのかと思います。
私もDelphi7Pro+XPですが、そういったケースはありません。
今までは偶々うまく動いたのかと。

編集    削除
クッキー  2004-03-31 17:01:08  No: 8091  IP: [192.*.*.*]

stringGridで
   DrawText(DataGrid.Canvas.Handle,
               PChar(DataGrid.Cells[ACol,ARow]),
               Length(DataGrid.Cells[ACol,ARow]),Rect,
               DT_CENTER or DT_VCENTER or DT_SINGLELINE);

を使っています
V7 では警告  安全でない型PChar  が出ます
これが要因のひとつでしょうか

編集    削除
にしの  2004-03-31 18:28:17  No: 8092  IP: [192.*.*.*]

DataGrid.Cells[ACol,ARow]の戻り値を、一度String型の変数に入れてから、その変数を使ってみてはどうでしょう。
Cellsは、文字列を返しますが、それをポインタにしたときに文字列を保持しているかどうかわからないですから。
Cellsの実体は、文字列の参照でなく、functionの戻り値ですので。

PCHARでキャストする場合は、確実に確保したString型に入れておくのが無難です。

編集    削除
クッキー  2004-04-01 06:16:27  No: 8093  IP: [192.*.*.*]

ありがとうございます

DataGrid.Cells[ACol,ARow]の戻り値を、一度String型の変数に入れてから使用してみます
エラーが発生しないと暴走しません。
Paradox テーブルについてエラーが発生するとDelphi 自体がアプリケーションエラーを起こしますが、エラーが発生しないように気をつけます

編集    削除