喫茶XRAYトップページ


[7246] 勝手な推測返信 削除
2014/2/22 (土) 14:32:36 Mr.XRAY
[excelからpasを行指定で開くには]
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201402/14020018.txt

これ,おそらく中国の方じゃないかと思うんですよね.
前にも同じ様なのが何回かあった記憶があります.
で,期待するレスがないとスパムのような書き込みが続くと... (^^;

いわゆる「丸投げ」な質問なんですが,
ネット上にある Tips 等はこういう形式ですよね.
このようなタイトルの後に具体的なコードが書いてあります.
そのようなレスを期待しているんじゃないでしょうか.

中国って,あのような掲示板ってないのかな.
でも,エンバカデロのコミュニティがあると思うのですが.

# 最近,中国の方からメールがこないなぁー,と思ってブログをみたら
# 全く更新されていませんね.Delphi というかプログラミングを止めたのかな


[7247] Re:勝手な推測返信 削除
2014/2/22 (土) 14:41:17 Mr.XRAY

[7248] Re:勝手な推測返信 削除
2014/2/23 (日) 13:43:24 Mr.XRAY
> [excelからpasを行指定で開くには]
> http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201402/14020018.txt


じぇ!? じぇじぇっじぇ !? 東京マラソンじゃなくて,
中国の方じゃなかったですね.てっきり,機械翻訳の文章と思いました.

>説明が少なくてすみません

説明が少ないのではなく,説明になっていませんね.

>あああ 2014/02/23(日) 12:21:00

こういうのはですね.
(1) [pas] と [行番号] という例があります.
(2) [pas] の列にはファイル名
    (不明,もしかしたら Delphi の pas ファイルのテキスト?)
(3) [行番号] には整数値が入っています

とか書かないと,考えてしまいますね.
自分自身を「初心者」としていますが,
おそらく他の「初心者」が読んでもすぐには意味が理解できないと思います.
で,実際にはどういうことをしたいのか,私には理解できません.
秀丸では,と書いてあるので,そういうことなのでしょう(分かっていない ?)

# こうやって,他の人の文章,書き込みを読むことによって
# 自分自身が書くときの参考にすることは,大切だと思うのですよ.

ん? じゃぁ,秀丸で開けばいいのでは?
何か勘違いしている?
Delphi で開くって,どういうこと?
DEKO さんが解釈しているように,IDE で開くということ?
何のために? 何がしたいのだろう?
また,そうだとしたら,なんで Excel のセルにそんな情報を?
 
ともかく,分からん!!


[7255] Re2:勝手な推測返信 削除
2014/2/24 (月) 10:45:20 DEKO
> 何のために? 何がしたいのだろう?
> また,そうだとしたら,なんで Excel のセルにそんな情報を?


そのような疑問が頭を駆け巡ってですね…(^^;A

個人的には、Excel でソースコード内の処理内容を記述して管理しようとは思いませんし、
その行位置にジャンプさせようとも思いません。

秀丸で開けるのなら秀丸でいいハズですし、
わざわざ IDE で開かなくてはならない理由が解りません。
だって、ソースコードを編集したら行位置がズレるんですから。

最終的に出来上がったソースコードに対してならちょっとは解りますが、
それだって今後一切触らない事が前提ですからね。

関数名とかと説明だけを記述して、Ctrl+F で関数名へジャンプすれば
いいだけのような気がしないでもありません。

或いは素直にコメント書いて…

{* NOTE: UNIT uHoge.pas          *}
{* NOTE: function hoge: Integer; *}
{* NOTE: hoge の値を返す         *}
function hoge: Integer;
begin
  ...
end;

Ctrl+F あるいは Ctrl+Shift+F で "{* NOTE:" を検索すれば

検索:'{* note:'
  C:\Projects\Unit1.pas [3]
    C:Projects\Unit1.pas(40): {* NOTE: UNIT uHoge.pas          *}
    C:Projects\Unit1.pas(41): {* NOTE: function hoge: Integer; *}
    C:Projects\Unit1.pas(42): {* NOTE: hoge の値を返す         *}

こんなリストが取れると思うのですが (保存もできるし)。

> プログラムの調査で

とありますから、
・自分が書いたコードではなく
・コードを書き換えてはいけない
という前提条件があるのでしょうかね?でもそういった事例はレアケースな気がします。

# 閲覧だけならそれこそ IDE と秀丸を同時に開けばいいような気もしますし…うーむ。

[7256] Re3:勝手な推測返信 削除
2014/2/24 (月) 11:30:12 Mr.XRAY
▼ DEKOさん

> だって、ソースコードを編集したら行位置がズレるんですから。

で,ソースコードを IDE のコードエディタで開いて,
その行を...
どうするんでしょうね.
そのソースコードを使用しているプロジェクトとの関連は?
エディタで開くだけでいいような...

ともかく,分かりせん.


[7253] テスト用の新規プロジェクトは...返信 削除
2014/2/23 (日) 23:58:23 Mr.XRAY
># こうやって,他の人の文章,書き込みを読むことによって
># 自分自身が書くときの参考にすることは,大切だと思うのですよ.


というわけで,話のついでに.

[TImageを8bit BMPで保存したい]
http://www.freeml.com/delphi-users/3631/latest

によると,複数のビットマップ画像をディスクから読み込んで,TImage に表示し,
その TImage に表示している画像を,別のビットマップとして保存する.
というのがあります.
この時,画像の色数,つまりビット深さを 8 ビットにしたいということ.
と解釈しました.

で,私目がよく言う,「テスト用の新規プロジェクト」はどうなるかと言いますと.

(1) 複数のビットマップを描画したから 8 ビットで保存できないのか
(2) 1 つの画像を TImage に表示した場合ではならないのか

と,いろいろ考えるわけです.
単純なのは,当然 1 つだけの場合です.
で,以下がテストコードです,グローバル変数は使用していません.
ボタンクリックごとに独立しています.

結果は,保存した画像ファイルの色数(ビット数) は 32 ビットとなります.
ですから,8 ビットにしたければ,まず,このテストコードでやっていくことになります.

動作確認環境は Windows 7 U64(SP1) + Delphi XE Pro です.

//-----------------------------------------------------------------------------
//  ディスクから画像ファイルを読み込んでTImageに描画
//  画像ファイルのビット深さは8ビット
//-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  TmpBMP: TBitmap;
begin
  TmpBMP := TBitmap.Create;
  try
    TmpBMP.LoadFromFile('503-256.bmp');
    Image1.Canvas.StretchDraw(Rect(0, 0, 250, 250), TmpBMP);
  finally
    FreeAndNil(TmpBMP);
  end;
end;

//-----------------------------------------------------------------------------
//  TImageに表示している画像をビットマップとして保存
//  保存後は色数が32ビットの画像となる
//-----------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
  Image1.Picture.SaveToFile('AAA.bmp');
end;

「コードを絞り込む」
「その問題となっている機能だけをテストするプロジェクトを作成する」
の例として.

えっ? 何ですか ? じゃぁ,どうやるのかって?
ちょっと前のスレッドに,参考となる内容があるじゃありませんか?
えっ? どうしても知りたい ?


[7254] Re:テスト用の新規プロジェクトは...返信 削除
2014/2/24 (月) 00:11:45 Mr.XRAY
> えっ? どうしても知りたい ?

しょうがないなーって,誰も教えてくれとは言ってませんが.
例えばこんなのはどうでしょう.
動作確認は,前と同じ.
えっ? さっきの書き込み書いてから考えていたんだろうって,
ほっといてください!!

ただし,このコードが,Delphi ML で質問された方の参考になるかは
分かりません.私が勝手に内容を解釈しているたげですので.

//-----------------------------------------------------------------------------
//  TImageに表示している画像をビットマップとして保存
//  保存した画像は色数が8ビットの画像となる
//-----------------------------------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
var
  TmpBMP : TBitMap;
begin
  TmpBMP := TBitMap.Create;
  try
    TmpBMP.PixelFormat := pf8bit;
    TmpBMP.SetSize(Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height);
    TmpBMP.Canvas.Draw(0, 0, Image1.Picture.Bitmap);

    TmpBMP.SaveToFile('AAA.bmp');
  finally
    TmpBMP.Free;
  end;
end;

TBitmap は特に指定しないかぎり,ビット深さは 32 ビットとなります.
そこで,上のコードの try の中では,

(1) 生成したビットマップのビット深さを PixelFormat で 8 ビットとする
(2) そのビットマップのサイズを TImage のビットマップと同じにする
(3) そのビットマップの Canvas に何かを描く.ここでは別のビットマップを描画
    別のビットマップとは,TImage に描画されているビットマップ
(4) ビットマップを保存する

という手順になっています.
元の,生成したビットマップを 8 ビットとしています.したがって,何を描画
しても,8 ビットのビットマップは,8 ビットのビットマップのままです.
ということを利用した方法です.


[7266] ビットマップの色数を変更.返信 削除
2014/2/24 (月) 23:23:06 Mr.XRAY
忘れない内にサンプル作成してみました.

[03_ビットマップ画像のビット深さ ( 色数 ) の変更]
http://mrxray.on.coocan.jp/Delphi/plSamples/910_DisableBitmap.htm#03


[7267] Re:ビットマップの色数を変更.返信 削除
2014/2/27 (木) 08:16:07 Mr.XRAY
> http://mrxray.on.coocan.jp/Delphi/plSamples/910_DisableBitmap.htm

以下のサンプルを追加して,記事を変更しました.

[04_TNkDIB を使用したビットマップ画像の減色]
[05_TGIFImage を使用したビットマップ画像の減色]
[06_ビットマップ画像のグレイスケール化 ]


INCM/CMT
Cyclamen v3.82