トップページ⇒tech
929コメント344KB

Delphi相談室

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
ちょっと内容が高度になりすぎてしまうTechスレじゃ質問しずらい
とかはいりにくい人の為に DelphiのTips Q&A はこちら
00021 NGNG
最近便利思った事と、ひっかかった事

○TIPS1 コンポーネントを DBEditからDBComboBoxみたいに
  後から変更したい。
 ALT+F12を押して直接プロパテイを
 object DBEdit1: TDBComboBox
 のように書換えてしまいます。
 再度 ALT+F12を押した後 保存しようとすれば、ソースコードも修正してくれます

○TIPS2 TIPS1のようにしたくて ALT+F12を押したが
  「リンクされたモジュールで使われています」と怒られた場合、
 TTableとかを他のユニットで使われている場合が多いです。
 そんな事が起きないようにTTableとかは データモジュールユニットを作って
 そっちで用意するようにしましょう
0003転載 NGNG
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/12(木) 13:49

Delphiの仕様書自動作成ツールを探してます。
VBのは見るんですけど。
誰か知りませんか?
0004>3 NGNG
検索してすぐに出たのは
http://www.nbe.co.jp/seihin/doc/
http://www.vector.co.jp/soft/win95/prog/se098417.html

Delphiのバージョンアップ時の案内に一緒にあったのはどうなんでしょ?
0005>4 NGNG
最初のリンクと同じものみたいね
http://www.inprise.co.jp/3rdparty/DOC.html
0006効率コード求む NGNG
遅いなあと吐かれたコードを見たら、当然文字加算関数が呼ばれていた。
CスタイルのPCHARを使うべきなのか? あるいは?
///////////////////////////////////////////////
// エスケープシーケンスにエンコードをする
function EncodeStr(s:string):string;
var i:integer;
begin
 Result:='';
 i:=1;
 while i<=length(s) do
  begin
  case s[i]of
  #0..#8,#10..#12,#14..#31,'"','''',',':
      Result:=Result+'\x'+IntToHex(ord(s[i]),2);
  #9: Result:=Result+'\t';
  #13: begin
    if (i+1 <= length(s)) and (s[i+1]=#10) then
     begin
      inc(i);
      Result:=Result+'\n';
     end else
     begin
      Result:=Result+'\x'+IntToHex(ord(s[i]),2);
     end
    end;
  '\': Result:=Result+'\\';
  else begin
    Result:=Result+s[i];
    end;
  end;
   inc(i);
  end;
end;
// デコードをする
function DecodeStr(s:string):string;
var i:integer;
begin
 Result:='';
 i:=1;
 while i<=length(s) do
  begin
  if s[i]='\' then
   begin
   inc(i);
   case s[i] of
   'x':
     try
     Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
     inc(i,2);
     except end;
   'b': Result:=Result+#$08;
   'a': Result:=Result+#$07;
   'f': Result:=Result+#$0C;
   'r': Result:=Result+#$0D;
   't': Result:=Result+#$09;
   'v': Result:=Result+#$0B;
   'n': Result:=Result+#13+#10;
   else Result:=Result+s[i];
   end;
   inc(i);
   end else begin
   Result:=Result+s[i];
   inc(i);
   end;
  end;
end;
0007名無しさん@お腹いっぱい。 NGNG
一般論は別にして、このコードが遅いのは、結果の文字列の長さが定まらないことが
本質的原因。PChar にしてポインタ操作にしたとしても、文字列終端のポインタを
管理しないと、文字列末尾に文字を追加するたびに strlen 相当の操作を
行わなければならずコストは高い。文字列終端ポインタを使えば追加に対する
コストは極端に低くなるけど、直感的ではないのでバグを誘発する
場合あり。(提示された程度のコードなら間違いはないと思うけど)
それより、ポインタ操作に切り替えた場合は、結果文字列の長さあふれを
どうやって回避するか。十分大きめに確保するか、あふれたら再確保するか。

メモリ管理は string に任し、文字型の配列とみなして、文字列終端インデックス
を持たせるというのが、個人的なお勧め。クラスにしてしまえば
取り扱いも簡単。
0008効率コード求む NGNG
コメントありがとうございます>>7
エンコードは最悪("の連続)でも元の4倍になるだけなので
渡された文字列からヒープに領域を確保し、PCHARで処理すれば
という感じで考えていました。
ただ格好悪いかなと・・・・
0009名無しさん@お腹いっぱい。 NGNG
だから、setlength( Result, length(s) * 4 ) ってやって
Result[ind] := xxx;

って書けば、型チェックも効くし、実行時範囲チェックもできる。
0010名無しさん@お腹いっぱい。 NGNG
毛ほども変わらんかもしれないが、IntToHexを使うよりCharのテーブル
をつくったほうが速い。とにかくstring生成を控えるべき。
0011まとめ NGNG
・stringの生成を抑える・・・最重要
 →結果の保持にstringの加算を使わず、Char型の配列と添え字にする。
 ポインタなら(変数が減らせるので)なお良かも。
・IntToHexの代わりに'012..9ABCDEF'のテーブルを利用。
・条件分岐をする時、先に例外をはねる(' 'か'0'以下を別扱い)。
 →非常にクリティカルなら、ctypeのように例外を全て配列参照にする手もある。
 が、メモリアクセスが発生するので効果の程は不明。
0012効率コード求む NGNG
>>9 ありがとうございます 了解しました。その線で書いてみます

データベースファイルをCSVに変換して保存する時とかに使いそ
うなコードなのでみなさん同じようなコードをお持ちかと思ったのですが・・・・
0013名無しさん@お腹いっぱい。 NGNG
なんだ。コードが欲しかっただけか。
0014名無しさん@お腹いっぱい。 NGNG
Delphi用のDecompilerどこかにないでしょうか?
ご存知なら場所を教えてもらえると有り難いです。
0015名無しさん@お腹いっぱい。 NGNG
>>14 何に使うのか説明しやがれ
0016名無しさん@お腹いっぱい。 NGNG
14>>15
説明したら教えてくれますか?
0017名無しさん@お腹いっぱい。 NGNG
15>16
納得できる説明だったら教えてやるよ。
001814>17 NGNG
それでは恥を忍んでお話しします。
実は最近Delphiを始めたんですが、田舎住まいなため
解説本などが殆ど手に入らないんですよ。
それでもHelpや付属マニュアルと格闘して頑張っては
いるんですが、実際的な手法などの情報が全くない所為か
はたまた私のおつむの出来が悪すぎるのか、いまいち要領
を得ません。
で、他の人はどういうコーディングをしてるのか具体的に
見てみたかったんです。ダメでしょうか?
0019名無しさん@お腹いっぱい。 NGNG
>>18
Delphiで書かれたソフトでオープンソースのものもたくさんあるでしょ.
Wyvernとか,Apolloとか.他にもあるかな.
002014 NGNG
>>19
あ、ありがとう。
「Delphi ソース」などで検索してもめぼしいのが
ヒットしなかったのでたいへん助かります。
さっそく探してみます。感謝です。
0021名無しさん@お腹いっぱい。 NGNG
本だって、本気で欲しければ通販等で簡単に手に入れられると思ふ
002214 NGNG
>>21
レスありがとうございます。
初心者にお勧めというとどんなのがありますか?
実は、アスキー出版局の「Delphi5オフィシャルコースウェア」
というのを取り寄せで買ってみたもののマニュアルと殆ど変わらない
内容だったので、それ以来注文で買うのを躊躇していたんです。
0023名無しさん@お腹いっぱい。 NGNG
>>14
一応、付属のサンプルは一通り目を通したんだよね?
002414 NGNG
>>23
はい(C:\Program Files\Borland\Delphi5\Demosにあるやつですよね?)
というか今も頑張ってやってるところです。
でも、初心者には敷居の高いものも結構ありますよね。
ActiveXとかThreadsとかデータベース関連のものとかSockとか・・・
一通りコンパイルして動作とソースを見比べる程度のことは
したんですが、でもデモなのでエラー処理も省かれてるようですし。
だから最初は簡単なアウトラインプロセッサのようなもので一通り
どうやって出来ているのか見てみたかったんです。
で、逆コンパイラがあればいいな、と・・・。
楽しようなんて以ての外、と言われれば、それまでですが。
002514 NGNG
ありがとうございました。
幾つか(というかいっぱい)見つけたので
これから試してみます。
0026効率コード求む NGNG
こうやっておくと結構便利ですが
type SQLExecProc =procedure(Fields:TFields ; var count:Integer)of object;

function SQLExec(const sqls:string;Proc:SQLExecProc ):longint;
var Query1 : TQuery;
begin
 Result:=0;
 Query1 :=TQuery.Create(TMethod(Proc).Data); //何かの為にオーナを作っておく
 with Query1 do try
   DatabaseName:= MyDatabaseName ;
   SQL . Clear;
   SQL . text:=sqls;
   Open;
   first;//頭にカーソルを持っていって
    while not eof do begin
     Proc(fields,Result);
     next;
    end;
 finally
  close;
  free;
 end;
end;

これを使うために今、formのメソッドでやってもいいのですが、
type ESQLStr=class(TStringList)
public
procedure SQLProc(fields:TFields ; var count:Integer);
end;
とクラスを臨時に作って
procedure ESQLStr.SQLProc(fields:TFields ; var count:Integer);
begin
 append(
  format('%5.4d=%12s',[ fields.Fields[0].asInteger,
             fields.Fields[1].asString])
  );
 inc(count);
end;
こんなふうにやっています。
その都度作りたいスタイルが違うので、SQLProcをvirtualにして継承しても
そんなにメリットが無いと思ったからです。
しかしドロップダウンリストのItemsのようにすでにあるTStringsに対して
同じようなやり方をしたいとしたらどうやればいいのでしょう?
0027効率コード求むNGNG
型可変オープン配列パラメータにVariant配列を渡して
Format('%d,%s',varArray);と書けるなら一番簡単なんですが・・・
作るしかないのかな・・・・
0028効率コード求むNGNG
という事で作りました。なんとか動きます。でも効率悪そう。うーん

function VarFormat(const formats:string;const dt:array of Variant):string;
var s,w :string;
var i,n :integer;
var arg :array of TVarRec;
var Ext :array of Extended;
var Cur :array of Currency;
var str :array of AnsiString;
begin
s:=formats;
w:='';
while s<>'' do begin
 n:=AnsiPos('%',s);//書式文字を探して
 if n<1 then break;
 for i:=n+1 to length(s) do
 begin
 if isDelimiter('duefgnmpsxDUEFGNMPSX',s,i) then
  begin
   w := w + s[i];
  delete(s,1,i);//それまでを消して
  break;
  end;
 end;
 end;
  LowerCase(w);
 setLength(arg,length(w));
 setLength(Ext,length(w));
 setLength(Cur,length(w));
 setLength(str,length(w));
for i:=0 to length(w)-1 do
 with arg[i] do
 case w[i+1] of
 'd','u','x','p':begin VType:=vtInteger ;VInteger :=dt[i]; end;
 'e','f','g','n':begin VType:=vtExtended;Ext[i]:=dt[i];VExtended:=@Ext[i]; end;
 'm':      begin VType:=vtCurrency;Cur[i]:=dt[i];VCurrency:=@Cur[i]; end;
 's':      begin VType:=vtAnsiString;
            str[i]:=VarToStr(dt[i]);
            VAnsiString:=Pointer(str[i]);
         end;
 end;
 FmtStr( Result , formats , arg);
end;
0029名無しさん@お腹いっぱい。NGNG
Delphi-ML に流せよ。
borland.jp.public.delphi.preopen でもおもしろいかも。
0030>28NGNG
別にどうせDBの為なんだからそれくらいのオーバヘッドいいんじゃないの?

3つも配列作らなくても同時には一つしか使わないんだから、共用体作って
1つの配列にまとめた方がいいかも

それから金銭型と浮動小数点型は中身同じだから用意する配列は一つでいいと思う
0031効率コード求むNGNG
フォントとかブラシを一時的に変更して描画する時、保存する必要があるので
こんなふうなコードを考えました
with XX.Canvas do
 with TBrush.Create do {一時的に作ったオブジェクトに}
 try
  Assign(Brush);    {ここで保存して}
  Brush.Handle:=GetStockObject(HOLLOW_BRUSH); {使いたいブラシを設定して}
  ・・・ブラシを使う処理・・・
  Brush.Handle:=Handle; { ここで復元 }
 except free; end;

しかし元に戻す時に Handleを使わなきゃいけないのはなんだかなあなのですが
うまい方法はあるでしょうか?

>>29 メーリングリストというのはよく判っていません。
   というか自分のメールアドレスは携帯なので・・・

>>30 コメントありがとうございます。共用体というのを勉強してみます
0032名無しさん@お腹いっぱい。NGNG
>>31
>というか自分のメールアドレスは携帯なので・・・
関係ない。
といいたいところだが、受け側に回ることを考えると厳しいかもしれない。
0033某ランド>31NGNG
多少の改善でよければ、こんな感じの保存するだけのクラスを作る

type TSaveGraphicsObject=Class(TObject)
 private
  TargetObj:TGraphicsObject;
  SaveObj:TGraphicsObject;
 public
  constructor Create(v:TGraphicsObject);
  destructor Destroy; override;
end;


constructor TSaveGraphicsObject.Create(v:TGraphicsObject);
begin
    if v is TFont then SaveObj:=TFont. Create
 else if v is TPen then SaveObj:=TPen. Create
 else if v is TBrush then SaveObj:=TBrush.Create
 else SaveObj:=TGraphicsObject.Create;
 SaveObj.Assign(v);
 TargetObj:=v;
end;

destructor TSaveGraphicsObject.Destroy;
begin
 TargetObj.Assign(SaveObj);
 SaveObj.Free;
 Inherited;
end;

そうすると、

with XX.Canvas do
 with TSaveGraphicsObject.Create(Brush) do {一時的に作ったオブジェクトに}
 try
  Brush.Handle:=GetStockObject(HOLLOW_BRUSH); {使いたいブラシを設定して}
  ・・・ブラシを使う処理・・・
 except free; end;

と保存と復元処理を隠せられる。
 さらにやるなら interface すれば自動的にデストラクトされるけど
 効率的処理からは離れるかもしれないね。
0034ageNGNG
age
0035効率コード求むNGNG
>>33 ありがとうございます。interfaceの勉強をしています
0036名無しさん@お腹いっぱい。NGNG
ゲームを作るためにDelphi購入を考えています。
Learning版だとこういう面で不便になってくる(Pro版では問題なくできる)ということ
があったら教えてください。

Learning版とPro版の機能一覧が↓に乗っていますが、具体的にどう影響するのかが
わからないので・・
www.inprise.co.jp/delphi/d5sku.html
0037名無しさん@お腹いっぱい。NGNG
Stdで何が一番不便って言うとVCLのソースが無いことか
良く知っている人ならCustom何とかまで戻って作ればいいけど
それじゃこのコンポーネントちょっといじりたいって時
初心者には手が出ない
0038名無しさん@お腹いっぱい。NGNG
故あってデルファイ使うことになりました。

新規作成でフォームを作ると問答無用で
Form1とかいう名前になります。
まあいいか、と、そのフォームのNameプロパティを
FooFormとか自分の望む名前にしました。

「すべて保存」メニューを実行させると、そのフォームクラスの
ソースが"Unit1.pas"などという名前でセーブされそうだったので
セーブダイアログ(と言うのかどうか)に手動でタイプして
"FooForm.pas"という名前でセーブしてもらおうとすると、
「すでにプロジェクトにある」とか言ってセーブさせてくれません。

「じゃあ」と思って、いったんそのフォームをプロジェクトから
削除して、再び新規作成したフォームをプロジェクトマネージャで
「名前を付けて保存」で"FooForm.pas"に保存しました。
このままでは当然クラス名やUnit名は変わらない(Form1のまま)ので
フォームのNameプロパティを変えようとすると「FooFormは既にプロ
ジェクトにある」とか言って変えさせてくれません。

なんとかクラス名とユニット名とファイル名を揃えたいんですが、
どうすれば良いのでしょう。

---- FooForm.pas ---------
unit FooForm;

type
FooForm = class(TForm)
 :
 :
--------------------------

てな具合に。
0039名無しさん@お腹いっぱい。NGNG
俺が疑問に思うのはインストールすると
VCLのソースがついてくる体験版の存在。
0040名無しさん@お腹いっぱい。NGNG
>>38
ユニット名とNameが同じだからだよ(糞
0041名無しさん@お腹いっぱい。NGNG
>>39
そんなのあったっけ?
0042>38NGNG
フォーム名(クラス名)とユニット名は同じ名前にはできません。
例えばFooUnitとFooFormのようにしてください。
0043>38NGNG
同じ名前だと
ユニット名.XX とした時と オブジェクト名.XXとした時にどう区別する?

というかユニットもひとつのオブジェクトと考えた方がいいかも
0044>43NGNG
>ユニットもひとつのオブジェクトと考えた方がいいかも
オブジェクトというよりも名前空間(namespace)に
近いかもしれませんね
0045名無しさん@お腹いっぱい。NGNG
Windows2000上でntbackupみたく使用中のファイルをコピーするには
どうしたらいいでしょうか?
0046名無しさんi486NGNG
38はDelphiをなめてるので
ねたです。
0047名無しさん@お腹いっぱい。NGNG
38です。
済みません、確かに皆様の「アホでぇこいつ」を呼び起こすような
ことだったようで、言われる通りにUnitをFooFrmにクラス名をTFooFormに
してあっさり解決しました。
でも嘘話という意味でのネタではないんです、ほんとに煮詰まってたのです。
ありがとうございました。

ところで、exceptとfinallyって同時に使えないんでしょうか。
Java感覚で
try
except
finally
end
って書いたら、「(finallyのとこに)endが無いぞ」って怒られました。
「文」ということになっているせい?
0048>47NGNG
独学(ですよね?)の最大の弱点は、人に聞けば5分で解決することを
自力で解決するまで先に進めないことですね。

try except finally endはサポートされていません。
現状では以下のように書くしかないですね。

try
 try
  ...
 except
  ...
 end
finally
 ...
end
0049名無しさん@お腹いっぱい。NGNG
VB.NETでは
Try
Catch
Finally
End Try
って書き方するらしいぞ。
(ヘジルスバーグがVBにしてやるのはここまでで
後はC#に注力してるよーだが。)
0050名無しさん@お腹いっぱい。NGNG
複数のバージョンのDelphiをインストールした時
DPRファイルのところでマウスの右ボタンクリックで
選択できるようにした INFファイルの書き方 をどこか
で見かけたのですが、・・・・・すみません教えて下さい
0051名無しさん@お腹いっぱい。NGNG
そもそもDPRファイルから起動すると
おかしくナラねえ?俺だけか。
0052名無しさん@お腹いっぱい。NGNG
ところで、山ほどDelphi関係スレがたちあがってるんだが
Delphi使いってそんなに多いのか?
0053名無しさん@お腹いっぱい。NGNG
一応Delphi使い、というより厨房ですが・・。
で、ついでに質問ですがDelphiではなぜ呼び出してるところより
上にその関数がないといけないのでしょうか?
それとコンテナクラスはありますか?ヘルプみても見つからないです。
TurboC++のTVectorとかTQueueみたいなのが使いたいです。
0054名無しさん@お腹いっぱい。NGNG
>52
そんなに多くないです。
ほとんどのスレは、一部のキティが考えも無く立てているだけでしょう。
仕事でもなかなか使えないし、プラットフォームも限定されるし。

あの環境で、gccみたいに中間コードを共通化して、上位の言語はユーザが
自由に選べる(c/c++/c#/oo-pascal/basic/asm/etc...)とかならもっと
普及していると思うんですが。(エディタは直して欲しいけど)
移植チーム側も、統合環境(GUI)とobjコードのnative実装だけで済んで移植も
簡単なのに。
そうしないのは、やっぱりコンパイルスピード落としたくないから?
0055名無しさん@お腹いっぱい。NGNG
上位の言語部分と、下位のnative部分を別売りにするとかして
商売にならないかな?例えば、
Delphiセットの組み合わせ(上位oo-pascal 15,000円、下位win32 15,000円 -> 30,000円
C++builderセットの組み合わせ(上位c/c+++ 15,000円、下位win32 15,000円 -> 30,000円
両方購入する場合は 45,000円で済む。
とか。(わ
0056>53NGNG
>ではなぜ呼び出してるところより 上にその関数がないといけないのでしょうか?
これはC++でも同じですね。Cでも上に無いとマズイ事が多いです
単純にコンパイラが上から順にコンパイルしてるからでしょう。
ただ、実体まで書かなくても先に宣言しておけばいいです。

コンテナクラスはTListを応用します。
どうすればいいかはVCLを覗くといいでしょう。
ただ、高速なアルゴリズムが必要な場合は自分でアルゴリズムを実装する必要があります
0057>50NGNG
とりあえずregeditでDelphiProjectを検索してShellに追加したら
解決すると思うけど? もし何度もインストールするような状況
だったら、レジストリ書出 で*.REGファイルを作っておけば
これをインストールすればとりあえず可能。

[Software\Borland\Delphi]の情報からメニューが出るような
小さなプログラム作っておいてこれを dprに関連付ける方がスマートかな?
0058アイソシュタイソNGNG
アヒャヒャ(゚∀゚)y─┛~~
まずいことが多い、つーか関数のプロトタイプ型宣言だろ。>56
教えるにしてもちゃんと調べとけ。
005956>58NGNG
おや 良く単語をご存知で。
 プロトタイプ宣言しなくてもCなら大丈夫な場合もありますよ
 int型サイズ=ポインタ型な環境なら面倒でやらない事も・・・誉められた事じゃないけど
0060DNGNG
forward宣言すればすむこと。

前方シャンショーのおかげで
バカっぱやいコンパイラ速度を実現してるんじゃないの?
006153NGNG
>56,58,59,60
なるほど、プロトタイプ宣言(forward宣言?)ですか。
そういやDelphiではしたことなかったです。早速調べてみます。
コンテナクラスもTListってやつで実現できるんですね。
ありがとうございました。
正直マジレスもらえると思ってなかったので目茶苦茶嬉しいです。
0062他にもあるよNGNG
TClassList

TClassList は,クラスのリストを管理します。

TComponentList

TComponentList は,コンポーネントを解放する際にそれ自体を更新してコンポーネントのリストを維持します。

TObjectList

TObjectList は,(所有している)オブジェクトのリストを管理します。

TObjectQueue

TObjectQueue は,オブジェクトの先入れ先出しリストを管理します。

TObjectStack

TObjectStack は,オブジェクトの後入れ先出しリストを管理します。

TOrderedList

TOrderedList は,シリアル順にアクセスしなければならないポインタの配列を管理します。

TQueue

TQueue はポインタの先入れ先出し配列を保持します。

TStack

TStack は,ポインタの後入れ先出し配列を保持します。
0063名無しさん@お腹いっぱい。NGNG
type hoge = record なんとか end;
type phoge=^hoge;
procedure func1( ph:phoge);
と定義された関数の別名
procedure func2(var h:hoge);
を作りたいのですが、巧い方法はありますか?

procedure func2(var h:hoge);absolute func1;
はダメみたいです
0064>63NGNG
procedure func2(var h:hoge);
begin func1(@h);end;

は当然お気にめさないんだろなあ・・・・inline指令があればいいんだろけど
あとは関数ポインタに代入する方法だけど、これもオーバーヘッドがあるからなあ
006563NGNG
>>64
Cだとこういうのはリンク前に幾らでも弄れるのでDelphiの
absoluteを使って簡単に出来るのかと・・・・
まあ出来なくても ご指摘通りそんなに困るわけじゃないけど・・
0066名無しさん@お腹いっぱい。NGNG
最近の Delphiマガジンの連載記事は面白くない気がします。
後期のD++に似てますが気のせいですか?
0067名無しさん@お腹いっぱい。NGNG
Delphiマガジン Vol.8
http://dmj.psnet.ne.jp/books/ISBN4-939049-08-6.html
0068名無しさん@お腹いっぱい。NGNG
なんでvol8なん?
0069知りたい人。NGNG
エクスプローラが死んだときに消えちゃうアイコン達を、
別のソフトで復活させるってのは出来ます?

つまるところアイコン復活専用のソフトを作りたいんですが。
「常駐して状態を保存」とかじゃなくて非常駐で。
0070名無しさん@お腹いっぱい。NGNG
板違い。>69
0071名無しさん@お腹いっぱい。NGNG
>70バカ?
69は作りたいって言ってるだろ

で、出来るかどうかっていうと非常に難しいんじゃないかな。
と俺は思フ
0072名無しさん@お腹いっぱい。NGNG
69には作れそうにないと思うが。(藁
0073名無しさん@お腹いっぱい。NGNG
72には作れるんですか?
UPキボーン
0074名無しさん@お腹いっぱい。NGNG
Delphiで使えるXMLのPaserってあります?
情報ほとんどみつかんないんすけど。
0075>74NGNG
http://village.infoweb.ne.jp/~skonishi/xml/delphi.html
0076名無しさん@お腹いっぱい。NGNG
>74
エンタ版買え。
0077名無しさん@お腹いっぱい。NGNG
今月のDelphiマガジンの特集がXMLだったよ。
DOMでよければ
http://www.philo.de/xml/
にコンポーネントがあるらしい
0078名無しさん@お腹いっぱい。NGNG
>>74
MS XML Parser がいいと思います。
ただし SAXは使えません。なぜかエラーが出ます。
http://www.microsoft.com/japan/developer/workshop/xml/general/xmlparser.asp

>>75
DTDが使えないのは痛すぎです。

>>76
Enterprise版にXMLパーサーは付属しません。
0079名無しさん@お腹いっぱい。NGNG
初級な質問なんですが、
'100'という文字列から100だけを抽出する方法を教えていただきたいのです。

Pos('''', '100') > 0 do
'100'[Pos('''', '100')] := '';

では、だめなのですが、よい方法があるでしょうか?

Pos('''', '100') > 0 do
'100'[Pos('''', '100')] := ' ';

これならできるんですが、スペースは入れたくないのです。
0080名無しさん@お腹いっぱい。NGNG
AnsiExtractQuotedStr 関数
0081名無しさん@お腹いっぱい。NGNG
>>80
ありがとうございます。
しかし、ヘルプを読んでも使い方がわからないっす。
申し訳ないのですが、例をのせていただけたらと思うのですが。
すみません。

0082名無しさん@お腹いっぱい。NGNG
すみません。自力でできました。
本当ありがとうございました。>>80
0083名無しさん@お腹いっぱい。NGNG
>>79
不思議なそのコードは象徴的な意味か?
とりあえず
delete(s,Pos('''', s) ,1);
008479NGNG
その方法もあるんですね。
初心者なもので色々な方法を知ったのでうれしいです。
ありがとー>>83

79のコードはヘルプでpos関数というのを見つけて使ったので、僕にとっては不思議でもなんでも・・

ありがとうございました。

0085名無しさん@お腹いっぱい。NGNG
まとめてage
0086名無しさんi486NGNG
77がいっている http://www.philo.de/xml/ が
SJIS対応になってくれればいいんだけど。
なんかいいDOMない?
0087名無しさソNGNG
会社で、Delphiのことを”デルファイ”という人と、”デルフィ”という人がいますが、どっちが本当ですか?
教えてください。僕はデルファイと思ってました。
0088デフォルトの名無しさんNGNG
>>87
英語読みならデフファイ。辞書引いてみ。
0089デフォルトの名無しさんNGNG
>>88
いやーん訂正。デルファイ。
0090名無しさん@お腹いっぱい。NGNG
前にボーランドのビルで行われたDelphiの説明会にいったら、
OHPのスライドでDelphiの説明をしてくれた。
しかしDelphiではなく、 Delphと全て書かれていた。
俺たちは笑いをこらえて、デルフって新製品ですかね?と
質問してあげたよ。

0091>>87NGNG
日本語読みならデルポイ。web検索してみ。
0092デフォルトの名無しさんNGNG
>>86
だから MS XML Parser 使えってんだ
0093デフォルトの名無しさんNGNG
>>87
広告みれ
#ただし遺跡はデルフィ
0094デフォルトの名無しさんNGNG
>>92
環境依存いや〜ん
0095デフォルトの名無しさんNGNG
>>94
環境依存なんて・・・ちっちぇーこと気にすんなよ!
第一 MSXML + Delphi だと SAXがうまくいかん。
0096デフォルトの名無しさんNGNG
デルファイ5でアプリを作っているのですが、
ツールバーのListプロパティとShowCaptionプロパティをTrueに
すると、Captionが無いボタンのサイズがスペース一個分だけ大きくなります。
VCLのソースを見たら文字列長が0の時はスペースを入れているのですが、
なぜそうやっているのかがわからないです。
このスペースって取ることは出来ないですか?それともコモンコントロール
のバージョンによって違うのでしょうか?
当方環境
Windows2000pro
Delphi5 Update1
0097デフォルトの名無しさんNGNG
Delphiでコンテキストメニュー(シェルメニュー)に独自メニュー
追加する方法教えれ。Delphiのシェル本買ったが、いまいち
分からんかった。サンプルコードとか公開してるとこ知りません
か?
0098デフォルトの名無しさんNGNG
Delphi付属のDEMOをミロミロミロー
0099デフォルトの名無しさん NGNG
コンテキストメニューってポップアップメニューのこと?
0100デフォルトの名無しさんNGNG
エクスプローラノナー。
0101デフォルトの名無しさんNGNG
http://leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
ケンサクシテクレ。
■ このスレッドは過去ログ倉庫に格納されています