以前のインストールから新しいパス名を持つ新しいインストールにすべてのデータベースファイルをコピーしようとしています。問題は、インストーラーがデータベースファイルの名前を認識しないため、ワイルドカード文字を使用しようとしていることです。
TFileStream.Create()を使用しようとしましたが、これは「* .mdb」などの単一のファイルを検索していて、そのファイルが見つからないというエラーが表示され続けました。FileCopy()も使ってみましたが、失敗して先に進んでいるようです。コマンドラインから実行しようとしExec()
ましたが、インストールがフリーズするだけでした。
私は長い間オンラインで答えを探し、多くのドキュメントを読みました。ワイルドカード文字を使用して不明な名前のファイルをコピーする方法を知る必要があります。以下は私が試したことの例です。
TFileStream.Create()
OldDBs := 'C:\Users\seang\Desktop\Old\*.mdb';
NewDBs := 'C:\Users\seang\Desktop\New\*.mdb';
SourceDB:= TFileStream.Create(OldDBs, fmOpenRead);
DestDB:= TFileStream.Create(NewDBs, fmCreate);
DestDB.CopyFrom(SourceDB, SourceDB.Size);
SourceDB.Free;
DestDB.Free;
FileCopy()
FileCopy('C:\Users\seang\Desktop\Old\*.mdb', 'C:\Users\seang\Desktop\New\*.mdb', True);
コマンドライン
Exec('cmd.exe', 'COPY "C:\Users\seang\Desktop\Old\*.mdb" "C:\Users\seang\Desktop\New\*.mdb"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);