[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/27 14:57 / Filesize : 277 KB / Number-of Response : 972
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれDelphi(超初心者用)その51



1 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:41:37 ]
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その50
pc12.2ch.net/test/read.cgi/tech/1246340765/

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

552 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 16:41:28 ]
www1.axfc.net/uploader/Sc/
のコメントDelのSc_100990.zipでアップロードしておきました。5秒で再現できるんですが。
上記の操作を繰り返すとボタンの位置がずれていきます。


553 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 18:38:24 ]
2k+D6Per発生せず。
手順は>>542の通りやった。

554 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 19:23:08 ]
xp(sp3)+d7ent(sp1)だけど発生しなかった。

HDDを交換でXPをクリーンインストールしたいんだけど
D7のライブラリパスとかを一発で元に戻す事ってできる?

555 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 20:24:04 ]
>>553
んー。発生しませんか。お手数おかけました。ありがとうございます。
しばらくもうちょっと調べてみます。


556 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:17:01 ]
>554
該当レジストリを持っていくっていう手もあると思うが>設定の引っ越し。

557 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:55:14 ]
xp sp3+turbo delphiで発生しますた

558 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 10:51:28 ]
発生してた奴はOSとDのバージョンだけじゃなくて
ウィンドウ周りに関する環境設定情報を全部書き出せ

559 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 10:55:20 ]
そんな書き方じゃまともな情報は上がってこないぞ

560 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 17:14:14 ]
今のところ再現画像、再現動画等なし



561 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 19:32:37 ]
オレのところでも発生したわ。
557と同じXPSP3+Turboだけど。

bsSingleとかで検索したら、似て非なる事例が何個か出てくる。

562 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 11:22:49 ]
自演、乙。
オッチャ盛況だよ。

563 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 16:00:49 ]
何個かしかないなら挙げればいいのに、しないのは何故なんだろうね

564 名前:561 mailto:sage [2010/04/09(金) 16:55:56 ]
Win98+Del6Per(XPSP3上のVirtual PC 2007)では発生しなかったわ。
アンカーの両側がオンだと、繰り返すたびにボタンが縮んでいくのが笑える。

まあ確かに、くだすれの話題ではないか。

565 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 13:25:46 ]
Del7のVCLに直接手を入れて使ってる人いる?
VCLってリコンパイルできるのかな。

566 名前:191 mailto:sage [2010/04/11(日) 14:21:39 ]
超初心者スレなのにみんなレベル高すぎでついていけませんT_T

567 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 14:39:48 ]
途中で書き込んじゃった。
最近のバージョンって書籍でリファレンスって出てないんでしょうか。
自分としては首っ引きでページ捲り捲り勉強する方がしっくり来るのですが…
昔はパッケージにちゃんと含まれてたんですよね?

568 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 15:30:19 ]
>>565
できる
>>566-567
印刷

569 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 20:14:09 ]
コミュニケーションのとれないおっさんだなw

570 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 00:41:45 ]
おっさんきもい



571 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 13:10:21 ]
おっさんかっこいい

572 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 14:25:42 ]
あっちゃんかっこいい

573 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 11:51:03 ]
>>569

574 名前:554 mailto:sage [2010/04/13(火) 22:35:55 ]
ライブラリパスって普通にテキストでコピーしとけば良かったのね。

575 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 12:56:06 ]
Javascriptはやたら柔軟です。

ブックマークレットの例
Javascript:for(var I=0;I<3;++I){alert(['One!','Two!!','Three!!!'][I]);};

Delphi言語では上記の ['One!','Two!!','Three!!!'][I] みたいなお手軽な書き方はないでしょうか?
オープン配列コンストラクタというのが近いかなと思ったんですが、違ったようです。

576 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:10:11 ]
function getarr(arr: array of string): TStringDynArray;
var
i: Integer;
begin
setlength(result, length(arr));
for i := 0 to high(arr) do Result[i] := arr[i];
end;

getarr(['a', 'b', 'c'])[0]というのはできなくもないけど
今の処理系では手軽表記はないと思う。

いつの日か'one'[2]と同様 ['One!','Two!!','Three!!!'][I] が通るようになるかもしれないけどな。

577 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:29:46 ]
Cだと通るよね

578 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:44:23 ]
>>575
ttp://d.hatena.ne.jp/tales/20091020
ttp://d.hatena.ne.jp/tales/20100319
この辺を応用すると一応書ける

uses .., Types;

var
 s: string;
 i: Integer;
begin
 for s in TStringDynArray.Create('One!','Two!!','Three!!!') do
  ShowMessage(s);
 for i := 0 to 2 do
  ShowMessage(TStringDynArray.Create('One!','Two!!','Three!!!')[i]);
end;

579 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 12:32:54 ]
教えてください。D6パーソナル使用です。
EXE自身のアイコンをTImageに表示しています。
アイコンの透過色が透明になってくれるのは良いのですが、白色まで透明になってしまいます。
何がいけないのでしょうか。それとも全部間違っているのでしょうか。
プロジェクトのオプションに設定しているicoファイルはこんな感じです。
www1.axfc.net/uploader/File/so/42162

var
Icon:TIcon;
begin
Icon:=TIcon.Create;
Icon.Handle:=Application.Icon.Handle;
if Icon.Handle<>0 then
Image1.Canvas.Draw(0,0,Icon);
Icon.Free;
end;

580 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 13:46:07 ]
transparent



581 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 15:39:26 ]
Transparentが関わってそうなことは想像できるのですが、2色が透過してしまうという上記例の場合
どのようにすれば良いのか分かりませんでした。もしよろしければご教示下さい。

結局ですが自己解決しました。以下のように修正。
Image1.Canvas.Draw(0,0,Icon); → Image1.Picture.Icon:=Icon;
やり方が根本的に間違っていたということでした。
しかし、こんな方法↓でもOkでした。
Image1.Picture.Icon.Handle:=Icon.Handle;
Image1.Picture.Icon.Assign(Icon);
一体どれが正しいのか??

さらに、Handleってなんなんだ?と思ったので調べると、32bit整数だと。ならば、
var
Icon:Integer;
begin
Icon:=Application.Icon.Handle;
if Icon<>0 then
Image1.Picture.Icon.Handle:=Icon;
end;
と、やってみたら大丈夫でした。
こんなコードでいいんでしょうか???

582 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 00:36:03 ]
ListBox.Items.Selectedが画面外の時、
その項目が表示されるようにスクロールするやり方教えてください

583 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 04:35:59 ]
はい

584 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 06:47:12 ]
>>582 TopIndex

585 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 06:51:43 ]
>>581
Image1.Picture.Assign(Application.Icon);
これだけでいいと思う。(D6パーは持ってない

586 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 16:59:50 ]
>>582
MakeVisible

587 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:10:54 ]
キャプチャーを作ってみたんだけど、ウィンドハンドルからデバイスコンテキストを
取得して指定の画面のキャプチャーを取ってるつもりなんだけど、わざと取りたい画面の上に
別のウィンド置いとくとその別のウィンドもキャプチャーされるんだけどそんなもの?


588 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 00:14:15 ]
XP以降なら個別にとれる
詳細はググれ

589 名前:587 mailto:sage [2010/04/19(月) 02:37:57 ]
ググったらで来た。
ありがとう

590 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 07:57:21 ]
>>589
興味有るから、やり方教えて



591 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 09:51:25 ]
printwindowを使うんだって。
使い方はググった方が早い。
簡単だよ。

592 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 14:00:11 ]
>>585
D6パーソナルでもOkでした。正解はスッキリ簡単でしたね。
リソースからアイコン削除してApplication.Iconが無い状態(有り得ないけど)にしても
表示されないだけでエラー無し。
教えてもらってから理解したけど、IDEでImage1.Pictureに画像をセットするのとほぼ同じ動作ということですね。
ありがとうございました。

593 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:55:06 ]
>>591
ありがとう!
がんばってみる

594 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 23:58:23 ]
IDEのエディタマクロ書きたいんだけどそういう情報ってどこにあるの?

595 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 17:46:07 ]
RichEditにDephiのソースコードを着色した状態で表示する
サンプルなりコンポなりがあったら教えてください。

596 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 19:50:22 ]
TParser使え

597 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 22:45:23 ]
RichEditの使い方が分かりません。
単純に任意の色で文字を書いて、改行を付加する/しない が選べるようにしたいだけ
なのですが、どのようにしたら良いのか分かりません。
こんなイメージで使えるprocedureを作りたいです。
const
CRLF=#$0D#$0A;

RichWrite('エン', clBlue);
RichWrite('バカ', clRed);
RichWrite('デロ', clYellow);
RichWrite('☆', clGreen);
RichWrite('Delphi'+CRLF, clBlack);
RichWrite('Hello'+CRLF, clAqua);

RichEdit1に書かれる結果:
エンバカデロ☆Delphi // 青色赤色黄色緑黒色
Hello // 水色

これを実現するための材料だけでも良いので教えてください。よろしくお願いします。
一応ですが、私は>>595とは無関係です。

598 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:01:57 ]
SelAttribute(ただし遅い)

599 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:34:48 ]
>>598 ありがとうございます。
SelAttributesはヘルプによると、
>テキストを新規に挿入するときには,SelAttributes のフォント属性が適用されます。
とのことなので良さそうなのですが、改行無しで文字列を追加したい場合はどのように
すれば良いのでしょうか?

600 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:36:49 ]
seltext



601 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:06:58 ]
>>600 うーん分からないです。
SelTextプロパティを使ったサンプルをいただけないでしょうか。

602 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:10:21 ]
つ ttp://www.google.co.jp/search?hl=ja&q=delphi+seltext+SelAttributes

603 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 00:50:57 ]
ああっ、分かりました!
SelStart := GetTextLen;
SelText := 'ABC';
ですね!
「Delphi SelText SelAttributes」でググると一番最初に出てくる
delphi.about.com/od/delphitips2008/qt/format_richedit.htm
の記事が分かりやすいです。
今までさんざん探してたんですが、こういう単純で基本的な内容のサンプルは初めて見ました。
ようするに、
with RichEdit1 do
begin
SelStart := GetTextLen;
SelAttributes.Color := clBlue;
SelText := 'エンバカデロ';
SelAttributes.Color := clBlack;
SelText := 'Delphi'+CRLF;
end;
みたいな感じにすればOkですね。これをprocedureにしてみます。
ありがとうございました。

604 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 08:53:22 ]
グループボックスのCaptionがCheckBoxになっているコンポーネントってないでしょうか?

605 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 09:06:16 ]
グループボックスのキャプションをなしにして、キャプションの位置にチェックボックスを置けば?

606 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 16:29:52 ]
>>604
ググって一発で出てきたんだけど
ttp://www.delphidabbler.com/tips/112

607 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 20:18:13 ]


608 名前:604 mailto:sage [2010/04/27(火) 23:56:33 ]
>>605,606
トンです。
でけました。

609 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:17:35 ]
del標準の関数でbitmapをjpegに変換すると、低圧縮でも汚いのできれいに変換できるコンポとかってないですか?


610 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 08:23:04 ]
ないです



611 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:29:03 ]
>>609
JPEGが何なのか調べてくるといいですよ^^

612 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 15:08:57 ]
正しいことが何なのか、この胸にわかるまで〜

613 名前:609 mailto:sage [2010/05/03(月) 23:15:23 ]
Jpegへ綺麗に変換できるコンポがあって説明を読むと、
delphiのはサンプリングが4:1:1だから汚いと書いてありました。
del7proなんですが、このサンプリングレートを変えることは出来ませんか?

614 名前:デフォルトの名無しさん [2010/05/04(火) 00:40:48 ]
c言語の
float range_0[] = { 0, 256 };
float* ranges[] = { range_0 };

をDelphiで書き換えたいのですが
var
range_0: array[0..1] of Float = (0, 255);
ranges: array[0..0] of PFloat;
begin
  ranges[0] := @range_0;
・・・・・・
end;
でいいのでしょうか?

Floatは
type
Float = Single;
PFloat = ^Float;
で作ってあります。

どなたかわかる方おられましたらよろしくお願いします。

615 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 03:06:22 ]
なんで数字まで変わっちゃうんでしょうか

616 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 03:41:13 ]
>>613
jpeglib.hのjpeg_component_infoをjpeg.pasに定義してcomp_infoを^jpeg_component_infoにして
TJPEGImage.Compressで
for i:= 0 to 2 do begin
jc.c.comp_info[i].h_samp_factor:=1;
jc.c.comp_info[i].v_samp_factor:=1;
end;
とかすればイケるのかな

つーか、そのコンポとやらを使えば良いんじゃないかな
酔ってるし寝るのであとは知らん

617 名前:614 mailto:sage [2010/05/04(火) 08:24:11 ]
>>615
レスありがとうございます。
数字は素で間違えました;

618 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 08:37:43 ]
Cうろ覚えだけど愚直に移すならこんな感じか。

type
Float = Single;
PFLoat = ^Single;
TFloatArray = array [0..High(Integer) div SizeOf(FLoat)-1] of Float;
PFloatArray = ^TFloatArray;

var
range_0: array [0..1] of Float = (0,255);
ranges: array[0..0] of PFloatArray = (@range_0);

ranges[0][0] ==> 0
ranges[0][1] ==> 255


619 名前:614 mailto:sage [2010/05/04(火) 15:27:34 ]
>>618
こういった書き方は、初めて知りました。
とても勉強になりました。ありがとうございます。

620 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:59:28 ]
>>618
そこまでこだわるならHigh(Integer)じゃなくて(High(Integer)+1)じゃね?
もしくはせっかく定数が用意されてるんだからMaxInt+1でもいいかと



621 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 14:11:06 ]
ranges: array [0..255] of Single; とどう違うかさっぱりワカンネ

622 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 23:27:13 ]
何で1足すんだよ

623 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 01:25:46 ]
>>621
どう違うかどころか全然違うよw
実際に計算してみたら?
>>622
High(Integer) div SizeOf(Float)じゃなくてHigh(Integer) / SizeOf(Float)を計算すれば分かる

624 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 01:55:41 ]
相変わらずどうでもいい頑張り方だな

625 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 04:02:03 ]
そのどうでもいいレスよりマシじゃない?

626 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 10:01:09 ]
WindowsXP SP3
DELPHI7
SQLSERVER2000
BDE

画像ファイル(JPG)を読み込み
SQLServerの画像項目(IMAGE型)に格納したいんですが


AFileName:='IMAGE.jpg';
jp :=TJPEGImage.Create;
jp.LoadFromFile(AFileName);

BDEの画像項目.Assign(jp);

上記を実行すると
「〜型が一致しません。VarBytesに対してBlobが渡されました」とエラーが出てしまいます。

blobからVarBytesに変換する処理が必要なのかと思い調べたのですがよくわかりませんでした。

ADOを使用した場合はネットから引用したソースでうまく動いたのですが、
該当システムはBDEで統一させたいので質問させていただきました。
宜しくお願い致します。

627 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 11:37:45 ]
BDE からの接続形態は?
ODBC ? SQL-Link ?

628 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 12:08:57 ]
>>627 ODBCです

629 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 17:07:02 ]
a-zから10桁の文字列生成をしてみようと思って
'', 'a'..'z'の配列から文字列を取り出してつなげていくプログラムを組んでみたのですが、
forを10重にしたコード書いたけど
ぐぐってみたらX種類の文字のN重ループは
for i := 0 to Power(X, N)-1 do begin
 for j := 0 to N-1 do begin
で代用出来ると書かれていたのですが、
文字列の取り出し方がわかりません。
str := mojiretsu[Trunc(i / j) mod High(mojiretsu)] + str;
としてみたらなんとなくそれっぽい感じだったんだけど文字列がループしてしまいました。

mojiretsuにアクセスする式はどうかけばいいのでしょうか?

630 名前:629 mailto:sage [2010/05/09(日) 17:07:43 ]
コードはこんな感じにしてみました
uses
SysUtils, Math, Windows;

const
StrLenMax = 27;
keta = 10;
var
i : LongWord;
j, k : Integer;
str : String;
mojiretsu : array[0..StrLenMax-1] of string;
begin
{ TODO -oUser -cConsole Main : ここにプログラムコードを書いてください }
mojiretsu[0] := '';
for k := Low(mojiretsu) + 1 to High(mojiretsu) do begin
mojiretsu[k] := Chr(97+k-1);
end;

for i := 0 to Trunc(Power(High(mojiretsu), keta))-1 do begin
str := '';
for j := 0 to keta-1 do begin
str := mojiretsu[Trunc(i / j) mod High(mojiretsu)] + str;
end;
Writeln(str);
Sleep(100);
end;
end.




631 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 01:55:29 ]
なんで乱数を使わないのかと小一時間

632 名前:629 mailto:sage [2010/05/10(月) 04:10:41 ]
>>631
期待している動作としては
a, b, c, d ... z, aa, ab, ac .. az, ba, bb
みたいな感じで指定した桁数の文字列を生成したいです。

633 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 05:36:27 ]
テストとか学校の課題?

>ぐぐってみたらX種類の文字のN重ループは
>for i := 0 to Power(X, N)-1 do begin
> for j := 0 to N-1 do begin
>で代用出来ると書かれていたのですが

元 URL を出していただけるか、元 URL のところに相談を持ち込んだほうがよいかも。

このアルゴリズム断片は、整数を26進数表記で処理するアイデアです。
i が対象となる全整数、j が 26進数変換の変換対象桁数。
i が 32 なら、
32 / 26 -> 1 余り 6 -> 'g'
1 / 26 -> 0 余り 1 -> 'b'
文字列として 'bg' を得る。
となります。

アルゴリズムとしては簡単なほうですが、
* 全組み合わせを整数から生成しているけど 26進数10桁だと 16進で 806406972400 で
32bit に収まらないから int64 にしないと。
* 0-9 が 10進で、a-z で 26進。'a' が 0 を意味するので、このアルゴリズムを単純実装
したときは aaaaaaaaaa から zzzzzzzzzz が生成されます。頭の a を消去(ゼロサプレス)
しても a,b ... y ときて z の次は aa ではなく ba です。
* おそらく、遅い。


634 名前:629 mailto:sage [2010/05/10(月) 05:58:41 ]
>>633
いえ、ブルートフォースもどきなプログラムを作ろうと思ってまずは文字列生成部分を作ってみようとしました。
参考URLはdobon.net/vb/bbs/log3-38/23321.htmlです。
同じように26進数のことをいわれていたのですけど、
結局わからなかったです。
まさか32bitに収まらないとは・・・
なんとなく10桁って書いたので6桁でも8桁でもいいのですが・・・

635 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 09:00:01 ]
var table: array [#0..#255] of char;

procedure init;
var i: char;
begin
    for i := #0 to #255 do
        case i of
            'a'..'y': table[i] := succ(i);
            'z': table[i] := 'a';
            else table[i] := #0;
        end;
end;

function getnext(s: string): string;
var
    i: integer;
    c: char;
begin
    result := s;
    for i := length(result) downto 1 do
    begin
        c := table[result[i]];
        result[i] := c;
        if c <> 'a' then break;
    end;
end;


636 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 09:00:54 ]
init;
getnext('aaa') ==> 'aab'
getnext('zzz') ==> 'aaa'

var s: string;
begin
    init;
    s := 'aaa';
    while true do
    begin
        writeln(s);
        if s = 'zzz' then break;
    end;
end;

最速狙いたいなら普通にCでDLL書いたほうがいい。

637 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 15:34:26 ]
別にCなんか使わなくてもインラインアセンブラで十分じゃん

638 名前:629 mailto:sage [2010/05/10(月) 16:20:22 ]
www.ss.u-tokai.ac.jp/~ooya/Program/Console/NShinhou1.txt
ここを参考にしたらなんとかいけそうでした。
ご協力ありがとうございました。

639 名前:デフォルトの名無しさん [2010/05/11(火) 14:28:43 ]
Delphi7だけどバグの修正これでいいかな
Quality Centralの33496
qc.embarcadero.com/wc/qcmain.aspx?d=33496

procedure TMenuItem.DoDrawText(ACanvas: TCanvas; const ACaption: string;
.


  with ACanvas do
  begin
    if Text = cLineCaption then//追加2010.05.11 QC33496
      exit;//追加2010.05.11 QC33496
    if IsLine then
    begin
       if Flags and DT_CALCRECT = 0 then
      begin
        R := Rect;
        Inc(R.Top, 4);
        DrawEdge(Handle, R, EDGE_ETCHED, BF_TOP);
      end;
    end

2箇所追加してみたけど(新しいの2010も治っていないけど)

640 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 01:08:13 ]
//if Text = cLineCaption then
if IsLine then
でしょ



641 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 10:44:10 ]
フォームのAlphaBlendを使った時に特定のコンポだけは透明化されないようには出来ないでしょうか?

642 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 12:15:46 ]
AlphaBlendなフォームの上に
Transparentなフォームをぴったり重ねればできそうだけど
アホっぽいなw

643 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:04:26 ]
バイナリデータを文字変数を使って処理しています
以下のようにすると、バイナリ状態のUTF-16LE文字列をWideString文字列に出来ることが分かりました
var
Bytes: AnsiString;
WStr: WideString;
begin
// BytesにUTF-16LEのバイナリを入れる処理が入る…
// 例:バイナリ 71 67 AC 4E 30 00 33 00

WStr:=WideString(PWideChar(Bytes));
// 結果:WStrに「東京03」が入る

質問:

1. コンパイル時に警告が出るんですが、このやり方で問題ないですか?
[警告] Unit1.pas(174): String から PWideChar への型キャストは間違っている可能性があります

2. この逆(WideString → AnsiStringにバイナリ状態のUTF-16LE)の変換は、1文字ずつループを回せば
出来ましたが、もっと簡単に出来ますか?

よろしくお願いします

644 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:11:55 ]
なんでAnsiStringなんかに入れるの・・・
Byte配列でええやん

645 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:34:12 ]
警告ごまかしたいなら
w := WideString(PWideChar(Pointer(s)));
w := WideString(PWideChar(@s[1]));
で行けるんじゃね。
Stringをバイナリコンテナとして使う場合
別に文字コードなんて関知しないから問題ないはず。

646 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 18:04:55 ]
>>644
何をどうすれば出来て、何が最善なのか分からないんです
実は当初、Byte型の動的配列で検索とかいろいろやってました
TByteDynArrayとかオープン配列パラメータとか使ってみたり
勉強にはなったんですが、配列要素を切ったりつなげたりのやり方が
よく分からなかったのと、いちいちSetLengthするくらいならStringの方が
簡単かつオールマイティで良いではないかと考えたんです
ちなみに配列版の試作途中ソースは誤って削除してしまいました(アホ)

>>645 ありがとうございます
WStr:=WideString(PWideChar(Pointer(Bytes)))
とすることで警告が出なくなりました
さらに、
WStr:=WideString(Pointer(Bytes)) でもOkでした
ということはと考えて、
Bytes:=AnsiString(Pointer(WStr)) とすると逆変換も出来ました
空文字やヌル付きでもそのまんま、ありのまま相互変換するようなので分かりやすいです

ポインタとかの理解度5%程度なのでよく分かってませんが、このPointer(文字型変数)
というのは単なるポインタじゃなくてポインタ型、文字列の長さ情報をも含んでいるんですね
ヘルプ見ても断片的に「型なしポインタ型」としか書いてないし…

配列でなく、オールマイティな?Stringをバイナリコンテナ(カッコ良い言葉なのでこれも拝借)
として使うのは、方向性として間違ってはいませんよね?
それともやはり配列使うべきでしょうか? 配列の利点があれば教えてください

647 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:05:45 ]
>>646
あんたなかなかセンスいいw

648 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:50:44 ]
>>642
それやったことあるw
よっぽど重いアプリでも作らない限り無難に理想の動作はしてくれるよ。
リサイズさせない移動させないサブフォームでなら普通に使える。

649 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 21:59:47 ]
Del7を使っています。
WinSight32である特定のウィンドハンドルを見たら、そのウィンドウを隠した(スライドさせる)時に
hidden となるのですが、この hidden になっているかどうかはどうすれば分かるでしょうか?

650 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 22:57:03 ]
IsWindowVisibleとか



651 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 23:58:52 ]
>>646
使ってるDelphiのバージョンが分からないけど、そのバージョンを一生使い続けるならそれも可
でも乗り換えることがあるなら、string型はすでに仕様が2回ほど変わった過去があるので
そのキャストが今後も使えるとは限らないし、配列を使った方が確実にいいと思う
だからそのコードは偶然動いた程度に考えた方がいいかと
あと利点云々は変換した後何するかによるし、もう少し情報出してくれないと・・・

652 名前:649 mailto:sage [2010/05/13(木) 00:17:33 ]
ありがとうございました。
状態の取得が出来ました。

新たな質問なのですが、
他のソフトのテキスト描画色を取得したくて、ググったらGetTextColorというのにたどり着きました。

var
CL: TColor;
begin
CL:=GetTextColor(DC);

と、やってもCLには「0」が入ります。
DCの取得は出来ています。
TColorをTColorRefとしてもダメでした。

どなたかよろしくお願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef