2012-02-24 6 views

答えて

12

fsが初期化されていないため、コードに例外が発生します。

uses SysUtis, Windows; 

    procedure TForm1.Button1Click(Sender: TObject); 
    var fs: TFormatSettings; 
    begin 
    GetLocaleFormatSettings(GetSystemDefaultLCID, fs); // what is your short-date format? 
    strtodate('2011-01-01', fs); 
    end; 
+0

今はかなりダムになっていますが、そのレコードタイプがアクセス違反につながるとは考えていません – JustMe

+3

ローカル変数はまったく初期化されていません。それらにはランダムなデータが含まれており、無効なデータを使用するとAVが発生します。 – DiGi

+3

ローカルの 'string'変数は初期化され、Digiと' TFormatSettings'はその型のフィールドを含みます。それらは初期化されます。 Delphi 2005やその他のバージョンでは、 'StrToDate'は' ScanState'を呼び出す 'TryStrToDate'を呼び出し、' ScanDate'は '1'がその文字列の有効なインデックスであるかどうかチェックせずに' FormatSettings.ShortDateFormat [1] 'を読み込みます。レンジ・チェックを有効にしてRTLをコンパイルした場合、エラーは異なって見えます。 –

関連する問題