トップページ⇒tech
988コメント302KB

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001Delモナー ◆fPymXWHY NGNG
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________

前スレ モナーの *やさしい* Delphi質問スレ Ver.6
http://pc.2ch.net/test/read.cgi/tech/1019134412/

前スレが埋まるまでは書き込まないで
(あるいはsage進行にして)ください。

>>2-10あたりに関連情報あり
○過去スレ >>2
○関連スレ >>3-5
○Delphi製品情報 >>6
○関連リンク >>7
○質問者へ・回答者へ >>7
○ソース置き場案内 >>8
0809デフォルトの名無しさんNGNG
>>794
C言語に必要な知識はほぼ身につくけど、いざ移行するとCのバルキーな
言語仕様に鬱になる罠。
C++には若干不足もあるけど、やっぱり役立つ。でもCの時と同じ罠が・・・

最近ではC#がいーみたいです。漏れは良く知らないけど。
まぁそんなこと心配してるよりDelphiの勉強を始めた方が良い事は確か。
杏より梅が安し、ってやつです。
0810当たって砕けろNGNG
本気でバカですいません。鬱。
0811デフォルトの名無しさんNGNG
>>808
お前みたいなホームラン級のバカもいるしな(藁
0812傍観者NGNG
Cのコードは読めるが書けない。

漢字読めるけど書けないのと同じかな?
0813デフォルトの名無しさんNGNG
>>812
単に必要がないからでしょ
必要になったら書けるよ
0814三村3NGNG
>>740 Parent変更するだけだろ!!

 with Form2 do
 begin
   BorderStyle:=bsNone;
   Top:=0;
   Left:=0;
   Parent:=Self.TabSheet1;
   Show;
 end;

>>791 複合かよ!!
>>793 1chかよ!!
>>798 点数があんのかよ!!
>>799 押してーよ!! でも、押せねーよ!!みないな。
>>807 ぴゅー太かよ!!
>>808 空手バカかよ!!
>>809 果実かよ!!
>>810 本気かよ!!
>>811 ホームラン級かよ!!
>>812 漢字とは違うだろ!!
0815もじもじNGNG
質問です。
var
L,S,T:Strings;

で、関数をいろいろ使用した後に

L := S+T;
とした時に
LにSの文字列しか入りません。

L := T+S;
とすると、今度は
LにTの文字列しか入りません。
これは、どのような可能性が
考えられるのでしょうか?
0816デフォルトの名無しさんNGNG
>>815
そもそもオブジェクトなのに足せるのか
0817もじもじNGNG
訂正です。
L,S,T:Strings; 誤

L,S,T:String; 正


0818もじもじNGNG
それから
末尾にへんなものでも付いてる?
と思い

delete(t,length(t)-1,1);
L := t+s;
showmeseage(L);
としても、末尾の')'が'・'と表示され
ただけでした。
0819無責任だがNGNG
>>815 一番に 考えられるのは S,Tに#0 が含まれいるという事です。
0820無責任だがNGNG
>>818
delete(t,length(t)-1,1);
は t:='123' とすると結果は '13'が残るように思います

#0を消すには
S:=PChar(S);
T:=PChar(T);
L:=S+T;
としてみて下さい。
0821デフォルトの名無しさんNGNG
おそらく厨房な質問で申し訳ありませんが・・・

TData = class
Data : array[1..8,1..1100] of Integer;

procedure TForm1.button1Click(Sender: TObject);
begin
for i:=1 to n do Data[i]:=Data.create; //nは数百ぐらいの任意の数
// 処理
end;

procedure TForm1.button2Click(Sender: TObject);
begin
for i:=1 to n do Data[i].Free;
close;
end;

ヘルプなぞみてここまではできました.
処理はうまくいきます.
しかしアプリを終了するときにエラーが出てしまいます.
メモリーが開放されていないようなのです.
何が足りないのが教えてください.
0822もじもじNGNG
>>820
できました。

ただ、何故この方法で、#0が
消えるのかが、まだ理解できて
ませんが・・・、
ありがとうございました。

deleteに関してはたしかにそうですね。
0823デフォルトの名無しさんNGNG
>>821
  書き間違いが多くて判りません。 ちゃんと書きなおしてみて下され

Dataは整数の配列なの? それとも TDataの配列なの?

そして2次元配列ではないの? さらに、Data.Create はTData.Createの間違い?
0824デフォルトの名無しさんNGNG
>>821 何もかもオカシイよ!!
0825デフォルトの名無しさんNGNG
デルファイでつくったプログラム、面白いゲームとかが
沢山DLできるページがあったら教えてください。
0826デフォルトの名無しさんNGNG
>>825
意味不明。
0827デフォルトの名無しさんNGNG
Extended型の変数の値をString型に変換して代入する方法を教えてください。
低レベルな質問ですいませんが、よろしくお願いします。
0828827NGNG
FloatToStrでできました。どうもありがとうございました。
0829ANGNG
>>821
Data : array[1..8,1..1100] of Integer;
と定義しているのだから、そもそも、
Data[i]:=Data.create;
なんていう代入は出来ないのでは?

てか、このままだと、コンパイルとおらないと思うから
実際に書いたのはこうじゃないはず・・・。
元のソースから、コピペで抜き出してみれ。
0830デフォルトの名無しさんNGNG
>>825
http://www.vector.co.jp/
0831デフォルトの名無しさんNGNG
>>828
自己解決してるのに何がありがたいんだYO!
0832821NGNG
あまり長くなっては思いはしょりました
すいません

type
TData = class
Data : array[1..8,1..1100] of Integer;
var data1: array of Tdata;

procedure TForm1.button1Click(Sender: TObject);
var i: intger;
begin
for i:=1 to n do Data[i]:=Data.create; //nは数百ぐらいの任意の数
// 代入
// 処理
// 保存
end;

procedure TForm1.button2Click(Sender: TObject);
var i: intger;
begin
for i:=1 to n do Data[i].Free;
close;
end;

です.
よろしくお願いします
0833821NGNG
type
TData = class
Data : array[1..8,1..1100] of Integer;
var data1: array of Tdata;

procedure TForm1.button1Click(Sender: TObject);
var i: intger;
begin
for i:=1 to n do Data1[i]:=Data.create; //nは数百ぐらいの任意の数
// 代入
// 処理
// 保存
end;

procedure TForm1.button2Click(Sender: TObject);
var i: intger;
begin
for i:=1 to n do Data1[i].Free;
close;
end;

また間違えてましたすいません
0834821NGNG
for i:=1 to n do Data1[i]:=Data.create; //nは数百ぐらいの任意の数
↓
for i:=1 to n do Data1[i]:=TData.create; //nは数百ぐらいの任意の数
              ----
の間違いでした
たびたびすいません
0835821NGNG
ちなみに
エラーは終了ボタンを押したときに以下のように出ます
”プロジェクト*.exeがEInvalidPointerクラスの例外を生成しました
無効なポインタ操作”
と出ます
どこがいけないのでしょうか?
厨房でスマソ
0836デフォルトの名無しさんNGNG
どこが違うって言われてもなあ…
とりあえずData1の大きさをsetlengthで指定しる。
0837821NGNG
えーとそれはやってます
入れとくべきでした
0838Delフサギコ ◆zE1iiRdQ NGNG
                   _____________
    ∬   ∧,,∧      /
     ~━っミ ゚Д゚彡,,    <  ソース自体むちゃくちゃで
    ∀._(,,,~  ,,,~⊃_   \しかも小出しだしなー...
━┳┷ |. ,(~ヽ,,,ミ.         ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ┃...| ̄ ̄し'J.  ̄ ̄ ̄ しんどいぞ....
  ┻ ヽ ̄ ̄ ̄ ̄ ̄ ̄ ̄

最小限の再現ソースをかくといいかも。
>>それを書くことで自分の理解も深まって
  結果的にバグが取れるかもね。
0839821NGNG
仰せのおうり
再現ソース書いてみます.
すれ汚してすまそ
0840デフォルトの名無しさんNGNG
バグは821の頭の中にあるようです
0841821NGNG
どこがむちゃくちゃかどうかも分からない厨房なので
はずかしいのですが・・・
以下のようにを書いて見ました
ボタン1を押してボタン2を押すだけでエラーが出ます.
エラーは835と一緒です.
どこがだめなのかヒントでも教えてください
お願いします

****************
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
TData= class
data: array[1..8,1..1100] of Integer;
end;

var
Form1: TForm1;
Data1 : Array of TData ;
n : integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
n:=120;
SetLength(Data1,n);
for i:=1 to n do Data1[i]:=TData.create;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
for i:=1 to n do Data1[i].Free;
close;
end;

end.
0842デフォルトの名無しさんNGNG
>>825
付属のもう1枚のCDに。
0843デフォルトの名無しさんNGNG
>841
SetLengthした後で Low(Data1) と High(Data1) を見てみれ。
0844デフォルトの名無しさんNGNG
>>821
Delphi ヘルプより。
>動的配列の添字は常に整数であり,0 から始まります。
つまり Data1[n] にはアクセスしちゃ駄目ー
0845821NGNG
843様,844様
ありがとうございます.
そんな基本的なことに気がつかないなんて・・・
これだから初心者から抜け出せないのですね.
精進します
0846デフォルトの名無しさんNGNG
>>841-845
つーか、このソースが動いたとして何がしたいの?
根本から何か間違っていると思うのはおれだけなのか?
0847デフォルトの名無しさんNGNG
何処かに連想配列コンポとかありませんか?
0848805NGNG
誰か知らない?
0849デフォルトの名無しさんNGNG
>>806
って、他の掲示板でもexeがどーのこーのって質問してない?
0850デフォルトの名無しさんNGNG
>>848,805
>っていうか、WMとCMの違いってなんだ
>TFrom内にもWM_ACTIVATEとCM_ACTIVATEとあったりして
>わけわかんねー
0851デフォルトの名無しさんNGNG
WMは正式なWindowsメッセージ。
CMはVCLが内部的に使ってる裏メッセージ。
0852Delフサギコ ◆zE1iiRdQ NGNG
   ∧,,∧   / ̄
@,,,ミ,,゚Д゚彡 < とりあえず>>841のソースでうごきますた。
⊂,,,,,,,,,つつ.   \_
 LowとHighあたりは間違いの元だけどね。
0853デフォルトの名無しさんNGNG
nに寒気を感じたのは俺だけですか?
0854デフォルトの名無しさんNGNG
MIDI音源を制御するコンポーネントとかありませんか??
0855デフォルトの名無しさんNGNG
>>854
Delphian World へ行って MIDI で検索する。
MIDI音源を制御するコンポーネントとかがあります。
0856デフォルトの名無しさんNGNG
>>847
TStringList.Objects[]使えばできる。
0857デフォルトの名無しさんNGNG
Delphiで作ったアプリを「左右に並べて表示」をすると、
画面半分の大きさで表示されるんですけど
正しく表示させるにはどうすればいいですか?
0858デフォルトの名無しさんNGNG
>>857
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=051302
0859857NGNG
>>858 さんありがとうございます。

この修正、結構厄介なんですね(^^;
0860Delフサギコ ◆zE1iiRdQ NGNG
   _____     __________
 /:\._____\  /
 |: ̄\ ミ,,゚Д゚ミ  < こちらのに含まれているのを
 |:   :|: ̄U U ̄:|  \使ってみるのはどうかしら。
 マダ シゴトチウ..........

http://pc.2ch.net/test/read.cgi/tech/1022921598/63
0861デルファイマスター@一週間NGNG
いつになったらDelphi 7は発売されますか?
0862デフォルトの名無しさんNGNG
>>861
そういう言い回し流行ってるの?
0863857NGNG
>>860
ありがとうございます。

ただ、sample見ないで貼り付けて実行したら、
フォームが消えました(^^;

もう少しsample読みます。
0864デフォルトの名無しさんNGNG
>>861
今年の年末です
0865デフォルトの名無しさんNGNG
>>861
いい子にしてたらサンタさんが(略)
0866デフォルトの名無しさんNGNG
Delphi6 personalバージョンについて質問です
Delphiを起動するときってかならずForm1とUnit1.pasが表示されますよね。

Delphiを起動したときに、コンソールアプリを作成するようにしたいんですが
いちいち新規作成→コンソールアプリケーションを選ぶのも面倒なので
起動直後からコンソールアプリを作成するにはどうしたらいいでしょうか?

あと
{ TODO -oUser -cConsole Main : ここにプログラムコードを書いてください }
ってのが激しくいらないんですが、消すことはできますか?やり方を教えてください
0867デフォルトの名無しさんNGNG
>>866
DCC32使えば?
0868デフォルトの名無しさんNGNG
>>866
メモ帳でも開けば?
0869デフォルトの名無しさんNGNG
DCC32って何ですか?
0870デフォルトの名無しさんNGNG
>>869
「検索」って知ってる?
0871デフォルトの名無しさんNGNG
私の辞書に、検索という文字はない。
故に辞書も検索できない。
0872デフォルトの名無しさんNGNG
1点
0873デフォルトの名無しさん NGNG
>>869
コマンドラインコンパイラのこと。
0874デフォルトの名無しさんNGNG
>>866
あらかじめコンソールアプリの雛型をどこかに作っておいて
そのショートカットをスタートメニューに入れればいいんじゃない?
0875デフォルトの名無しさん NGNG
バージョン番号が大きいほど優れていると錯覚してる初心者が多いから
Delphiの次製品はコンパイラのバージョンのDelphi 15 にすればいいかも。
0876デフォルトの名無しさんNGNG
>>866
新規作成にコンソールアプリってのがなかった?
0877デフォルトの名無しさんNGNG
>>876
それが面倒なんだと( ´∀`)
0878デフォルトの名無しさんNGNG
>>866
どっちもリポジトリ使ったらできた。でも、余計な作業も増えた。
0879デフォルトの名無しさんNGNG
>>875
P-RateだとかAthlonXPのほにゃらら+とかみたいで、
なんか嫌。
0880デフォルトの名無しさんNGNG
Delphi6でExcelをOLE埋め込みすると、一部分しか表示できないのですが、
全体を表示させる方法はありませんか?
(スクロールさせても下のほうが切れてます)
0881デフォルトの名無しさんNGNG
インターネットに接続しているかどうか判定する方法はありますか?
0882デフォルトの名無しさんNGNG
>>881
電話がつかえなかったらインターネット中です。
0883デフォルトの名無しさんNGNG
ダイヤルアップ ユーザー ハッケソ
0884881NGNG
>>882
(;´д⊂ イジワルしないで教えてください
0885デフォルトの名無しさんNGNG
>>881
どっかにpingしてみる。

(ルータ経由だと実際に通信してみるしか確実な方法は無い)
0886デフォルトの名無しさんNGNG
>>885
ping先の鯖が落ちていたら確実じゃない罠
0887881NGNG
確実な方法はないということですか?
あまり確実だなくてもいいので、一般的にはどういうほうほうでネット接続を検知しているのでしょうか?
0888デフォルトの名無しさんNGNG
>>887
ルータなしに限るなら(ダイアルアップなら)方法はあるが、ユーザーにあらかじめ
そうなのかを聞いておかないとね。
0889デフォルトの名無しさんNGNG
uses WinInet;

function IsInternetConnected: boolean;
var
ConnectType : DWORD;
begin
ConnectType := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState(@ConnectType, 0);
end;
0890881NGNG
>>888
どういう方法でしょうか?
よかったら教えてください・・・

>>889
ありがとうございます、試してみます!
0891デフォルトの名無しさんNGNG
Delphi6でAccessデータを取得するには
BDEしか手段がないのですか?
BDEはEnterpriseかProfessionalには付属してるとのことなので
それを購入したらいいのかな・・・
DOAでも可能?
0892デフォルトの名無しさんNGNG
DOAってなんだよ…
DAOのつもりなのかADOのつもりなのか…
0893名無し@891NGNG
>>892
あぁぁ・・・
すんませんすんませんすんません・・・
DOAなんてないんですね・・・
DAOとかADOってのもわかってないんですが
DAOってOraclとかのエンジン?

0894デフォルトの名無しさんNGNG
>>891
ADOコンポーネントで可能。
BDEでもできるけど、AccessはメインじゃないからADOがよい。
ADOならAccessの入ってないパソコンでもMDBを操作できる。
0895デフォルトの名無しさんNGNG
ODA 政府間開発援助・・・
0896デフォルトの名無しさんNGNG
ポケコンにDelphiをインストールしようとしましたがなかなかうまくいきません。
どうすればよいですか?
機種はPC-G850Sです。
0897デフォルトの名無しさんNGNG
>>896

ネタはマ板でやっとくれ。
0898名無し@891NGNG
>>894
おぉ!ありがとうございます
BDEは端末にいちいちインストールしないといかんのですね
ADO 調べてきます
多謝です
0899デフォルトの名無しさんNGNG
DOA: テクモが出してる格闘ゲーを装ったギャルゲー
0900名無し@891NGNG
アフォ晒しついでに思い切って聞いてしまおう
MDBって・・・なんですか?(泣
0901デフォルトの名無しさんNGNG
891が取得したいデータが入っているファイルの拡張子。
0902894NGNG
>>898
ここが本家サイトだから読むといいよ。
http://www.microsoft.com/japan/msdn/data/default.asp

簡単に言うと、マイクロソフトのデータベース戦略が「Universal Data Access」
これは、データベースに限らず、すべてのデータを一元管理しようという思想。
で、この思想を支える技術が「OLEDB」。データの種類ごとにCOMを用意して
すべてのデータにアクセス出来るようにしようとする技術。
で、このCOMを汎用的に操作できるクラスライブラリが「Active Database Objects」
すなわちADO。ActiveXだから、これに対応した開発環境ならばADOが使える。

我々が作る場合は、まず、どのデータを操作するか、適したOLEDBプロバイダを
選択する。んで、ADOのライブラリを使って操作する。

Delphiの場合は、ADOのライブラリも使えるけど、BDEやその他のDBコンポーネントと
互換性を持たせるためにTDataSetから派生させたADOコンポーネントを使う。
だから、Delphiで使う場合は、ADOのライブラリよりもTDataSetのプロパティや
メソッドを中心に使うとよい。Delphiとの親和性が高くなる。
0903名無し@891NGNG
>>901
あぁぁ
ありがとうございます
そっか(W

>>902
うわーい
ご丁寧にありがとうございます
とっかかりがわからなくてさんざん調べていたのですが
これだけ糸口をいただけるなら
しばらく勉強しつついろいろと調べてみます
VB6ならprofessionalがあるのですが
Delphiでやってみたくて 購入する版から苦悩ちうなんです

3文字やら4文字のアルファベットの羅列で
頭が混乱してるので とてもありがたいです
ありがとうございます
0904894NGNG
>>903
がんばってね。ADOだけならProfessionalで十分活用できるよ。
0905名無し@891NGNG
>>904
がんばります!
0906デフォルトの名無しさんNGNG
Delphi Personal箔"闌gq"逐÷・摩・・・Aインストールk"・摩・_メs"・B
t項準・・・・lw"・・・・÷楳÷摩・・・Ha・・・ム逐・準・・BOSw"vibр盾翌唐les"・B
0907デフォルトの名無しさんNGNG
>>906
お名前と国籍を教えてください。
0908デフォルトの名無しさんNGNG
>>906
Japanese OK?
レス数が900を超えています。1000を超えると表示できなくなるよ。