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

このエントリーをはてなブックマークに追加
932デフォルトの名無しさん:2009/11/22(日) 16:58:35
>>931
ありがとうございます。
とりあえず、新規フォームにコンボとXPMan貼り付けて以下のコードで
やってみましたが、うまくいきませんでした。
どこかおかしいところあったら指摘して下さい。

const
EM_SETCUEBANNER = $1501;
EM_GETCUEBANNER = $1502;

procedure TForm1.FormCreate(Sender: TObject);
begin
SendMessage(ComboBox1.Handle, EM_SETCUEBANNER, 1, LParam(PChar('abcd')));
ComboBox1.Refresh;
end;

参考
ttp://homepage1.nifty.com/ht_deko/tech022.html
933デフォルトの名無しさん:2009/11/22(日) 17:57:29
まずEditで。あとOnShowかButtonのOnClickで。
934デフォルトの名無しさん:2009/11/22(日) 18:00:27
おっとLParamは"A pointer to a Unicode string that contains the text to display as the textual cue."だ。
935デフォルトの名無しさん:2009/11/22(日) 19:11:15
Editやボタンクリック、WideStringは既に試してました。
う〜んどこがおかしいんだろ
あと、折角教えて頂いたんですが、XPだと日本語使えない様で実用にはならないみたいですね
936DEKO ◆Ksf1ckrwGPYc :2009/11/22(日) 19:22:23
"参考ページ" をリロードしてみて下さい。
937デフォルトの名無しさん:2009/11/22(日) 20:10:55
おぉ、態々ありがとうございます
コンボボックスはVista以降なんですね
結局エディットでも機能しませんでしたが、XPだと駄目駄目みたいなんで
他の方法を模索します
938デフォルトの名無しさん:2009/11/22(日) 22:09:59
>>929
Integer突っ込むだけならNewなんてしなくてもキャストだけでよくねえか?
939デフォルトの名無しさん:2009/11/22(日) 22:30:02
>>938
後だしでスマン

後々、ほかの型を突っ込みたいとき(今ならジェネリックスか?)、
修正範囲を狭く出来るから。

TListのまま、integer型の値入れるのは、問題あり(修正箇所が散らばるという点で)だけど、
今回の例は、派生クラス作るので、キャストでも問題ないか...
940デフォルトの名無しさん:2009/11/22(日) 22:34:00
|PANEL1|PANEL2|

となってるとき、間のSPLITTERでサイズを変えると
PANEL2の幅はそのままでPANEL1のサイズとClientWidthのサイズが変わるようにするのってどうやるの?
941928:2009/11/22(日) 22:41:05
>>929
俺はTObjectListを多用する方だけど
プリミティブな型を入れるのにはTList系を使わないので
そういう発想はなかったわ。
今回はIntegerだったり配列だったりするので、
言われるとおりクラスを作っちゃうのもいいかもね。
942デフォルトの名無しさん:2009/11/23(月) 01:16:30
>>940
MinWidthとMaxWidthをWidthと同じにする
943デフォルトの名無しさん:2009/11/23(月) 06:05:21
例えば拡張子.aaaをクリックすると自作アプリが起動し、
その.aaaファイルに記載されている情報を
自作アプリに反映させたいのですが、どのような方法がありますか?
944デフォルトの名無しさん:2009/11/23(月) 07:09:15
関連付けして、ParamStr(1)を読む。
945デフォルトの名無しさん:2009/11/23(月) 12:38:00
>>941
バージョンは?ジェネリクス使えるならそっちでいいと思うけど
946928:2009/11/23(月) 19:59:28
>>926じゃないよ。
ちなみに知識はD7で止まってる。
947デフォルトの名無しさん:2009/11/23(月) 22:26:06
今って無料で公式が作ってるDelphiを手に入れる方法って書籍のCDROMくらいでしょうか。
VSExpressとかが出揃ってるのに、こんなに出し渋ってるとユーザー離れが進むだけだと思うのですが
何かいいことってあるんですかね…
948デフォルトの名無しさん:2009/11/23(月) 22:35:11
無料の時代は終わりました。
今世紀中に、フリーペーパーはおろか、フリーソフトやフリスビーもこの世から消えるでしょう。
949デフォルトの名無しさん:2009/11/23(月) 22:35:31
無料でばらまいて手広くやるよりは単価を上げて企業向けに特化したということだろう。
ホビーグラマは素直にC#とかに行った方がいい。
残念な話ではあるけどもうどうにもならないだろう。
950デフォルトの名無しさん:2009/11/23(月) 22:37:43
個人ユーザーの裾野が広がったら金かかるだろ
951デフォルトの名無しさん:2009/11/23(月) 22:51:52
>>949
C#って.net framework上じゃないと動かないですよね
Javaもランタイムが必要だし
今は移植性を重視してこういう言語が流行ってるのかな?
デルヒみたいにexeですぐ実行ってプログラム作りたいなら、やっぱC++とかを勉強しないとダメかな?
デルヒのスレで聞くのもあれですが。
952デフォルトの名無しさん:2009/11/23(月) 22:56:35
D7使いの俺はどうしたらいい?
953デフォルトの名無しさん:2009/11/23(月) 22:59:35
>>951
今時数千円くらいのエントリCPUでもそんなに重くないし
ランタイムがどーたらというのはあまり意味のない拘りに思えるけどね。
デコンパイルを嫌がる人にとってはでかい制約かもしれないけど。

なんにしろネイティブコンパイルしたいって明確な目的があるならまだDelphiも悪くないよ。
処理系はオークションあたりでまだ手に入るんじゃないの。
954デフォルトの名無しさん:2009/11/23(月) 23:07:53
ところでデルヒとはなんですか?
955デフォルトの名無しさん:2009/11/23(月) 23:10:24
>>953
確かに、性能向上により、Javaが遅いとかは戯言だとは思うのですが
われわれが自分の環境で実行するならともかく、いろんなレベルの人に幅広く使ってもらうには
コンパイルされたものだけを実行すれば良いという方が理想ですよね
しかも.net frameworkで作ったソフトはオープンソースとまで揶揄されてますよね…
実行環境は私は持っています ありがとうございます
956デフォルトの名無しさん:2009/11/24(火) 00:47:26
ユーザー離れっていうか無料ユーザ抱えてもデメリットしかないしな
サポート対象外とは言ったってパッチ出したり実質サポートの手間が発生するし

>>949
FreePascalあるじゃん

>>953
最近じゃオークションで手に入れるのはまず不可能に近い気がする
かなり粘れば出るかもしれないけど、まず見かけない
アマゾンの横流し野郎が出してるの位しか見たこと無いわ
957デフォルトの名無しさん:2009/11/24(火) 03:44:56
リンクリストみたいなのにEnumerator実装してfor-in-doでループ書きたいんですが、
下記のコードでは変数が2つ必要な辺りが無駄っぽいですし、もう少しシンプルに書く方法ってありますか?

type
  TLinkedListEnumerator = class
  private
    FCurrent, FNode: TNode;
  public
    constructor Create(AList: TLinkedList);
    function MoveNext: Boolean;
    property Current: TNode read FCurrent;
  end;

constructor TLinkedListEnumerator.Create(AList: TLinkedList);
begin
  inherited Create;
  FNode := AList.First;
end;

function TTreeNodeEnumerator.MoveNext: Boolean;
begin
  FCurrent := FNode;
  Result := FCurrent <> nil;
  if Result then
    FNode := FNode.Next;
end;
958デフォルトの名無しさん:2009/11/24(火) 03:49:29
MoveNext実装部のクラス名が変ですが気にしないで下さいorz
959デフォルトの名無しさん:2009/11/24(火) 22:34:46
D7から2010への乗換えを検討してます
とりあえず体験版を入れて既存のプロジェクトをコンパイルしてみたんですがエラーがいっぱい出ました
予備知識ゼロなんですが、乗り換えに際して変更点とか注意点とか纏めてるページってありませんか?
960デフォルトの名無しさん:2009/11/24(火) 22:38:45
纏める程注意点なんてない
なんのためのエラーなのかと
961デフォルトの名無しさん:2009/11/24(火) 23:35:22
D7で当然コンパイル通るのがエラーって言われるから困ってるんだけど馬鹿ですか?
仕様変更について知らなければエラーの意味さえ分からないし、ソース見れないから原因追求も困難
962デフォルトの名無しさん:2009/11/24(火) 23:38:03
じゃあもうそんな糞ソフトアンインストールした方が良いな。
963デフォルトの名無しさん:2009/11/24(火) 23:39:31
ここのウンチ・・・じゃなくてアンチはがんばるなぁ〜
964デフォルトの名無しさん:2009/11/25(水) 05:17:28
そんなどうでもいいレスする時間があるならその1/10でもいいから時間を使ってググった方が速いよ
馬鹿だから無理かもしれないけど
965デフォルトの名無しさん:2009/11/25(水) 05:43:58
まあ、ここは超初心者スレな訳だけど
こんなエラーが出て、回避策がわからないとか
何故、エラーなのかわからないとかって感じの
具体的な質問ならちゃんとしたレスが返るだろうけど
ただ、唐突に、エラーが出る。なんとかすれ・・・って感じだから、バカだねというレスしか付かないわなぁ。
コンパイラのバージョンUPでエラーが出るのは、とくに珍しいことじゃない。ごくごく普通。
下位完全互換なんて謳っているコンパイラなど存在していない。
質問内容的には超初心者を受け入れるってことだけど
常識性が劣悪超初心者的な質問は、結局こうなるよねぇ。
966デフォルトの名無しさん:2009/11/25(水) 05:44:58
釣られんなよ
アンチの工作質問なんだから
967デフォルトの名無しさん:2009/11/25(水) 06:15:27
delphi6personalのインストールCDは持っているのですが、ライセンスキーがありません
今でも正規のライセンスを得る事は出来ないのでしょうか?
968デフォルトの名無しさん:2009/11/25(水) 07:08:21
>959
> 予備知識ゼロなんですが、
初心者なんですが、っていうのと同じくらいダメな質問だと思うんだが。2009/2010は2007および
それ以前のバージョンとは断絶がある。きちんと変更点を調べて、その上で事に当たるのが望ましい。
従来のコードが通らない最大のポイントは文字/文字列のUnicode(UTF-16)化で文字列の
各要素であるCharが16bitになったことと、サロゲートや結合文字などを除き1文字がChar1つで
表されるようになったこと、これらに伴ってRTL/VCLのライブラリ関数が変更になったことだ。
969デフォルトの名無しさん:2009/11/25(水) 09:09:56
おまいら質問にちゃんと答えろ。

>>959は纏めてるページってありませんか?って訊いてるんだから
無い!でいいだろ。
970デフォルトの名無しさん:2009/11/25(水) 10:30:58
971デフォルトの名無しさん:2009/11/25(水) 11:12:38
Excelのある範囲(仮にA1〜B10とします)の値を、一度で二次元配列に取得したいのですが、
どのようにすればいいのでしょうか?
下記のソースだと、for ix := Low(aryDt) to High(aryDt) do の行で
「互換性の無い型です」のエラーとなりコンパイルが通りません。
使用しているのは、Turbo Delphiです。
よろしくお願いします。

procedure TF_Main.B_ExcelClick(Sender: TObject);
var
E_Excel : Variant;
E_Application : Variant;
E_WorkBook : Variant;
E_WorkSheet : Variant;
aryDt : Variant;
ix,iy : Integer;
TotalAmt : Integer;
begin
// Excelをオープン
(中略)

// A1〜B10の値を一度に取得
aryDt := E_WorkSheet.Range['A1:B10'].Value;

TotalAmt := 0;
for ix := Low(aryDt) to High(aryDt) do // 互換性の無い型?
begin
for iy := Low(aryDt[ix]) to High(aryDt[ix]) do
begin  
TotalAmt := TotalAmt + aryDt[ix][iy]; // A1〜B10の値を合計する。
end;
end;
end;
972デフォルトの名無しさん:2009/11/25(水) 13:04:57
バリアント配列はVarArrayLowBound,VarArrayHighBound使うんじゃ?
973デフォルトの名無しさん:2009/11/25(水) 13:46:12
>>957程度の質問にも答えられないなんて、Delphiスレはレベルが低いですね
それにC#ならこんなのもっと簡単に書けるのに(笑)
974デフォルトの名無しさん:2009/11/25(水) 13:49:12
煽っても何も出てきませんよw
975デフォルトの名無しさん:2009/11/26(木) 00:30:03
出てこないんじゃなくて無理なんでしょ?
馬鹿だからDelphiみたいな糞言語に必死でしがみついてるわけだし
976デフォルトの名無しさん:2009/11/26(木) 01:10:17
その馬鹿に必死に噛み付く人間もいるんだわ
977デフォルトの名無しさん:2009/11/26(木) 02:11:20
大変だね
978デフォルトの名無しさん:2009/11/27(金) 20:55:03
天才言語DELPHIができる人ってすごいですねー
979デフォルトの名無しさん:2009/11/27(金) 21:06:34
できない人よりはすごいかもな
980デフォルトの名無しさん:2009/11/27(金) 21:39:28
希少言語、日本語できるひと凄いかも
981デフォルトの名無しさん
お前は上手に扱えてないみたいだしな