2012年09月28日

Windows7 ゼロ除算

Windows7 64ビット版で、なぜか、Delphi7で作ったアプリで、Try...Exception.. で、Zero Divideが検出されない。

(追記)
32ビット版もおんなじだった。。。。。(ーー;)...more
posted by しんくそふと at 13:51| Comment(0) | TrackBack(0) | エラー対応覚え

2013年04月06日

QuickReportエラー


プロジェクト ******.exe は例外クラス EReadError (メッセージ 'プロパティ Continuous は存在しません')を送出しました。

開発時、QuickReport Ver5を使用。コンパイル時、QuickReport Ver4のオブジェクトをリンクしてしまった時に発生。
ライブラリパスを確認
posted by しんくそふと at 16:50| Comment(0) | TrackBack(0) | エラー対応覚え

2014年05月19日

PrinterIndex := -1 時のバグ(Delphi XE6)


”通常使うプリンタ”にプリンタ設定する際使用する、
PrinterIndex := -1
についてエラーが出る不具合対応。
DelphiXE5までは、問題なし。

何でこんなバグがまぎれんねんという話はおいといて、対策。
http://qc.embarcadero.com/wc/qcmain.aspx?d=124532

Vcl.Printers.pas
---------------------------------------------------------------------------
procedure TPrinter.SetPrinterIndex(Value: Integer);
var
  lDevice, lDriver, lPort : Array[0..255] of Char;
  lDeviceMode : THandle;
begin
  CheckPrinting(False);
  if (Value < -1) or (Value >= Printers.Count) then
    RaiseError(SPrinterIndexError);
  if (Value = -1) or (PrinterIndex = -1)  then //<-- この行条件変更
    SetToDefaultPrinter;
  if Value <> FPrinterIndex then
  begin
    if Value <> -1 then                  //<-- この行追加
      FPrinterIndex := Value;
    with TPrinterDevice(Printers.Objects[FPrinterIndex]) do
{$IF DEFINED (CLR)}
      SetPrinter(Device, Driver, Port, 0);
{$ELSE}
      Printer.GetPrinter(lDevice, lDriver, lPort, lDeviceMode);
    GlobalUnlock(lDeviceMode);
    GlobalFree(lDeviceMode);
    lDeviceMode := 0;
    Printer.SetPrinter(lDevice, lDriver, lPort, lDeviceMode);
{$ENDIF}
    FreeFonts;
    SetState(TPrinterState.psNoHandle);
  end;
end;
---------------------------------------------------------------------------
ということらしい。
とりあえず試したらうまく行った。...more
posted by しんくそふと at 20:25| Comment(0) | TrackBack(0) | エラー対応覚え

2015年10月03日

PostgreSQL 漢字テーブル名のアクセス(FireDAC)

PostgreSQLで、漢字で、テーブルを作成。
TFDQuery, TFDTableでアクセスしたところ、
-----------------------------------------------------
 符号化方式"UTF8"で無効なバイトシーケンスです
-----------------------------------------------------
のエラーが発生。

調べると、フィールド名で漢字は問題ないが、テーブル名の漢字が駄目っぽい。
いろいろ試したがわからないので、エンバカ サポートに確認。

TFDConnectionのExtendedMetadataをTrueにすることで、TFDQueryについては、エラーが発生しなくなった。



--補足情報--
Embarcadero Delphi 10 Seattle
 バージョン: 23.0.20618.2753
PostgreSQL 9.4.4
 データベースの文字コードは、UTF-8で作成
posted by しんくそふと at 10:55| Comment(0) | TrackBack(0) | エラー対応覚え

2016年05月18日

Delphiマイグレーション記録 TDBGridバグ

Delphiの古いバージョンから、S-JIS最終版Delphi2007へのマイグレーションで、TDBGridのバグに遭遇。
Delphi2007(December 2007 Update)

データセットが編集中に、データが表示されていない部分をマウスクリックすると、データが不正に変更されるという現象が発生することがあるようです。

対策
DBGrid.pas
---------------
3471行あたりの
TCustomDBGrid.MouseDown();
メソッド中の
------------------------------------------------------------
  Cell := MouseCoord(X, Y);          <=3492行あたりです
  if (Cell.X < 0) and (Cell.Y < 0) then
  begin
    if (FDataLink <> nil) and (FDataLink.Editing) then
//      UpdateData;                                         Del ThinkSoft
      FDataLink.UpdateData;                               //Add ThinkSoft
    inherited MouseDown(Button, Shift, X, Y);
    Exit;
  end;
------------------------------------------------------------


#追記
このバグは、直接グリッド内でデータ編集を行う際にはほぼ遭遇しないと思われます。
同一データセットの内容をDBグリッドに表示させながら、グリッド外で、DBEditのなどのData Controls系のコンポーネントで編集を行うケースで発生します。

posted by しんくそふと at 15:37| Comment(0) | TrackBack(0) | エラー対応覚え