久々に。元気にしておりますm(_ _)m

また、単発的にC++Builderを使うことになったので、メモ。

OpenDialog1と、StringGrid1がある場合、Buttonが押された後、OpenDialog1で指定したCSVファイルをStringGrid1に読み込むためのソース

よく使うんだけど、いちいちggってたり、BCBTipsを見てたりしたので。

 

void __fastcall TForm2::Button1Click(TObject *Sender)
{

       if(OpenDialog1->Execute()== true)
       {
        // CSVデータ読込み
        TStrings *CsvFile = new TStringList();
        CsvFile->LoadFromFile( OpenDialog1->FileName );

        int CsvRowCount = CsvFile->Count;  // 行数
        for ( int i=0; i<CsvRowCount; i++ ){

            // 1行分のデータ読込み
            TStrings *CsvData = new TStringList();
            CsvData->CommaText = CsvFile->Strings[i];

            // 表示
            int CsvColCount = CsvData->Count;  // 列数
            for ( int ii=0; ii<CsvColCount; ii++ ){

                StringGrid1->Cells[ii][i] = CsvData->Strings[ii];

           }
        }
       }

}

久しぶりに使いはじめました>C++ Builder

少人数や個人でなら、使用は自由になってるんですね(@_@;

 

さて、最初にノートPCにインストールしてつまづいたところが一点。

コンパイルすると、Errorが出てきて”PlatformにBNBって設定してあるで”

と言われ、環境変数を見ると確かに・・・ PLATFORM = BNB になってました。

これをWin32に変えて、無事コンパイルは通るようになりました。

 

さて、今までいくつかの画像処理のプログラムを書いてましたが、

すっかり内容を忘れていたので、覚書を。。。

 

Formアプリケーションで、TImage, Button, OpenDialogを配置した状態で

BMPファイルを開いて、各ピクセルの色情報を取得するコードを記載しておきます。

Button1を押したときのコードです。

 

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Graphics::TBitmap *cg = new Graphics::TBitmap;

    if(OpenDialog1->Execute()==true)
    {
        Image1->Picture->LoadFromFile(OpenDialog1->FileName);
        cg->LoadFromFile(OpenDialog1->FileName);
    }

    //Image1のDataの取り込み
    width = cg -> Width;
    height = cg -> Height;
     // RData[j][i], GData[j][i], BData[j][i]
     for(int i=1;i<=height;i++)
     {
           for(int j=1;j<= width;j++)
           {
                TColor ReadColor = cg -> Canvas -> Pixels[j-1][i-1];
                RData[j-1][i-1] = StrToInt(AnsiString(GetRValue(ReadColor)));
                GData[j-1][i-1] = StrToInt(AnsiString(GetGValue(ReadColor)));
                BData[j-1][i-1] = StrToInt(AnsiString(GetBValue(ReadColor)));
           }
     }
     //ここまで

    ShowMessage("width="+IntToStr(width)+",height="+IntToStr(height));
    ShowMessage("R[1][1]="+IntToStr(RData[1][1])+",G[1][1]="+IntToStr(GData[1][1])+",B[1][1]="+IntToStr(BData[1][1]));

    delete cg;

}

 

あとはRData, GData, BDataを必要に応じていじって

 

たとえばモノクロ画像を作成するには

void __fastcall TForm1::test(void)

{

        long int MonoData;

        //モノクロ処理

        div_t R,G,B;

        // 計算 

        for(int i=1;i<=height;i++)

        {

           for(int j=1;j<= width;j++)

           {

              B=div(BData[j-1][i-1],10);

              G=div(GData[j-1][i-1],10);

              R=div(RData[j-1][i-1],10);

              long int yy=B.quot+6*R.quot+3*G.quot;

              if(yy>255)yy=255;

              if(yy< 0) yy=0;

              MonoData = yy*256*256 + yy*256 + yy;

              Image2 -> Canvas -> Pixels[j-1][i-1] = MonoData;

           }

        }

        ShowMessage("計算が終わりました!");

 

}

 

みたいな感じで(2つ目のコードではTImage2の実装必要)、

書いてやればいいですかね

 

 

突然の久々の更新ですが、

 

ちょっと仕事で使っていたアンドロイドのadbコマンドをメモ

設定画面で設定するものをadbコマンドで設定できるようにしてました。

 

(1) スクリーンのスリープを起動しないようにする

adb shell settings put system screen_off_timeout -1

 

(2)位置情報をOFFにする

adb shell settings put secure location_providers_allowed -gps

 

(3)提供不明のアプリのインストールを許可する

adb shell settings put secure install_non_market_apps 1

 

(4)ユーザー補助の画面の自動回転をOFFにする

adb shell settings put system accelerometer_rotation 0 

 

(5)画面の明るさを80%にする

adb shell settings put system screen_brightness 80