トップページ⇒tech
1001コメント313KB

モナーの *やさしい* Delphi質問スレ

■ このスレッドは過去ログ倉庫に格納されています
0001DELモナNGNG
DELモナーがどんな厨房疑問でもやさしく答えます。
DELモナは時に私であり、時には別の人。
他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 ∧ ∧
( ´∀`)(    )
0655デフォルトの名無しさんNGNG
XML
0656デフォルトの名無しさんNGNG
TREEもどきでバーチャルINIファイルに保存してください
0657ねこまNGNG
簡単にやるなら TTreeView で SaveToFile, LoadFromFile
TreeItem.Data に属性持たせとけばよさそう
そのまま表示できるのでデバッグも楽ちん

XML も良いアプローチ.
0658デフォルトの名無しさんNGNG
>>654 文字列の改行とかヤバイ文字をエンコードデコードしてそのまま
 レジストリに書き出せば?

function EncodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
 while i<=length(s) do
  begin
  case s[i]of
  #0..#31,'"','''',',','&','%':
      Result:=Result+'%'+IntToHex(ord(s[i]),2);
  else begin
    Result:=Result+s[i];
    end;
  end;
   inc(i);
  end;
end;

function DecodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
 while i<=length(s) do
  begin
  if s[i]='%' then
   begin
    try
     Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
    except end;
     inc(i,3);
   end else begin
   if not(s[i] in[#$0d,#$0a]) then
    Result:=Result+s[i];
   inc(i);
   end;
  end;
end;
0659デフォルトの名無しさんNGNG
xmlってHTMLもどきじゃないんですか?
そんなに複雑なことも簡単にできるの?
0660デフォルトの名無しさんNGNG
てゆうか、Del6Pro にXMLコンポーネントは
付いてないですよね…はあ。
0661デフォルトの名無しさんNGNG
>>660
MSXMLつかえ
0662デフォルトの名無しさんNGNG
>>659
HTML は 「Web用の文書」 を書くための言語。
XML は 「何らかの言語」 を書くための言語。
自分で好きな言語を定義できる。
狭義ではデータ構造の定義でもいい。

>>660
msxml 使えば?
0663デフォルトの名無しさんNGNG
どやってつかうの?>msxml
0664デフォルトの名無しさんNGNG
MSXMLってコンポーネントのことですか?
探してもみつからないけど、MSXMLっていう
Delphiからでも使えるライブラリがあるんですか
0665デフォルトの名無しさんNGNG
>XML は 「何らかの言語」 を書くための言語。
>自分で好きな言語を定義できる。
>狭義ではデータ構造の定義でもいい。

あ、そうなんだ。
てっきりHTMLの後継者だとおもっていた。
さっそくXMLの雑誌を買ってこよう。
0666デフォルトの名無しさんNGNG
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, Chartfx3;
type
TForm1 = class(TForm)
Chartfx1: TChartfx;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
var i: byte;
begin
for i:=1 to chartfx1.NValues do chartfx1.Value[i]:=i;
chartfx1.Refresh;
end;
ってなときにぼたん1押しても値が変わりません
なにがわるいんでしょうか
へたれな質問ですまそ
0667デフォルトの名無しさんNGNG
データを変更する部分はOpenDataExとCloseDataで囲ってあげてください。
0668デフォルトの名無しさんNGNG
XMLってSGMLの2の舞になりそうな気がするんだけどな....
チャンク構造のバイナリファイルのほうがよいとおもふよ。折は
データベースでも何でもチャンク構造がよい
参考フォーマットとしてはPNGがよいな。

あとXMLは確かTorryにフリーとシェアと両方あったと思う。
タイプライブラリーでXML関連のを読み込んでもいいけれどでもソースのある奴は
やっぱ参考になるね、
コンポーネントは極力ボーランドのものじゃないほうが実行時バイナリと
開発時バイナリが分離されていて効率がよいように思える。
0669デフォルトの名無しさんNGNG
すいません、チャンク構造ってなんですか
0670デフォルトの名無しさんNGNG
>668
すみません、
>SGMLの2の舞
ってなんですか?
0671デフォルトの名無しさんNGNG
>>669
個別のデータ要素のタイプにかかわらず、要素の枠としてのフォーマットを統一して格納する方式。
たとえば種別(4文字程度)、サイズ、データ実体という組で一つのチャンクとして定義して、それに
則って読み書きするだけで汎用のリーダー/ライターが書け、知らない種別は無視しても
読み続けられるために後から種別が増えても下位互換性を保つようにできる。
さらにチャンクの中にさらにサブチャンクとして並べたりもすることでこの構造をツリーにすることもある。
バイナリの画像や音声フォーマットはチャンク形式を採っているものが多い。

XMLはこの考え方をテキストベースに置き換え、チャンクのフォーマットにあたる部分も
別途定義・記述するようにしたものといえるかな。
0672デフォルトの名無しさんNGNG
ぐっちゃぐっちゃ何でもかんでも取り込んで記号化したふり
したものなんか見たくも無い
0673デフォルトの名無しさんNGNG
>>669
671に補足すると、Windowsでは昔からRIFF形式ってのに使われてるよ。
で、RIFF形式ってのはWAVやAVIに使われてる。
0674668NGNG
>>671 丁寧なフォロー あんがとー

htmlが成功したのは自己完結型だからだと思うんだけど
XMLは例えばXML__type**みたいなのがきっちり決まっていればいいんだけど
一歩間違えるとただの暗号になっちゃう

仮にXMLを実装するとしても自己完結型か明示的に文法ファイルを指示したい

あと脱線しちゃうけれどMP3ファイルにRIFFヘッダーつけただけでACM APIで
再生できるのでDirectSoundでMP3をやる場合はありがたい
0675デフォルトの名無しさんNGNG
>>674
何かよくわからんが、普通 XML は DTD か XML Schme で文法を定義する。
0676デフォルトの名無しさんNGNG
MSXMLのドキュメント
http://www.microsoft.com/japan/developer/xml/default.asp
ほかにもIBMのDLLやOpenSourceのがあったはず
0677デフォルトの名無しさんNGNG
最近は階層構造のiniファイルとしてXMLの構造のみ使わせてもらってる
DTDやSchmeはよくわからんのとめんどくさいしほかとの連携もないのでパス
印刷する時はxslで見やすいようにしてIEで表示
0678デフォルトの名無しさんNGNG
>>671
wavやaviなんかそのたぐいだね。
確かにバイナリデータを扱うのが前提ならチャンクはらくだ。
0679デフォルトの名無しさんNGNG
LeftStrとかRightStrて日本語を1文字として数えてるようなんだけど
これを止めさせることって出来ないんでしょうか?
S := 'C:\テスト\dir\';LeftStr(S, 8);
とかすると、Sに'C:\テスト\d'が返ってきて迷惑ヽ(;´Д`)ノ8byteトリダシタイノー
0680デフォルトの名無しさんNGNG
>697 copy(s,1,8) ではダメ?
0681デフォルトの名無しさんNGNG
>>680
copyも日本語を1文字と数えるようで同じ結果が返ってきたです。
0682679=681NGNG
>>680
681は間違いで、ちゃんとできました!大々的に感謝です。
0683デフォルトの名無しさんNGNG
嘘こいてんじゃねえゴルァ!
0684デフォルトの名無しさんNGNG
というか それ8byteで切ったら、後困らんのかい?
0685デフォルトの名無しさんNGNG
Delphi6+up1で外部ツールを起動するとき
カーソル位置の単語$CURTOKENって展開されなくない?
0686685NGNG
-s$CURTOKEN
みたいにスペースを入れないと駄目なようで
-s $CURTOKEN
としたらOKでした。が、これではツール側が認識しない...
0687デフォルトの名無しさんNGNG
そうそう、スペース入れないと展開されない仕様はなんとかならないかな。
俺もツール登録するときに困った口。
たしか結局batファイル経由にしたけど。
0688デフォルトの名無しさんNGNG
Win2KにD6-pro入れて使用許諾とってからアップデートしたんだけど
ほかのユーザーでは未許諾になっちゃう。
これってどうすれば直る?
0689 ◆woDeLPHI NGNG
>688
 許諾を取った時のユーザで6.0のレジストリを保存して
それをマウス右ボタン->結合でやってみたら?
 色設定とかもそれで移せるからさ
0690デフォルトの名無しさんNGNG
>>689 あんがと それでやってみます。
確かバイナリのデータが入っているのでそれかな?
0691おしえてNGNG
でるファイてvcより簡単で
作成したアプリも高速らしいけど
本当ですか?

当方vbより乗り換えようと思うのですが
周りにユーザがいないのでふんぎりがつきません
長所、短所おしえてください

当方の使用用途はげーむせいさくです
あと、製作用のエディター

どうでしょ
0692デフォルトの名無しさんNGNG
とりあえずはpersonalただなんで、試してみたらどうでしょうか?
delphiが向いてるのはエディター制作ですが、これならpersonalの
ライセンスでもOKだと思います。
0693デフォルトの名無しさんNGNG
すでに C++ や Win32API の知識があるのなら、
Object Pascal や Delphi 流のアプリの組み方を覚えなくて良い分
VC++ の方が簡単かもしれません。
GUI を作ることと、既存のコンポーネントを利用して出来る範囲に限って言えば
VB と同じくらいに簡単で VB 以上の表現力を持っています。
それ以上のことをしたいならば、オブジェクト指向や
Delphi におけるプログラミングテクニックを学ばなければいけませんが、
これは VC++ においても状況は変わらないでしょう。
0694デフォルトの名無しさんNGNG
>691
VC++にしなさい。
ゲーム作成に一番よく使われていて、就職にも困らないよ。
0695デフォルトの名無しさんNGNG
両方やってみたらいいんじゃないの?

Delphi知ってる事が荷物になるわけじゃないし
C++がそんなに難しい言語って事でもないし

片方で詰まったらもう一方に乗り換えるのを繰り返すのが上達が速いかもね
0696デフォルトの名無しさんNGNG
DelphiでWindowsプログラミングの基礎を掴んで、VCへ移行。
これ最強。
0697デフォルトの名無しさんNGNG
>片方で詰まったらもう一方に乗り換えるのを繰り返すのが上達が速いかもね
ただの二度手間
0698デフォルトの名無しさんNGNG
>>696
ただし、Windows依存とそうでないものが区別できなくなるという危険も伴う、諸刃の剣。
0699デフォルトの名無しさんNGNG
文字列の可変長多重配列ポインタを関数に渡すの面倒臭いんで
すぐDelphiに逃げちまうな
悪い癖だ(w
0700デフォルトの名無しさんNGNG
まあ、おまえら素人はバッチファイルでも作ってなさいってこった
0701 NGNG
別のサブルーチンに飛ばすにはどう書けばいいのでしょうか?
(TForm1.Button1ClickからTForm1.Button2Clickに飛ばすというような)
探したんだけど見つからない…
0702デフォルトの名無しさんNGNG
VirtualTreeViewの使い方がサパーリわかりません。
サンプルソース、ワケワカメだし…
ネットで解説ページを探してみても、それらしいのは見つからないし…

これはサンプルを読めるようになるか、市ねって事でしょうか?
0703デフォルトの名無しさんNGNG
VirtualTreeViewじゃねえや、VirtualListViewだ…
やっぱり死のう…
0704デフォルトの名無しさんNGNG
>>701
Button2Click(sender);
じゃないのか?
0705701NGNG
>>704
うわー本当だ
ありがとうございました
0706DelフサギコNGNG
  ∧,, ∧
  ミ。_。彡   ペコッ
〜ミ,,,U U,,ミ 且~~  あけましておめでとうございます。

   ∧,,∧      / ̄
  ミ,,゚Д゚彡  <  Button2Click(nil)でもいいよ
  ミ つ且~~   \_
〜ミ,,,,,, ,,ミ
日本Delphi振興会
・SenderのないprocedureからSenderを持つprocedureを呼ぶ。
http://hp.vector.co.jp/authors/VA009712/take/delphi/kabedel.htm#sender
0707デフォルトの名無しさんNGNG
Delphiの最大の利点て あっというまにコンパイルじゃないの?
Delphi使ったら例えVCLやIDEがだめでも他にいけないと思うよ。
特にBCBは最悪、
>>702 わかんないときはまとめてコンポーネント化しているもの使えばよいのでは?

>>698 Window以外の環境なんてないと思ったほうがいいのでは?
仕様とかデザインとかファイルフォーマットとかプロトコルさえ抑えていれば
どうにでもなると思う。

例えば外注に丸投げするとき必要なのはプログラムソースではない。
いまできる最大限のことをやれ゛いいんじゃないかとおもうのです。
それっていまのDelphiの逆だけど...

http://halbow.cool.ne.jp/ShousaiIndex.html
とか
http://bonanzas.rinet.ru/
にいくとWin専用機としてのDelphiの可能性が見えてくる。
あと
http://www.sulaco.co.za/
もはずせないな全部非VCLのサイト
0708デフォルトの名無しさんNGNG
>>707
高速コンパイルこそが唯一にして不可侵の Delphi 最大の利点に同意
これに慣れると他の物が使えない諸刃の剣
0709デフォルトの名無しさんNGNG
俺もPascal知らなかったからBCB使ってたけど、試しにDelphi使ってみたら
コンパイル速度に驚愕。それ以来ほとんどDelphiだなぁ。
0710デフォルトの名無しさんNGNG
マシンスペックが上がったらコンパイル速度は
差が縮まると思っていたが、いまだに開いている。
友人のVCユーザは未だにうらやましがっている。

Javaの実行速度が問題なくなるくらいまでは(w
しばらくはDelphiのコンパイル爆速神話は続くと思われ。
0711デフォルトの名無しさんNGNG
ていうか、ここQuake2をDelphiに移植しようとしてるんだけど(藁
http://www.sulaco.co.za/quake2/
0712デフォルトの名無しさんNGNG
>>711 Sullacoの64kbyteでもはD6でコンパイルすると192kに...(藁

Geforceのコードは使っていないけれど
Pickingのサンプルとかあるのでよろしい。
Quake2というよりすでにMD3ファイルローダはできてるようだ

あとDelphi3DとかGLSCENEなんかもよいのだが...
0713デフォルトの名無しさんNGNG
許諾コードって何回取得してもチェックしてないんだと。
だから毎日クリーンインストールして取り直してもOK

あとD6の製品版は不良品だけど作っちゃったから10/18のパッチはあてないんだと..
そんなんが日本の法律でOK?

あとライセンスでは1台のPCといっているけれど
向こうの認識は1台のPC、1つのOSでデュアルブートで常時1台しか動いていないけれど
OSは違うというのはだめだけれども記述に誤りがあるという認識らしい。

ということで基本的に不正コピーしなければボーランドのライセンスは
法的根拠が何もないし、罰則もない
ボーランドに法律関連を扱う部署や品質管理の部署はないみたいなので
訴訟の心配もない、個人情報の搾取も会社レベルではやってない

ということでプロ版かって再インストールとかで二の足踏んでいる人は
安心してアンインストール再インストールできると思います。

逆に将来性が薄いのでただだからといういってPersonal版やるくらいなら
freePascalにいったほうが良いです。
0714デフォルトの名無しさんNGNG
許諾コードって?
普通は許諾一回取ったら再インストールしてもレジストリから復元するんじゃないの?
そんなメンドクサイ事しないでしょう
0715デフォルトの名無しさんNGNG
>>714 基本的にWindows2000ではいまだに許諾コード取得のバグがあるそうで
管理者権限以外では許諾コードをユーザーごとに取り直さないといけないそうです。

それにやってないけれどアンインストールして情報残っていたらアンインストールとはいえないのでは?

基本的にWin2KやWinXpでDelphiを使うのは無理っぽいのでWin-MeのHDDにしようと思うのですが

許諾は何回とっても関係ないという情報は特に初心者向きだと思うのでこのスレに書きました。
あと未許諾でコンパイルしても特に影響はないそうです。
0716デフォルトの名無しさんNGNG
>>715 みんな黙ってるだけで、
  レジストリのどこにソレがあるかくらいは判ってると思われ
0717質問NGNG
Delphi6の初心者向け勉強サイトで
いいところ知ってる人いる?
グーグルで検索しても何年も昔の
しかもあまり詳しくないのしか出てこないYO!
プリーズ!
0718デフォルトの名無しさんNGNG
初心者向けって いったい どこが判らないのよ?
0719717NGNG
どこがわからないと言うか
なにもわからないのが現状・・
一番初歩の初歩から学びたい今日この頃・・
0720デフォルトの名無しさんNGNG
Delphi、どこで買ったらいいの?
0721デフォルトの名無しさんNGNG
一ヵ月後に俺が作ってやるから待ってろw
0722717NGNG
本気で激しく希望!!
つーかいいサイト知らない?
0723デフォルトの名無しさんNGNG
本買え
0724 ◆woDeLPHI NGNG
>>717 じゃ今から やってみたげるから
ファイル(F)->プロジェクトを開くで
 Demos\doc\TextEdit\ のTextEdit.dprを開いてみて
0725717NGNG
>>724
開いた!
ボタンが1つ出てきた!
あっちなみにPesonalね!
0726 ◆woDeLPHI NGNG
まずコンパイル&goしてみよう やり方は判る?
 プレイボタンみたいなのか 実行->実行(F9)ね
0727717NGNG
実行できたけどこれは一体?
RichTextファイルを開くもの?
自分で作るには?
0728 ◆woDeLPHI NGNG
じゃ、それを終了して MDIFrame.pas を開いてみよう
 方法は、表示->ユニットの表示とか表示->プロジェクトマネージャから選択ね
0729 ◆woDeLPHI NGNG
最初は画面に文字を書いてみよう

F12 を押して TextEdiorと書かれたフォームを手間に持ってきて
 フォーム内のグリッドの中央をクリック
F11を押してオブジェクトインスペクタを出し イベントをクリック
OnPaintというのを探してクリック
 その右の空白の 部分をダブルクリック

これで以下のような状態になる筈 なった?

procedure TFrameForm.FormPaint(Sender: TObject);
begin

end;
0730717NGNG
このプログラムの意味がサパーリ・・
Object Pascalだっけ?
0731 ◆woDeLPHI NGNG
つぎは その間に
procedure TFrameForm.FormPaint(Sender: TObject);
begin
Canvas.TextOut(20,20,'こんにちは');
end;

と1行入力して 実行してみよう
0732717NGNG
ちっちゃくこんにちはって出てきた!!
これはテキストを表示させるものらしい?
0733717NGNG
ごめんアナウンサー見たいんで落ちます
でぁでぁ
0734 ◆woDeLPHI NGNG
procedure は手続きを定義しますという意味
TFrameForm.FormPaint は手続きの名前。
 ドットが間にあるから、これは手続きでもメソッドと呼ばれるもので
 TFrameFormというクラスの FormPaintと いうメソッドを定義しますという意味
 意味判らんでも覚えてね

で、(Sender: TObject); は引数。 とりあえず無視してOK

begin 〜 end; はブロックで、 この間が関数の本体になるわけ

追加した Canvas.Text の意味とかは そこにキャレットをあわせて F1を押して調べてね
0735デフォルトの名無しさんNGNG
>>717
サイトでなないが
ヘルプ-Delphiヘルプ-チュートリアル:テキストエディタアプリケーション
では駄目か?
0736717NGNG
おおぉーー!
難しいがなんとなく理解!
感謝感謝!こんな感じで他のもできる?

ちなみに733は贋物!
0737717NGNG
>>735
サンクス!気づかなかった!
これでいいもの作ってみんなにあげるから待っててくれ!!
0738デフォルトの名無しさんNGNG
次に717は
「すみません、ActionManagerが見当たらないんですが…」
と言う
0739 ◆woDeLPHI NGNG
たぶんね。

>717
 ActionManagerの代わりに StanderdタブにあるActionListを使います

しかし
\Program Files\Borland\Delphi6\Source\Vcl\ActnRes.pas

はどうしようか?
0740デフォルトの名無しさんNGNG
>>712
> Sullacoの64kbyteでもはD6でコンパイルすると192kに...(藁
本当だ(w
readme.txtにDelphi5ってかいてあるけれど、それでも60KByteなんていかねって。
upxで圧縮も解凍も出来ないところから、何か別のexe圧縮使っているとみた。
0741 ◆woDeLPHI NGNG
【アクションマネージャにアクションを追加する】まで来たら
【イメージリストにイメージを追加する】まで2ページ飛ばして
1、ファイル->新規作成->フォーム
2、オブジェクトインスペクタ-> Name欄をForm2から StandardActions に
3、フォームの上でマウスの右ボタンでテキストで表示を選ぶか ALT+F12
4、ファイル->開く-> ファイルの種類を全てのファイル(*.*) にして
  Lib\ActnRes.dfm を開く
5、編集->全て選択(ctrl+A) の後コピー(Ctrl+C)
6、タブでUnit2.dfmを選び、編集->全て選択(ctrl+A) の後貼付(Ctrl+A)
7、ALT+F12でフォームを表示
8、あとは、HELPに書いてあるようにImageList1をコピーする
  まだActionListもついでにコピーする

そしてこのページからActionManagerを ActionList1 コンポーネントと読み替えます

【メニューの追加】
ActionMainMenuBar も無いので StanderdにあるMainMenuを使います
これを貼り付けてダブルクリックして適当にメニューを追加し
ここのメニューのActionプロパティに設定してゆきます
0742 ◆woDeLPHI NGNG
しかし、ホント D6パーソナルには D5 のチュートリアルを付けるべきじゃないのか?
0743デフォルトの名無しさんNGNG
http://www.text2music.com/mine/delphi/index.html
とか
http://hp.vector.co.jp/authors/VA015233/pascal/Pascal2Delphi.htm
とかでPascalの基礎を学んだ後、
http://home.onestop.net/mineko/index2.html
でDelphiの基礎を学べばいいと思われ。
んで、この後はそこらへんにあるTipsサイトで済ませる。

でも、まじめにプログラミングを学びたいなら、
やっぱ本買った方がいいよ。
0744デフォルトの名無しさんNGNG
つーか、こんなこと、どっかチャットでやらんか?普通。
0745 ◆woDeLPHI NGNG
>744 スマン 1回やってみたかんだ
 というか1回やったら記録残るから2回やらんでいいしと
0746デフォルトの名無しさんNGNG
あのー、「ソースファイルがみつかりません:classes.pas」、っていうダイアログが出るんですが、
どうすればいいんでしょう?

ちなみに日経ソフトウェア2月号の郵便番号検索を初めてパソ版で作ってるんですが・・・
0747デフォルトの名無しさんNGNG
>>746
アップデートを当てろ。
0748746NGNG
>>747
いやお恥ずかしい、すいません。
0749デフォルトの名無しさんNGNG
例外出すとワケワカメなヤツのソース要求されるヤツじゃないの?>>746
アレ、直らんのかな?
最初は「ハァ?」って思う。
例外なら「例外よ♥」って出てくれ。
0750DelフサギコNGNG
   ∧,,∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡  <  だから、パッチ宛ててってば。
  ミ つ且~~   \ dcuがデバッグ版らしいので
〜ミ,,,,,, ,,ミ       パソナるなのにソースを要求されるようだ
            と、ボランドNEwsGで報告があたよ.
0751超初心者NGNG
FileNameの文字列をフルパスじゃなくて、ファイル名だけ欲しい場合は
どうすればいいですか?
0752素数2NGNG
>>751 たぶん
ExtractFilename(パス付きファイル名); string で返ってくる。
0753デフォルトの名無しさんNGNG
ExtractFileName
0754デフォルトの名無しさんNGNG
>>752-753
おおっ、素早いレスありがとうございます!
早速やってみますね
■ このスレッドは過去ログ倉庫に格納されています