喫茶XRAYトップページ

[スレッド全体
]

[4727] XEのバグでしょうか?返信 削除
2011/5/10 (火) 09:07:48 pal
久しぶりの投稿です。
FindFirstで悩んでいます。
OS:WIN7

テンポラリフォルダのファイルリストを取得するものですが
1.Delphi7=>正常動作
2.Delphi2010=>正常動作
3.DelphiXE=>
---------------------------
モジュール 'TEST.exe' のアドレス 004B3ED0 で
アドレス 00000394 に対する読み取り違反がおきました。
---------------------------
こうなります。

XEのバグでしょうか?
ご教授ください。

procedure TForm1.Button1Click(Sender: TObject);
var
    i: Integer;
    StrTempPath: Array[0..MAX_PATH] of Char;
    SearchRec: TSearchRec;
    ST: TStringList;
begin
    GetTempPath(SizeOf(StrTempPath),StrTempPath);
    ST := TStringList.Create;
    try
        i := FindFirst(StrTempPath+'*.LOG',faAnyFile,SearchRec);
        while i = 0 do begin
            ST.Add(SearchRec.Name);
            i := FindNext(SearchRec);
        end;
        SysUtils.FindClose(SearchRec);
        Memo1.Lines.Assign(ST);
    finally
        ST.Free;
    end;
end;


[4729] Re:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 11:22:50 Syake
▼ palさん
追記:
AddObjectsは2009とXEでは処理方法が異なるようです。
2010とXEはどうなのでしょうか?

[4730] Re2:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 14:08:07 pal
▼ Syakeさん
> ▼ palさん
> 追記:
> AddObjectsは2009とXEでは処理方法が異なるようです。
> 2010とXEはどうなのでしょうか?

ありがとうございます。
すみません、私には処理方法の違いを調べる力量がありません。

ちなみに下記のように変更するとうまくいきます。
//    GetTempPath(SizeOf(StrTempPath),StrTempPath);//------>Error
StrTempPath:='C:\Windows\';//---->OK

従って、GetTempPath関数の使い方がおかしいのでしょうか?


[4731] Re3:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:03:13 Mr.XRAY
こんにちは.

最初のコードをコピペして実行してみました.
エラーでません.
Windows 7 U64 + Delphi XE(UP1)

    GetTempPath(SizeOf(StrTempPath),StrTempPath);//------>Error

    GetTempPath(Length(StrTempPath),StrTempPath);

にしたらどうなるでしょう.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82