プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

VB6でOSに制御を戻す。

この記事は2018年10月23日に投稿しました。

目次

  1. はじめに
  2. DoEvents関数
  3. おわりに

Visual Basic 6.0 300の技

Visual Basic 6.0 300の技

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVB6のお話です。

目次へ

2. DoEvents関数

VB6でOSに制御を戻すには、DoEvents関数を呼び出します。

使い方としては、無限ループや大量ループ処理の処理の中断やハングアップ防止に使ったりします。

実装例

Private isStop As Boolean

'ステータス確認などのポーリング処理を行います。
Private Sub Command1_Click()
    isStop = False
    Do
        'ステータス確認などのポーリング処理
        
        DoEvents
    Loop Until Not isStop
End Sub

'ポーリング処理を停止します。
Private Sub Command2_Click()
    isStop = True
End Sub

目次へ

4. おわりに

業務でDoEvents関数を使用しているコードを見ましたが、最初は何のためにあるのかわかりませんでした。
調べていくうちにVB6でマルチスレッド処理ができないため、DoEvents関数で疑似的にスレッド処理を行っていることがわかりました。

全国各地で学べる【WEBCAMP ONLINE】

独習Visual Basic6.0

独習Visual Basic6.0

  • 作者: ジョンソチャ,デブラホール,ダンラウメル,佐藤立子,竹内里佳,John Socha,Devra Hall,Dan Rahmel,トップスタジオ
  • 出版社/メーカー: 翔泳社
  • 発売日: 1999/03
  • メディア: 単行本
  • クリック: 4回
  • この商品を含むブログを見る

目次へ

VB6でマウスポインタを砂時計にする。

この記事は2018年10月22日に投稿しました。

目次

  1. はじめに
  2. マウスポインタ設定
  3. おわりに

かんたんプログラミング Visual Basic 6 応用編

かんたんプログラミング Visual Basic 6 応用編

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVB6のお話です。

目次へ

2. マウスポインタ設定

VB6マウスポインタを砂時計表示するには、ScreenオブジェクトのMousePointerプロパティに、vbHourglass定数を設定します。

マウスポインタを規定値に戻すには、vbDefault定数を設定します。

以下にMousePointerプロパティに設定できる定数を一覧にまとめました。
(VB6のオブジェクトブラウザで表示されるMousePointerConstantsのメンバーをまとめました)

表示確認をしましたが、いくつか規定値のまま変更されない定数がありました。
おそらく環境によって表示されない定数があると思われます。

定数名 定数値 形状 備考
vbDefault 0 規定値
vbArrow 1 矢印 規定値のまま変更されない
vbCrosshair 2 クロス
vbIBeam 3 Iビーム
vbIconPointer 4 アイコン 規定値のまま変更されない
vbSizePointer 5 サイズ(上下左右の矢印)
vbSizeNESW 6 サイズ(右上-左下の矢印)
vbSizeNS 7 サイズ(上下の矢印)
vbSizeNWSE 8 サイズ(左上-右下の矢印)
vbSizeWE 9 サイズ(左右の矢印)
vbUpArrow 10 上矢印
vbHourglass 11 砂時計(待機)
vbNoDrop 12 ドロップ禁止
vbArrowHourglass 13 矢印と砂時計
vbArrowQuestion 14 矢印と疑問符
vbSizeAll 15 サイズ(すべて)
vbCustom 99 MouseIconプロパティで指定された、ユーザ定義のマウスポインタアイコン MouseIconプロパティを指定しない場合、規定値のまま

実装例

' マウスポインタを砂時計にします。
Screen.MousePointer = vbHourglass

'時間のかかる処理

' マウスポインタを規定値に戻します。
Screen.MousePointer = vbDefault

目次へ

4. おわりに

業務で元にしたコードではMousePointerプロパティに即値(11)を設定していため、最初何をしたいのかわかりませんでした。
こういった設定は用意された定数を使用してもらいたいです。

お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修【ポテパンキャンプ】

Visual Basic 6.0 300の技

Visual Basic 6.0 300の技

目次へ

VB6でディレクトリを削除する。

この記事は2018年10月21日に投稿しました。

目次

  1. はじめに
  2. ディレクトリ削除処理
  3. おわりに

決定版 Visual Basic6.0―アプリケーション開発とプログラミング

決定版 Visual Basic6.0―アプリケーション開発とプログラミング

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVB6のお話です。

目次へ

2. ディレクトリ削除処理

VB6ディレクトリを削除するには、FileSystemObjectDeleteFolderメソッドを使用します。

  • FileSystemObjectを使用する場合、参照設定に"Microsoft Scripting Runtime"を追加してください。

DeleteFolderメソッドの引数には、削除するディレクトリパス名を指定します。

  • ディレクトリ名のみ指定した場合、カレントディレクトリのサブディレクトリとして削除されます。
  • 相対パスも指定できます。
  • 削除するディレクトリ配下にサブディレクトリやファイルが含まれる場合、一緒に削除されます。
  • 存在しないディレクトリを指定した場合、エラーになります。
  • 削除するディレクトリ内に読み取り専用のファイルが含まれる場合、エラーになります。 その場合、第2引数に"True"を指定すると削除されます。

実装例

Dim fso As New FileSystemObject

'ディレクトリ内に読み取り専用のファイルが存在する場合、エラーになります。
Call fso.DeleteFolder("<ディレクトリパス名>")

'ディレクトリ内に読み取り専用のファイルが含まれる場合も削除します。
Call fso.DeleteFolder("<ディレクトリパス名>", True)

Set fso = Nothing

目次へ

4. おわりに

ディレクトリを作成するとき同様、存在しないディレクトリや読み取り専用ファイルが含まれる場合などエラーになるため、実際に使用する場合はチェックしてから呼び出した方が安全です。

今のシゴトに飽きちゃった...そんなあなたの見方です!【IT派遣テクノウェイブ】

かんたんプログラミングVisual Basic6 基礎編

かんたんプログラミングVisual Basic6 基礎編

目次へ

VB6でディレクトリを作成する。

この記事は2018年10月20日に投稿しました。

目次

  1. はじめに
  2. ディレクトリ作成処理
  3. おわりに

かんたんプログラミング Visual Basic 6 応用編

かんたんプログラミング Visual Basic 6 応用編

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVB6のお話です。

目次へ

2. ディレクトリ作成処理

VB6ディレクトリを作成するには、FileSystemObjectCreateFolderメソッドを使用します。

  • FileSystemObjectを使用する場合、参照設定に"Microsoft Scripting Runtime"を追加してください。

CreateFolderメソッドの引数には、作成するディレクトリパス名を指定します。

  • ディレクトリ名のみ指定した場合、カレントディレクトリのサブディレクトリとして作成されます。
  • 相対パスも指定できます。
  • すでに存在するディレクトリを指定した場合、エラーになります。
  • 途中のサブディレクトリが存在しない場合、エラーになります。 例) "C:\subdir\target"の場合、"C:\subdir"が存在しないとエラーになります。

実装例

Dim fso As New FileSystemObject

Call fso.CreateFolder("<ディレクトリパス名>")

Set fso = Nothing

目次へ

4. おわりに

存在するディレクトリの場合や途中のサブディレクトリがない場合はエラーになりますので、実際に使用する場合はチェックしてから呼び出した方が安全です。

お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修【ポテパンキャンプ】

Visual Basic 6.0 300の技

Visual Basic 6.0 300の技

目次へ

VB6でディレクトリが存在するかチェックする。

この記事は2018年10月19日に投稿しました。

目次

  1. はじめに
  2. ディレクトリ存在チェック
  3. おわりに

決定版 Visual Basic6.0―アプリケーション開発とプログラミング

決定版 Visual Basic6.0―アプリケーション開発とプログラミング

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVB6のお話です。

目次へ

2. ディレクトリ存在チェック

VB6ディレクトリが存在するかチェックするには、FileSystemObjectFolderExistsメソッドを使用します。

  • FileSystemObjectを使用する場合、参照設定に"Microsoft Scripting Runtime"を追加してください。

FolderExistsメソッドの引数には、チェックするディレクトリパス名を指定します。

チェックした結果は戻り値(Boolean)で判断します。

実装例

Dim fso As New FileSystemObject

If fso.FolderExists("<ディレクトリパス名>") Then
    'ディレクトリは存在します。
Else
    'ディレクトリは存在しません。
End If

Set fso = Nothing

目次へ

4. おわりに

メソッド名はFolderExistsですが、このブログでフォルダディレクトと呼んでいるため、説明はディレクトにしています。

今のシゴトに飽きちゃった...そんなあなたの見方です!【IT派遣テクノウェイブ】

かんたんプログラミングVisual Basic6 基礎編

かんたんプログラミングVisual Basic6 基礎編

目次へ

SwiftのBox APIでディレクトリをリネームする。

この記事は2018年10月18日に投稿しました。

目次

  1. はじめに
  2. 前提
  3. ディレクトリリネーム処理
  4. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回はSwiftのBox APIディレクトリをリネームする手順の紹介です。

目次へ

2. 前提

iOSアプリからBox APIにアクセスするため、Box iOS SDKライブラリを使用します。
以下の記事を参考に、Box APIを使用する準備をしておいてください。

paveway.hatenablog.com

目次へ

3. ディレクトリリネーム処理

SwiftのBox APIディレクトリをリネームするには、folderRenameRequestメソッドを使用します。
ファイルはこのメソッドでリネームできず、別のメソッドでリネームします。

以下がディレクトリをリネームする手順です。 この手順はドキュメントに記載がなかったため、調べながら実装しました。

  1. Boxのクライアントオブジェクトを取得します。
  2. クライアントオブジェクトのfolderRenameRequestメソッドで、ディレクトリリネームリクエストを生成します。
    folderRenameRequestメソッドの引数には、

    を指定します。

  3. ディレクトリリネームリクエストのperformメソッドを実行し、ディレクトリをリネームします。 リネームした結果はクロージャで返却されます。 ネットワークアクセスしますので、PWEditorではディレクトリリネーム中は、処理中ダイアログを表示しています。
  4. エラーがあれば、クロージャーの引数errorが設定されます。

実装例

import BOXContentSDK

/**
 ディレクトリをリネームします。
 
 - Parameter fileId: リネームするディレクトリのID
 - Parameter newName: 新しいディレクトリ名
 */
func renameDir(_ fileId: String, newName: String) {
    // 1. クライアントオブジェクトを取得します。
    guard let client = BoxContentClient.default() else {
        // クライアントオブジェ久我取得できない場合、処理を終了します。
        // 必要に応じてエラー処理を行ってください。
        return
    }
    
    // 2. ディレクトリリネームリクエストを取得します。
    guard let request = client.folderRenameRequest(withID: fileId, newName: newName) else {
        return
    }
    
    // 3. ディレクトリをリネームします。
    request.perform(completion: { (error: Error?) -> Void in
        // 4. エラーかチェックします。
        if let error = error {
            // エラーの場合、処理を終了します。
            // 必要に応じてエラー処理してください。
            return
        }

        // 以降正常終了した場合の処理を記述してください。
    })
}

目次へ

4. おわりに

ディレクトリのリネームする手順は、ファイルをリネームする手順とほとんど同じです。

今回でPWEditorで使用しているBox APIの紹介は終わります。
Box APIの他のAPIを使用する機会があれば、また紹介したいと思います。

エンジニアによるエンジニアのためのサイト始まる!!【teratail】

目次へ

SwiftのBox APIでファイルをリネームする。

この記事は2018年10月17日に投稿しました。

目次

  1. はじめに
  2. 前提
  3. ファイルリネーム処理
  4. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回はSwiftのBox APIでファイルをリネームする手順の紹介です。

目次へ

2. 前提

iOSアプリからBox APIにアクセスするため、Box iOS SDKライブラリを使用します。
以下の記事を参考に、Box APIを使用する準備をしておいてください。

paveway.hatenablog.com

目次へ

3. ファイルリネーム処理

SwiftのBox APIでファイルをリネームするには、fileRenameRequestメソッドを使用します。
ディレクトリはこのメソッドでリネームできず、別のメソッドでリネームします。

以下がファイルをリネームする手順です。 この手順はドキュメントに記載がなかったため、調べながら実装しました。

  1. Boxのクライアントオブジェクトを取得します。
  2. クライアントオブジェクトのfileRenameRequestメソッドで、ファイルリネームリクエストを生成します。
    fileRenameRequestメソッドの引数には、

    • リネームするファイルのID

    を指定します。

  3. ファイルリネームリクエストのperformメソッドを実行し、ファイルをリネームします。 リネームした結果はクロージャで返却されます。 ネットワークアクセスしますので、PWEditorではファイルリネーム中は、処理中ダイアログを表示しています。
  4. エラーがあれば、クロージャーの引数errorが設定されます。

実装例

import BOXContentSDK

/**
 ファイルをリネームします。
 
 - Parameter fileId: リネームするファイルのID
 - Parameter newName: 新しいファイル名
 */
func renameFile(_ fileId: String, newName: String) {
    // 1. クライアントオブジェクトを取得します。
    guard let client = BoxContentClient.default() else {
        // クライアントオブジェ久我取得できない場合、処理を終了します。
        // 必要に応じてエラー処理を行ってください。
        return
    }
    
    // 2. ファイルリネームリクエストを取得します。
    guard let request = client.fileRenameRequest(withID: fileId, newName: newName) else {
        return
    }
    
    // 3. ファイルをリネームします。
    request.perform(completion: { (error: Error?) -> Void in
        // 4. エラーかチェックします。
        if let error = error {
            // エラーの場合、処理を終了します。
            // 必要に応じてエラー処理してください。
            return
        }

        // 以降正常終了した場合の処理を記述してください。
    })
}

目次へ

4. おわりに

他のクラウドストレージのAPIでリネームのAPIはあまりないのですが、Box APIには用意されていました。
いろいろなクラウドストレージのAPIを使用してみましたが、Box APIが一番整理されていると思います。

未経験から最短でエンジニア転職を目指す

詳細! Swift iPhoneアプリ開発入門ノート iOS12 + Xcode 10対応

詳細! Swift iPhoneアプリ開発入門ノート iOS12 + Xcode 10対応

目次へ