■Delphi8 and .NET 1.1 SP1の問題
Borland Japanのサイトで
.NET Framework 1.1 Service Pack適用時の問題について
という情報がありました。(いつ更新されたのかな?)
対応版の案内等ではなく、内容は前に紹介したUSのサイトと同じものです。
| 固定リンク
Borland Japanのサイトで
.NET Framework 1.1 Service Pack適用時の問題について
という情報がありました。(いつ更新されたのかな?)
対応版の案内等ではなく、内容は前に紹介したUSのサイトと同じものです。
| 固定リンク
uses ExcelXP; { Excelファイルの指定されたシートをCSVに保存します。 } procedure TForm1.Button1Click(Sender: TObject); { セルの列名を数字からアルファベットに変換します。 } function GetAlfa(I: Integer): String; var J,K: Integer; S1,S2: String; begin Result := ''; J := I div 26; K := I mod 26; if (K = 0) then begin J := J - 1; K := K + 26; end; if (J = 0) then S1 := '' else S1 := Chr(J+64); S2 := Chr(K+64); Result := S1+ S2; end; const FileName = 'エクセルのファイル'; WorkSheetName = 'CSVで保存したいシート名'; CSVFile = 'CSVファイル名'; var LCID, ColumnCount, RowCount: Integer; ExcelApplication1: TExcelApplication; ExcelWorkBook1: TExcelWorkBook; ExcelWorkSheet1: TExcelWorkSheet; begin ExcelApplication1 := TExcelApplication.Create(nil); ExcelWorkBook1 := TExcelWorkBook.Create(nil); ExcelWorkSheet1 := TExcelWorkSheet.Create(nil); try LCID := GetUserDefaultLCID; ExcelApplication1.Connect; ExcelApplication1.Visible[LCID] := False; ExcelApplication1.DisplayAlerts[LCID] := False; { Excelファイルをオープンします。 } ExcelApplication1.Workbooks.Open( FileName, //FileName: WideString EmptyParam, //UpdateLinks: OleVariant EmptyParam, //ReadOnly: OleVariant EmptyParam, //Format: OleVariant EmptyParam, //Password: OleVariant EmptyParam, //WriteResPassword: OleVariant EmptyParam, //IgnoreReadOnlyRecommended: OleVariant EmptyParam, //Orign: OleVariant EmptyParam, //Delimiter: OleVariant EmptyParam, //Editable: OleVariant EmptyParam, //Notify: OleVariant EmptyParam, //Converter: OleVariant EmptyParam, //AddToMru: OleVariant EmptyParam, //Local EmptyParam, //CorruptLoad LCID //lcid: Integer; ); ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[WorkSheetName] as _Worksheet); { 使用されている列数を取得します。 } ColumnCount := ExcelWorksheet1.UsedRange[LCID].Columns.Count; { 使用されている行数を取得します。 } RowCount := ExcelWorksheet1.UsedRange[LCID].Rows.Count; { オートフィルタを解除します。 } if ExcelWorksheet1.AutoFilterMode[LCID] then ExcelWorksheet1.AutoFilterMode[LCID] := False; { セルに設定されている書式を消去します。 } ExcelWorksheet1.Range['A1',GetAlfa(ColumnCount)+IntToStr(RowCount)].ClearFormats; { 参考 - 書式を設定する場合 } //ExcelWorksheet1.Range['H2','H10'].NumberFormatLocal :='yyyy/m/d'; { CSV形式でファイルを名前を付けて保存させます。 } ExcelWorkbook1.SaveAs(CSVFile, //Filename xlCSV, //FileFormat EmptyParam, //Password EmptyParam, //WriteResPassword False, //ReadOnlyRecommended False, //CreateBackup xlNoChange, //AccessMode EmptyParam, //ConflictResolution EmptyParam, //AddToMru EmptyParam, //TextCodepage EmptyParam, //TextVisualLayout EmptyParam, //Local LCID); //LCID ExcelWorkbook1.Disconnect; //要らないかも? ExcelApplication1.Quit; ExcelApplication1.Disconnect; finally ExcelWorkSheet1.Free; ExcelWorkBook1.Free; ExcelApplication1.Free; end; end;
| 固定リンク
[Delphi7]
FTPサーバーのファイル名を取得する必要があったので、Indyを使ってプログラムしてみました。フォームにButton、Memo、IdFTP、IdAntiFreeze1を貼り付けます。
procedure TForm1.Button1Click(Sender: TObject); var SL: TStringList; I: Integer; S1, S2: String; begin IdFTP1.Host := 'ホスト'; IdFTP1.Username := 'ユーザー名'; IdFTP1.Password := 'パスワード'; IdFTP1.Connect; SL:= TStringList.Create; try IdFTP1.ChangeDir('フォルダ名'); IdFTP1.List(SL); for I := 0 to IdFTP1.DirectoryListing.Count -1 do begin S1 := IdFTP1.DirectoryListing.Items[I].FileName; //ファイル名 S2 := DateTimeToStr( IdFTP1.DirectoryListing.Items[I].ModifiedDate); //日付 Memo1.Lines.Add(S1+ #9 + S2); end; finally SL.Free; IdFTP1.Quit; end; end;
使っているIndyのバージョンは、9.00.10となっています。
| 固定リンク