Delphi初心者のための寺子屋
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2005/11/23(水) 23:31:080002デフォルトの名無しさん
2005/11/23(水) 23:38:37Delphi関連のスレがいくつあると思ってんだ?
既存のスレを利用しろ池沼
/* 終了 */
0003デフォルトの名無しさん
2005/11/23(水) 23:58:22俺はやらないが…
0004デフォルトの名無しさん
2005/11/24(木) 00:57:02糞言語氏ね
0005デフォルトの名無しさん
2005/11/24(木) 01:36:100006デフォルトの名無しさん
2005/11/24(木) 02:51:060007デフォルトの名無しさん
2005/11/24(木) 09:28:170008デフォルトの名無しさん
2005/11/24(木) 09:56:470009デフォルトの名無しさん
2005/11/24(木) 10:34:28//ここから問題文
次は、例外処理の締めとしてRaiseを使おう。
ファイルが開けないときは
writeln(filename)した後、今の例外処理(Writeln(E.Message);)
を実行するように、
また、読み込みエラーのときは、E.Messageの内容を
"読み込めねー"
に変更してみてみてくれ。どちらも Raise を使えば簡単にできる。
//ここまで問題文
0010デフォルトの名無しさん
2005/11/24(木) 10:34:51const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
begin
sum:=0;
try
AssignFile(fp, filename);
Reset(fp);
try
while (not Eof(fp)) do
begin
Readln(fp, str);
sum:=sum+StrToFloatDef(str, 0);
end;
writeln(FloatToStr(sum));
finally
CloseFile(fp);
end;
except
on E: Exception do Writeln(E.Message);
end;
end.
0011デフォルトの名無しさん
2005/11/24(木) 10:36:03sum:=0;
try
AssignFile(fp, filename);
try
Reset(fp);
except
Memo1.Lines.Add(filename);
raise;
end;
try
while (not Eof(fp)) do
begin
try
Readln(fp, str);
except
raise Exception.Create('よみこめねー');
end;
sum:=sum+StrToFloatDef(str, 0);
end;
Memo1.Lines.Add(FloatToStr(sum));
finally
CloseFile(fp);
end;
except
on E: Exception do Memo1.Lines.Add(E.Message);
end;
0012デフォルトの名無しさん
2005/11/27(日) 18:53:410013デフォルトの名無しさん
2005/11/27(日) 21:46:37◎
これで例外処理関係はOKだと思うがどうだろう?
それでは次は文字列処理かな。
入力された文字列から'='を探し出し、
(=より前の文字列)'は、'(=より後ろの文字列)'です。'
という出力、および、処理にかかった時間を出力
するプログラムを作ってみてくれ。
0014デフォルトの名無しさん
2005/11/28(月) 00:18:180015デフォルトの名無しさん
2005/11/28(月) 02:18:02レスアンカーつけないと誰に言ってるんだか分かりませんよd(^-^)b
0016デフォルトの名無しさん
2005/11/28(月) 03:09:04'='の左と右を分けたいわけね。
0017デフォルトの名無しさん
2005/11/28(月) 03:31:560018デフォルトの名無しさん
2005/11/28(月) 16:40:00program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Types, MMSystem;
const
str='Delphi=399,000YEN';
var
i: Integer;
len: Integer;
StartTime: DWORD;
EndTime: DWORD;
begin
StartTime:=timeGetTime;
i:=1;
while str[i]<>'=' do
begin
Write(str[i]);
Inc(i);
end;
Write('は');
Inc(i);
0019デフォルトの名無しさん
2005/11/28(月) 16:40:36while i<=Len do
begin
Write(str[i]);
Inc(i);
end;
Writeln('です');
EndTime:=timeGetTime;
Writeln(Format('タイムは%d�_秒です', [EndTime-StartTime]));
Readln;
end.
//ここまで。よろしくお願いします。
0020デフォルトの名無しさん
2005/11/28(月) 23:16:12題を出したのとは別人だけども。
・題意は、入力文字列は固定ではなくReadLnで実行時に入力させることを意図していたと思われる。のでReadLnを使う。
・また、'='が見つからなかった場合の処理。
・ふたつめのwhileループは、ループ回数がループ開始前にわかっている。こういう場合は定石としてはforを使う。
・DelphiっぽくNowとTDateTimeを使ってみよう。
ていうかこのスレでいきなりtimeGetTime見て驚いた。
0021デフォルトの名無しさん
2005/11/28(月) 23:20:21PascalとしてはDoubleじゃなくRealのほうがいいね。
Delphiだとどっちでも同じ(64ビット倍精度浮動小数点)だけど。
…ちなみに精度が欲しければExtended(80ビット拡張精度)を使う、つーか
Delphiは浮動小数点の内部計算全部Extendedでやってるので、
実はExtendedで統一した方が変換ロスとか無くていい。
0022デフォルトの名無しさん
2005/11/29(火) 09:01:26program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i, j: Integer;
len: Integer;
StartTime: TDateTime ;
EndTime: TDateTime ;
Hour, Min, Sec, MSec: Word;
str: String;
begin
Readln(str);
StartTime:=Now;
len:=Length(str);
i:=1;
while str[i]<>'=' do
begin
Write(str[i]);
Inc(i);
0023デフォルトの名無しさん
2005/11/29(火) 09:02:09begin
Writeln;
Writeln('=が見つかりませんでした');
Readln;
Exit;
end;
end;
Write('は');
Inc(i);
for j:=i to len do
begin
Write(str[j]);
end;
Writeln('です');
EndTime:=Now;
DecodeTime(EndTime-StartTime, Hour, Min, Sec, MSec);
Writeln(Hour,'時間',Min,'分',Sec,'秒',MSec);
Readln;
end.
//ここまで。よろしくお願いします。
0024デフォルトの名無しさん
2005/11/29(火) 09:32:44◎
ただ、次の点をアップデートしていただけるとうれしい。
・文字列処理の習得を中心に考えているので結果(XはYです)の出力はまとめて
行うようにしてほしい。
・Delphi初心者がいきなりコンソールアプリから入るとは考えにくいので
できればGUIでお願いしたい。
・こちらではコンパイルして確認するわけではないのでコードすべてをアップする
必要はない(そのため細かいバグは見落としますがそれはゴメン)
0025デフォルトの名無しさん
2005/11/29(火) 10:19:21良いサンプルとかありませんでしょうか?
0026デフォルトの名無しさん
2005/11/29(火) 11:00:56ヘルプでTIniFileを検索して、あとは色々たどっていけばサンプルがあるけど、それじゃダメか?
0027デフォルトの名無しさん
2005/11/29(火) 12:13:12TIniFile検索してみたけどちょっとわかりずらいっす。
でもTIniFileを使うってのがわかったので助かります。
さんくす
0028デフォルトの名無しさん
2005/11/29(火) 18:30:10空文字列が入力されたら存在しないstr[1]をアクセスしにいかないか?
0029デフォルトの名無しさん
2005/11/29(火) 18:48:21if len=0 then
begin
exit;
end;
修正しました
0030デフォルトの名無しさん
2005/11/29(火) 20:52:30D7だとヘルプのテキスト検索で「TIniFile とTMemIniFile の使い方」
ここにサンプル載ってるけどダメか?
ちょっとコード書いてみて、具体的にわからない所があったら質問してみ。
0031デフォルトの名無しさん
2005/11/30(水) 13:05:590032デフォルトの名無しさん
2005/11/30(水) 17:12:15結果をまとめて表示、GUIをやりました
よろしくお願いします
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
len: Integer;
StartTime: TDateTime ;
EndTime: TDateTime ;
Hour, Min, Sec, MSec: Word;
str_src: String;
str_dest: String;
begin
str_src:=Edit1.Text;
StartTime:=Now;
len:=Length(str_src);
if len=0 then
begin
ShowMessage('なにか文字を入力してください');
exit;
end;
i:=1;
while str_src[i]<>'=' do
begin
str_dest:=str_dest+str_src[i];
Inc(i);
0033デフォルトの名無しさん
2005/11/30(水) 17:12:50begin
ShowMessage('=が見つかりませんでした');
Exit;
end;
end;
str_dest:=str_dest+'は';
Inc(i);
for j:=i to len do
begin
str_dest:=str_dest+str_src[j];
end;
str_dest:=str_dest+'です';
EndTime:=Now;
DecodeTime(EndTime-StartTime, Hour, Min, Sec, MSec);
Memo1.Lines.BeginUpdate;
Memo1.Lines.Add(str_dest);
Memo1.Lines.Add(Format('%u時間 %u分 %u秒 %u', [Hour,Min,Sec,MSec]));
Memo1.Lines.EndUpdate;
end;
//ここまで
0034デフォルトの名無しさん
2005/11/30(水) 20:35:52◎
文字列処理は大丈夫っぽいのでまとめてお題を出しちゃおう。
1 Pos(AnsiPos)関数を使ってみる
2 その他使えそうな標準関数がないか探して使ってみる
3 PCharを使ってみる
0035デフォルトの名無しさん
2005/12/01(木) 02:33:50あんたホントに理解してんの?
0036デフォルトの名無しさん
2005/12/01(木) 09:24:06日本語処理のことかな。
そこは出題意図ではないので別の機会で勉強してくれ。
0037デフォルトの名無しさん
2005/12/01(木) 10:18:010038デフォルトの名無しさん
2005/12/01(木) 10:23:44ごめんな。
俺だけがお題を出すのも限界があるから是非もっとよいお題を頼む。
0039デフォルトの名無しさん
2005/12/01(木) 10:42:02「このスレの1−38までを Memo1 にコピーして、「Delphi」という文字列が何度
現れたか数えなさい。
0040デフォルトの名無しさん
2005/12/01(木) 14:08:14begin
str_src:=Edit1.Text;
StartTime:=Now;
len:=Length(str_src);
eq_pos:=pos('=', str_src);
if len=0 then
begin
ShowMessage('なにか文字を入力してください');
exit;
end;
if eq_pos=0 then
begin
ShowMessage('=が見つかりませんでした');
Exit;
end;
str_dest:=copy(str_src, 1, eq_pos-1);
str_dest:=str_dest+'は';
str_dest:=str_dest+copy(str_src, eq_pos+1, High(Integer));
str_dest:=str_dest+'です';
EndTime:=Now;
DecodeTime(EndTime-StartTime, Hour, Min, Sec, MSec);
Memo1.Lines.BeginUpdate;
Memo1.Lines.Add(str_dest);
Memo1.Lines.Add(Format('%u時間 %u分 %u秒 %u', [Hour,Min,Sec,MSec]));
Memo1.Lines.EndUpdate;
end;
0041デフォルトの名無しさん
2005/12/01(木) 14:26:49回答1.DeleteとInsertを使う
Delete(str_src, eq_pos, 1);
Insert('は', str_src, eq_pos);
str_dest:=Concat(str_src, 'です');
回答2.出来合いの関数を使う
Borland - Delphi Q&A 文字列を一括置換するには
http://www.borland.co.jp/qanda/delphi/d0005103.html
回答3.正規表現を使う
TRegExpr - PukiWiki
http://onigiri.s3.xrea.com:8080/delphi/index.php?TRegExpr
※2と3は標準関数ではないですが見つけたので添えておきます
0042デフォルトの名無しさん
2005/12/01(木) 17:43:030043デフォルトの名無しさん
2005/12/01(木) 18:24:52天才あらわる
0044デフォルトの名無しさん
2005/12/01(木) 22:23:51PSrc:=AllocMem(len+1);
PSrcCopy:=PSrc;
ZeroMemory(PSrc, len+1);
for i:=1 to len do
begin
PSrc[i-1]:=str_src[i];
end;
while PSrc^ <> #0 do
begin
if PSrc^ = '=' then
begin
str_dest:=str_dest+'は';
end
else
begin
str_dest:=str_dest+PSrc^;
end;
Inc(PSrc);
end;
str_dest:=str_dest+'です';
FreeMem(PSrcCopy, len+1);
0045デフォルトの名無しさん
2005/12/01(木) 22:41:39PSrc := PChar(str_src);
でいいんでない?
0046デフォルトの名無しさん
2005/12/01(木) 23:10:52了解です。修正しました。
PCharとStringの変換が意外と楽で感激
PSrc:=PChar(str_src);
while PSrc^ <> #0 do
begin
if PSrc^ = '=' then
begin
str_dest:=str_dest+'は';
end
else
begin
str_dest:=str_dest+PSrc^;
end;
Inc(PSrc);
end;
str_dest:=str_dest+'です';
0047デフォルトの名無しさん
2005/12/01(木) 23:13:41p:=0;
cnt:=0;
str:=Memo1.Text;
len:=length(sword);
repeat
ap:=Pos(sword, copy(str, p, High(Integer)));
if ap>0 then
begin
p:=p+ap;
Inc(cnt);
Inc(p, len);
end;
until ap=0;
ShowMessage(IntToStr(cnt));
0048デフォルトの名無しさん
2005/12/01(木) 23:32:47文字列の添え字に間違って0を使ってしまってハマってしまいました
PCharのときは0から、それ以外(constやstring)は1からでいいんですよね?
p:=1;
cnt:=0;
str:=Memo1.Text;
PStr:=PChar(str);
len:=length(sword);
while PStr^ <> #0 do
begin
if PStr^ = sword[p] then
begin
Inc(p);
if (p=len) then
begin
Inc(cnt);
p:=1;
end;
end
else
begin
p:=1;
end;
Inc(PStr);
end;
ShowMessage(IntToStr(cnt));
0049デフォルトの名無しさん
2005/12/01(木) 23:32:52パチパチパチ、すばらしい
◎-3
減点は、この場合は問題ないだろうけど、日本語処理では Pos じゃなく AnsiPos
を使うこと。
いろいろ改良点があるけど
ap:=Pos(sword, copy(str, p, High(Integer)));
これがこの処理のキモ。でも、文字列コピーは最も効率悪い方法。
1MByte のテキストで検索文字列が1000回現れたら、1000回コピーする
ことになる。PChar をつかってなるべくコピーをしないで処理する方法を
考えるのが次のお題。
0050デフォルトの名無しさん
2005/12/01(木) 23:34:57そう。string 型は、パルカルのときの実装を引きずっていますので例外的に1から、と覚える
0051デフォルトの名無しさん
2005/12/02(金) 00:00:42○パスカル
0052デフォルトの名無しさん
2005/12/02(金) 00:06:330053デフォルトの名無しさん
2005/12/02(金) 09:07:30005453
2005/12/02(金) 09:19:300055デフォルトの名無しさん
2005/12/02(金) 09:35:550056デフォルトの名無しさん
2005/12/02(金) 09:38:03○31
0057デフォルトの名無しさん
2005/12/02(金) 09:58:38単発質問はくだすれへ
0058デフォルトの名無しさん
2005/12/02(金) 16:42:41Inc(p);
if (p=len) then
これじゃ、比較が一バイト少ないよ。それから、2バイト文字を考慮してないので
ダメです。「Delphi」ならまず問題ないけど「D」だったら、2バイト文字の2バイト目も
数えてしまう可能性がある。
0059デフォルトの名無しさん
2005/12/05(月) 21:38:25日本語処理にも気をつけました
よろしくお願いします。
const
sword='Delphi';
var
str: AnsiString;
cnt: Integer;
PStr: PChar;
begin
cnt:=0;
str:=Memo1.Text;
PStr:=PChar(str);
repeat
PStr:=AnsiStrPos(PStr, sword);
if (PStr<>nil) then
begin
if (StrByteType(PStr, 0)=mbSingleByte) then
begin
Inc(cnt);
end;
Inc(PStr);
end;
until PStr=nil;
ShowMessage(IntToStr(cnt));
end;
0060デフォルトの名無しさん
2005/12/06(火) 00:37:50AnsiStrPosを使ってる時点で2バイト文字として意味のある位置で
結果が返ってる筈なんでStrByteTypeいらない。
というか前からスキャン方式でStrByteTypeは使っちゃだめ。
途中の位置をいきなり指定してそれがどこにあたるか調べるのは
前後の文字を辿るしかなく、
逆にそういった機能を持つ関数を使うことは
その次点に到達するまで前からスキャンしてきたこと自体を
無駄にしてる。
前から辿るならAnsi〜系を使わずに自力でマルチバイト処理をするとしても
LeadBytesで充分。
0061デフォルトの名無しさん
2005/12/06(火) 00:46:30惜しい。あと一歩。78点くらい。
たぶん結果は正しい。冗長なのが減点の原因。
AnsiStrPos は二バイト文字をサポートしていますので、検索の先頭を間違わなければStrByteType による確認は不要です。
それから、見つかったら、PStr は検索文字列の長さ分だけ Inc() してから再度検索します。
repeat
PStr:=AnsiStrPos(PStr, sword);
if (PStr<>nil) then
begin
Inc(cnt);
Inc(PStr, Length(sword));
end;
until PStr=nil;
このようにすると検索文字列が 「Delphi」であっても「デルファイ」であっても問題なく検索できます。
>>59 の回答は検索文字列の最初が一バイト文字であることを仮定しているので正しくないです。
しかし、かなりな進歩で驚いています。
次のお題は、何回現れるかの他に、その位置も返すような関数をつくってください。具体的には、RichEdit に
同様にテキストを読み込んで、ボタンを押すと Delphi の部分が赤い文字列になるようにします。
赤文字にする方法、位置情報を返すための配列の定義の仕方など、分からないことがあったら個別に質問してください。
0062デフォルトの名無しさん
2005/12/07(水) 01:04:33begin
cnt:=0;
spos:=0;
str:=RichEdit1.Text;
PStr:=PChar(str);
len:=Length(sword);
repeat
p:=AnsiPos(sword, PStr+spos);
if (p>0) then
begin
Inc(cnt);
Inc(spos, p);
with RichEdit1 do
begin
SelStart:=spos-1;
SelLength:=len;
SelAttributes.Color:=clRed;
end;
Inc(spos, len);
end;
until p=0;
ShowMessage(IntToStr(cnt));
end;
//ここまで
よろしくお願いします。
0063デフォルトの名無しさん
2005/12/07(水) 02:35:14AnsiPosに暗黙のPChar→String変換で引数渡してるよね…。
これは暗黙に実行されるわりにコストがメチャ高いので、
ループの中では避けたほうがいい。
上と同じでAnsiStrPosじゃダメだったの?
0064デフォルトの名無しさん
2005/12/07(水) 03:05:54すばらしい!
つぎに、汎用的に使えるように関数にしてみてください。
type
TPosArray = array of integer;
function SearchAndPos(const SubStr, Str: string; PosArray: TPosArray): integer;
で戻り値が出現回数であるような。>>63 さんのおっしゃるとおり、AnsiStrPos をつかって
実装してみてください。
0065デフォルトの名無しさん
2005/12/07(水) 03:10:21function SearchAndPos(const SubStr, Str: string; var PosArray: TPosArray): integer;
の形です。var をわすれました。
0066デフォルトの名無しさん
2005/12/09(金) 04:07:45AnsiStrPosを使うように変更しました
よろしくお願いします
function SearchAndPos(const SubStr, Str: string; var PosArray: TPosArray): integer;
var
PStr: PChar;
PBgmStr: PChar;
PSubStr: PChar;
Cnt: Integer;
Len: Integer;
begin
Cnt:=0;
Len:=Length(SubStr);
PBgmStr:=PChar(Str);
PStr:=PBgmStr;
PSubStr:=PChar(SubStr);
repeat
PStr:=AnsiStrPos(PStr, PSubStr);
if (PStr<>nil) then
begin
Inc(Cnt);
SetLength(PosArray, Cnt);
PosArray[Cnt-1]:=PStr-PBgmStr;
Inc(PStr, Len);
end;
until PStr=nil;
result:=Cnt;
end;
0067デフォルトの名無しさん
2005/12/09(金) 09:57:48すばらしい!
実際のの動作はすみませんが、時間が出来たらあとで検証してみます。
見た限りでは問題無さそうです。
>>47 から比べると格段の進歩です。検索には一度も文字列コピーをしてないのですよね。
今回の教訓は、ひとかたまりの論理が完結したら、関数や手続き、クラス内のメソッド
などで表現すべき、ということです。コードの断片より、関数などで完結した論理を
表現しておくと、たとえ他の言語や環境になったとしても論理そのものは生きるので
自分の財産にすることが出来ます。
0068デフォルトの名無しさん
2005/12/09(金) 09:58:141)Delphi には Pos や AnsiPos にように文字列の先頭から、最初の位置までを
検索する関数がありますが、途中から検索する関数がありません。それを
function AnsiPosEx(const Substr, S: string; initPos: integer): Integer;
の形で AnsiStrPos をつかって、つくってください。そして、それをつかって >>66 を
書き直してみてください。
2)>>66 では見つかるたびに SetLength() を使って配列を一つずつ増やしています。
これは非効率的なので、たとえば10個づつ増やすようにしてみてください。
0069デフォルトの名無しさん
2005/12/09(金) 20:18:26function AnsiPosEx(const SubStr, S: string; initPos: integer): Integer;
var
PSubStr: PChar;
PS: PChar;
PBgn: PChar;
PPos: PChar;
begin
PSubStr:=PChar(SubStr);
PS:=PChar(S);
PBgn:=PS+initPos;
PPos:=AnsiStrPos(PBgn, PSubStr);
result:=PPos-PS+1;
if result<0 then
begin
result:=0;
end;
end;
0070デフォルトの名無しさん
2005/12/09(金) 20:19:15var
PStr: PChar;
Cnt: Integer;
NowPos: Integer;
Len: Integer;
begin
Cnt:=0;
NowPos:=0;
Len:=Length(SubStr);
PStr:=PChar(Str);
repeat
NowPos:=AnsiPosEx(SubStr, PStr, NowPos);
if NowPos<>0 then
begin
if Length(PosArray)=Cnt then
begin
SetLength(PosArray, Cnt+10);
end;
PosArray[Cnt]:=NowPos-1;
Inc(Cnt);
Inc(NowPos, Len);
end;
until NowPos=0;
SetLength(PosArray, Cnt);
result:=Cnt;
end;
//ここまで
よろしくお願いします
0071デフォルトの名無しさん
2005/12/09(金) 22:22:06完璧!! -2 点 =98点
減点は、AnsiPosEx の第二引数に PChar を使ったこと。const の string 型は
呼び出しても、関数内で変更できないのでコピーされることはないです。ですから
string 型のまま使ってください。AnsiPosEx をつくったことにより、SearchAndPos
から、ポインタをあらわにつかうコードが完全になくすることができたことに注目してください。
次の課題は少し難易度が上がります。
このスレの1−38までのテキストのうち、半角の数字がでてきた数を数える関数をつくってください。
いままで、テキスト内の走査は、AnsiPos や AnsiStrPos をつかったのであらわに
コードを書かなかった。この課題では、一バイト文字、二バイト文字を判別しながら
数字かどうかを判定する必要があります。自分のコードでテキストを走査してください。
出来れば、前回のように、文字列の途中から検索して、最初の数字を見つける関数を
つくり、それを使って出現数を数えてください。
0072デフォルトの名無しさん
2005/12/09(金) 22:25:230073デフォルトの名無しさん
2005/12/10(土) 00:15:520074デフォルトの名無しさん
2005/12/10(土) 02:07:03ありがとう。
ほんとうですね。いま shift-jis のコード表を見ましたら、二バイト文字の二バイト目は
$40 からなんですね。一方 0-9 は $30-$39 ですから、重複しませんね。
うーむ、それでは課題が破綻するので変えることにします。
このスレの1−38までのテキストのうち、半角のアルファベット( a-z と A-Z )文字がでてきた数を数える関数をつくってください。
とします。すみませんでした。
0075デフォルトの名無しさん
2005/12/11(日) 22:32:442005なんか 最初 吹っ飛んで消滅していたじゃん。 消滅からハングに 大差ないしおどろくことではないかと 先行バグ取り隊の情報引き続きよろしく -- 2005-12-07 09:14:09 (水) New
>「消滅からハングに 大差ないしおどろくことではない」 どっちにしろ、真面目につかうものではなさそうですね。
「どっちにしろ、真面目につかうものではなさそうですね」 しらずに2005のときせっかく数時間かけて書いたコードが消滅して悲しい思いしたよ -- 2005-12-07 15:22:52 (水) New
0076デフォルトの名無しさん
2005/12/15(木) 07:29:16function CountAlpha(var str: AnsiString): Integer;
var
i: Integer;
cnt: Integer;
begin
cnt:=0;
i:=0;
while (i <= Length(str)) do
begin
if ( (str[i] in LeadBytes)) then
begin
Inc(i,2);
end
else
begin
if (str[i] in ['a'..'z']) or (str[i] in ['A'..'Z']) then
begin
Inc(cnt);
end;
Inc(i);
end;
end;
result:=cnt;
end;
//ここまで
よろしくお願いします
0077デフォルトの名無しさん
2005/12/15(木) 10:26:25すばらしい! 94点
減点は
CountAlpha(var str: AnsiString): → CountAlpha(const str: AnsiString):
const にして、関数内で変更しない(コピーされない)ことを保証し、
IntToStr(CountAlpha(Memo1.Text)) などと、変数を確保しなくても使えるように
することは重要です。var だと str := Memo1.Text; IntToStr(CountAlpha(str))
などとしなければ使えませんね。
減点ではないけど
if (str[i] in ['a'..'z']) or (str[i] in ['A'..'Z']) then
の部分は
if (str[i] in ['A'..'Z','a'..'z']) then
とすることもできます。
文字列のインデックスは1から始まります。ですから
i:=0; ではなく、 i:=1;
で初期化してください。次の課題は少し事前に検証してから出します。
0078デフォルトの名無しさん
2005/12/15(木) 10:42:34つぎの課題は、もうちょっと難易度が上がります。
前回同様、アルファベットの文字を見つけるのは同じですが、塊として数えてください。
例えば
This is a pen.
の場合は4を返すような関数をつくってください。アルファベット以外の文字(空白も含む)で
区切られたアルファベットだけで出来ている語句の数を数えます。
「...ことを保証し、IntToStr(CountAlpha(Memo1.Text)) などと、変数を確保しなくても使えるように」
の場合は、「IntToStr」「CountAlpha」「Memo」「Text」の4つです。
0079デフォルトの名無しさん
2005/12/15(木) 11:52:06新幹線で東京から名古屋まで行くときのトンネルの数を数えるのと同等です。
トンネルの入り口を数えるといいですね。でも入り口を認識するためには
出口を認識する必要があります。出口を認識するためには、「いまトンネルの
なかにいる」という<状態>を変数に保存しておかなければなりません。また、
トンネルの中にも駅があることを考慮しなければなりません。ですから、名古屋
は違いますが終点がトンネルの中の場合もありえます。
0080デフォルトの名無しさん
2005/12/15(木) 12:22:11記録するときのものです。今回は無視してください。入り口の数だけで十分です。
0081デフォルトの名無しさん
2005/12/16(金) 13:56:59エディットボックス(Edit1)に入力した数字までの合計値を、ボタン(Button1)を押したら、表示(Label1に表示)させよ。
なお変数は、エディットボックスの入力値(a)、合計値(Sum)、ループのカウンタ(i)とする。
procedure TForm1.Button1Click(Sender: TObject);
var
i,Sum:□□□□□□□;
a:integer;
begin
a:=StrToInt(Edit1.text);
Sum:=0;
for i:= □ to □ do
begin
Sum:= □□□+□
end;
Label1.Caption:=IntToStr(Sum);
end;
教えて!↑
0082デフォルトの名無しさん
2005/12/16(金) 15:44:010
a
Sum
i
0083デフォルトの名無しさん
2005/12/18(日) 04:51:49TPopupMenuに動的にメニューを追加する方法なんですが、サブメニューも追加したくて・・・
例えば
A
-SubA
-SubB
B
-SubA
-SubB
-SubC
こんな感じでサブメニュー含めて動的に追加するにはどうしたらいいですかね?
0084デフォルトの名無しさん
2005/12/18(日) 09:33:06>>57
0085デフォルトの名無しさん
2005/12/20(火) 06:50:34function CountAlphaWord(const str: AnsiString): Integer;
var
i: Integer;
cnt: Integer;
isAlphaNow: Boolean;
isAlphaPrev: Boolean;
begin
isAlphaPrev:=False;
cnt:=0;
i:=1;
while (i <= Length(str)) do
begin
isAlphaNow:=False;
if ( (str[i] in LeadBytes)) then
begin
Inc(i,2);
end
else
begin
if (str[i] in ['a'..'z', 'A'..'Z']) then
begin
isAlphaNow:=True;
end;
Inc(i);
end;
0086デフォルトの名無しさん
2005/12/20(火) 06:54:35begin
Inc(cnt);
end;
isAlphaPrev:=isAlphaNow;
end;
result:=cnt;
end;
//ここまで
よろしくお願いします
0087デフォルトの名無しさん
2005/12/20(火) 14:36:57100点。
キモは、
if (not isAlphaPrev) and isAlphaNow then
ですね。これでトンネルの入り口を認識しているのだね。Boolean の変数を二つ
つかって、論理が分かりやすくなっています。わたしの実装だと、IsTunnel という
Boolean の変数をひとつだけ使っているので、今回の実装より簡単ですが、コードは
読みにくいです。他人の実装をみると、自分との違いが分かって勉強になります。
さて、次の課題は、多分予想できていると思いますが、トンネルの出口も認識して
数だけでなく、位置と長さも返すような関数を作ってください。
type
TPosLength = record
Position: integer;
Length : integer;
end;
TPosLenArr = array of TPosLength;
function SearchAlphaWord(const str: string; var pl: TPosLenArr): integer;
>>79 の全文をヒントとしてください。
0088デフォルトの名無しさん
2005/12/23(金) 05:34:45function SearchAlphaWord(const str: string; var pl: TPosLenArr): integer;
var
i: Integer;
cnt: Integer;
isAlphaPrev: Boolean;
isAlphaNow : Boolean;
iPrev: Integer;
begin
isAlphaPrev:=False;
cnt:=0;
i:=1;
while (i <= Length(str)) do
begin
isAlphaNow:=False;
iPrev:=i;
if ( (str[i] in LeadBytes)) then
begin
Inc(i,2);
end
else
begin
if (str[i] in ['a'..'z', 'A'..'Z']) then
begin
isAlphaNow:=True;
end;
Inc(i);
end;
0089デフォルトの名無しさん
2005/12/23(金) 05:35:25begin
Inc(cnt);
if cnt>Length(pl) then
begin
SetLength(pl, cnt+10);
end;
pl[cnt-1].Position:=iPrev;
end
else if isAlphaPrev and (not isAlphaNow) then
begin
pl[cnt-1].Length:=iPrev-pl[cnt-1].Position;
end;
isAlphaPrev:=isAlphaNow;
end;
SetLength(pl, cnt);
result:=cnt;
end;
//ここまで
よろしくお願いします
0090デフォルトの名無しさん
2005/12/23(金) 11:51:1990点。
ヒントの
> トンネルの中にも駅があることを考慮しなければなりません。ですから、名古屋
> は違いますが終点がトンネルの中の場合もありえます。
を忘れています。アルファベットでテキストが終わる場合を考慮してください。
...
isAlphaPrev:=isAlphaNow;
end;
if isAlphaNow then pl[cnt-1].Length:=iPrev+1-pl[cnt-1].Position; // これを追加
SetLength(pl, cnt);
result:=cnt;
end;
あと、一つも見つからない場合もありますので、while の前に
isAlphaNow := false;
iPrev := 1;
で初期化しておくとコンパイラの警告が出ませんね。
文字列操作は列挙や置換、抽出、パースなどいろいろありますが、少々当方も飽きてきた
ので次はリストクラスから出題します。すこし時間をください。
0091デフォルトの名無しさん
2005/12/23(金) 12:10:18リストクラスはもっとも簡単そうな文字列のリスト TStringList から始めます。
最初はソートの練習です。
procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStringList;
i: integer;
begin
Randomize;
sl := TStringList.Create;
try
for i := 1 to 20 do sl.Add(IntToStr(Random(1000)));
Memo1.Lines.Assign(sl);
finally
sl.Free;
end;
end;
にすると、0-999 のランダムな数値に対応する文字列が sl に20個保持され、その内容が Memo1 に
表示されます。コードを継ぎ足して、数値の小さい方から(昇順)並べ直して見てください。
TStringList.CustomSort を使います。
0092ささ ◆6KVcpBNXy.
2006/01/26(木) 15:45:51パスカル(Delphi)の授業での課題がわかりません。。教えてください!
3科目、10人分のデータを入力して各人の合計点と科目毎の平均点を作れ!
という課題が出ました。。。
先生に下記を改変するとやりやすいといわれました。repeatとwhileとforまでしか習っていません。
Score :array[0..1000] of integer;
begin
writeln('入力得点の平均と偏差値を計算します'); writeln('入力後、負の数を入力すると…終了します。');
kazu :=0;
repeat
write('点数は?'); readln(data);
if data >= 0 then
begin
kazu := kazu + 1;
score[kazu] := data
end
until data < 0;
goukei := 0; for i := 1 to kazu do goukei := goukei + score[i]; heikin :=goukei / kazu;
goukei :=0; for i := 1 to kazu do goukei := goukei + Sqr(score[i]); hensa := sqrt(goukei /kazu - sqr(heikin));
writeln('点数 偏差値');
for i := 1 to kazu do writeln(score[i]:4, 50 +10 * (score[i]-heikin)/ hensa:10:1);
writeln(' 平 均 =',heikin:5:1); writeln('標準偏差=',hensa:5:1);
readln;
end.
0093棄民党党首 ◆8slekwWKD6
2006/01/26(木) 17:00:39AssignFile(f, s); Reset(f);
で s にアクセント記号と漢字交じりのファイル名をWideStringでぶちこんでみたら
開かんぞ。
TntのUnicode Componentsをいぢってみたが、AssignFileのUnicode版がみつからん。
でしかたないから
WideRenameFileで名前を'safe.bin'とかに変更しちゃって。
フツ〜にAssignFileで開いて処理してからまた
WideRenameFileで名前をUnicodeの名前へもどしますた。
わたしってなんて天才♪
0094デフォルトの名無しさん
2006/02/10(金) 02:28:56Turbo Pascal時代からずっと使って来ただけに、
手に馴染んだ開発環境がなくなると困る。
0095デフォルトの名無しさん
2006/02/10(金) 04:04:10ボーランドが手放すだけでDelphiがなくなるわけじゃないから安心しる。
0096デフォルトの名無しさん
2006/02/10(金) 08:15:160097デフォルトの名無しさん
2006/02/10(金) 14:45:480098デフォルトの名無しさん
2006/02/10(金) 16:58:380099デフォルトの名無しさん
2006/02/10(金) 17:29:53え?マジすか?kwsk!
とあるスレッドからMDI子フォームにSendMessageしたいんです。
そのスレッドでは、MDI子フォームのウィンドウハンドルを取得する事は
出来るのですが、SendMessageしてもMDI子フォームにメッセージが来ないです。
もう泣きそうです。
もちろん、MDI子フォームではメッセージを受け取れるようにしているのですけども・・・。
0100デフォルトの名無しさん
2006/02/10(金) 17:49:340101デフォルトの名無しさん
2006/02/10(金) 18:13:45メッセージを送る側では
procedure Thread.SendMsg(sClassName: String; nKind: Cardinal; pInfo: Pointer; nInfoSize: Integer);
var
begin
Wnd := FindWindow(PChar(sClassName), nil);
if (Wnd <> 0) then begin
:
SendMessage(Wnd, WM_COPYDATA, WPARAM(Wnd), LPARAM(@Cd));
end;
とし、SendMsg('TForm', ....); と、使っています。で、
受け取る側(MDI子フォーム)では
procedure WMCopyData( var sMsg: TWMCopyData ); message WM_COPYDATA;
を、privateに宣言して
procedure TForm.WMCopyData(var sMsg: TWMCopyData);
:
begin
pMessage := nil;
if (sMsg.CopyDataStruct.dwData = ID_TEST) then begin
:
:
:
end;
としています。
0102デフォルトの名無しさん
2006/02/10(金) 19:22:04一度 Spy++ か WinInsight で確かめたら?
0103デフォルトの名無しさん
2006/02/10(金) 19:45:00通常どうやるのかわからないもので・・・。
とりあえず実行させて、FindWindowの戻り値を見たら0x604A6でした。
Spy++の検索ウィンドウで0x604A6を検索したら、目的のウィンドウが
検索されました。一応ウィンドウハンドルは取れているようでした。
うーん・・・困りました・・・。
0104デフォルトの名無しさん
2006/02/14(火) 02:57:20便利なようでいまいち、使いどころが…。
動作中チェックありにして、速度とか問題ないですか?
0105デフォルトの名無しさん
2006/02/14(火) 15:13:330106デフォルトの名無しさん
2006/02/14(火) 21:37:450107デフォルトの名無しさん
2006/02/15(水) 10:29:360108デフォルトの名無しさん
2006/02/15(水) 11:11:390109デフォルトの名無しさん
2006/02/21(火) 23:53:44ヘルプに有るように、FindWindowは子ウィンドウは探してくれないよ。
同じクラス名を持つ別のウィンドウのハンドルを返していると思われ。
0110デフォルトの名無しさん
2006/02/22(水) 23:07:35パネルを色つきにしてOnClickという事もできますが
それだとクリックされたときにボタンのように
凹んだりしないのでわかりづらいし・・・
なにかいい方法はありますでしょうか?
どなたか、よろしくお願いします。
0111デフォルトの名無しさん
2006/02/22(水) 23:14:06まさか本当に凹んでるとか思ってないよな?
0112デフォルトの名無しさん
2006/02/23(木) 00:27:170113Delフサギコ ◆A6VzDeLphI
2006/02/23(木) 00:51:33(´⌒;;
;⌒`) ∧,,∧ そういうのだいたい
;; `)./ミ,,゚Д゚彡 誰か作ってるよ。
//\ ̄ ̄旦~ (´(´⌒)
// ※.\___\
\\※ ※ ※ ※ ※ヽ
\`ー──────ヽ
────────
http://homepage1.nifty.com/cosmic/delphi/vcl.html#cutebtn
http://homepage2.nifty.com/Mr_XRAY/Delphi/plButton/index.htm
0114デフォルトの名無しさん
2006/03/02(木) 22:41:07削除対象アドレス:
http://pc8.2ch.net/test/read.cgi/tech/1138370150/
http://pc8.2ch.net/test/read.cgi/tech/1132756268/
http://pc8.2ch.net/test/read.cgi/tech/1132013685/
削除理由・詳細・その他:
6. 連続投稿・重複
0115デフォルトの名無しさん
2006/03/03(金) 01:13:300116デフォルトの名無しさん
2006/03/31(金) 11:14:10DDBからDIBにするとメモリ減りますか?
コーディングも簡単でつか?
0117デフォルトの名無しさん
2006/03/31(金) 12:06:280118116
2006/03/31(金) 13:30:05TBitmap(DDB)→TJpegImage→Jpegファイル
から
TBitmap(DIB)→TJpegImage→Jpegファイル
に変更。
今は意識してないけど、TBitmapってデフォはDDBだおね?
0119デフォルトの名無しさん
2006/03/31(金) 13:50:090120デフォルトの名無しさん
2006/05/29(月) 00:58:17v1のときにhtaのような使い方をしている
部分(左のチャンネルリスト)をどう実装してるのか
わからないんですが、誰か教えてください詳しい人
0121デフォルトの名無しさん
2006/05/29(月) 13:16:35すれ違い
0122デフォルトの名無しさん
2006/06/09(金) 17:59:34簡単にできますか?
アルファベット毎にカーソルファイルを作るのでなく、
コーディングでやりたいです。
0123デフォルトの名無しさん
2006/06/09(金) 18:47:120124デフォルトの名無しさん
2006/06/09(金) 19:15:11http://forum.nifty.com/fdelphi/samples/00368.html
TBitmapを作成して そこに文字を書いて、
それからCreateCursor
0126デフォルトの名無しさん
2006/09/03(日) 09:14:12Delphi7.0上で、3層の情報系の業務アプリケーションを構築しています
データベースはOracle9iです
UIでは、ADOレコードセットを入力データソースするMicrosoftのActiveXコンポーネント
を使用しています
BDE、DBExpressやBizSnapを利用すれば3層のデータアプリケーションは作成できる
ことは分かりました
データセットプロバイダ経由でデータを取得しようとすると、クライアント側はClientDataSet
として受け取ることになるのですが、どこかでADOレコードセット形式に変換しなければなりません
試しにClientDataSetをまわしながらADOレコードセットにフィールド定義とデータ値をコピーする
方法を試してみましたが、処理時間とCPU負荷が半端ではなく、とても採用できませんでした
他には、BizSoapを利用した形式では、サーバー側でADOレコードセットとしてデータ取得後に
Saveメソッドを利用してXML形式で一旦データ出力し、Soap経由でテキスト送信し、クライアント
側では受信内容をファイルとして出力しADOレコードセットのLoadメソッドをCallしてXMLファイル
から復元する方法を試したみましたが、これも採用できるものではありませんでした
素直にクライアント側でADOレコードセットとして取得可能な方法としては、リモートデータセット
(Microsoft RDS)を利用したDComアプリケーションとして構築する方法もあるので試してみました
これは、非常に高速で20万件程度のデータもほぼ一瞬でクライアント処理でき驚いたものですが、
MicrosoftのサポートページではRDS自体が今後は非推奨の技術として明記されており、その点
が引っかかっております
どうしてもクライアント側で扱うデータ量が数十万件程度あることでパフォーマンスが重要になって
しまいます。
オーバーヘッドがなるべく最小の形でClientDataSetからADOレコードセット形式に変換する方法は
ないものでしょうか
もしくは、素直にADOレコードセットとしてクライアント側で一発でデータ取得できれば嬉しいです
長文になってしまい申し訳ありません
どうぞよろしくお願いいたします
0127126
2006/09/03(日) 09:22:44大変失礼しました
[ くだすれdELPHI(超初心者用) ] のスレの方に移動します
0128デフォルトの名無しさん
2006/09/11(月) 00:03:00問題だしておくれ
初心者でも10分ぐらいで解けて、面白味のあるものがいい
0129デフォルトの名無しさん
2006/09/11(月) 08:47:19ボタンを二つ用意し、片方を非表示とする。
表示されているボタンを押すと、非表示だったボタンを表示し、押されたボタンを非表示に。
これを交互に繰り返せるものを作れ。
0130デフォルトの名無しさん
2006/09/11(月) 10:14:480131デフォルトの名無しさん
2006/09/11(月) 11:34:13ならおまえがだせ。
と、いいたいところだが、これはどうだ?
コントロールのオーナーをTForm1からTForm2に変える。
0132デフォルトの名無しさん
2006/09/11(月) 12:30:13用紙の左上から右に5cm、下に5cmの位置に
「はろーわーるど」と印字せよ
フォントは何でもいい
0133デフォルトの名無しさん
2006/09/11(月) 15:51:090134デフォルトの名無しさん
2006/09/12(火) 16:57:18初期データ読み込み書き込みはどうだ?
0135デフォルトの名無しさん
2006/09/12(火) 17:10:370136デフォルトの名無しさん
2006/09/12(火) 20:17:27begin
Button1.Visible:=not Button1.Visible;
Button2.Visible:=not Button2.Visible;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Button2.OnEnter:=Button1Click;
Button2.Visible:=False;
end;
0137デフォルトの名無しさん
2006/09/12(火) 20:18:58>>136は>>129への回答です
短くなるように工夫しました
採点お願いします
0138デフォルトの名無しさん
2006/09/12(火) 20:25:08Button2.OnEnter:=Button1Click;
Button2.Visible:=False;
をする必要が無い。
0点。
0139デフォルトの名無しさん
2006/09/12(火) 20:30:070140デフォルトの名無しさん
2006/09/12(火) 20:42:490141デフォルトの名無しさん
2006/09/12(火) 20:54:320142デフォルトの名無しさん
2006/09/12(火) 21:10:23と突っ込むところではないの?
0143デフォルトの名無しさん
2006/09/12(火) 21:12:520144デフォルトの名無しさん
2006/09/12(火) 22:23:370145デフォルトの名無しさん
2006/09/12(火) 23:28:500146デフォルトの名無しさん
2006/09/13(水) 03:30:32const
FILE_URL = 'http://203.131.199.131:8060/koreiina';
FILE_PATH = 'test.mp3';
var
fs: TFileStream;
begin
fs := TFileStream.Create(FILE_PATH, fmCreate);
try
with IdHTTP1 do begin
Get(FILE_URL, fs);
end;
finally
fs.Free;
end;
end;
0147デフォルトの名無しさん
2006/09/13(水) 08:14:13可哀そうに
0148デフォルトの名無しさん
2006/09/13(水) 11:33:34(さすがにTokyo Disnylandとは思わないが)
0149デフォルトの名無しさん
2006/09/13(水) 19:35:33可哀そうに
0150デフォルトの名無しさん
2006/09/13(水) 21:21:06iniファイル読み書きの習作をつくってみました
普通にファイルの読み書きするより簡単かもしれない
ちょっと感動!!
procedure TForm1.Button1Click(Sender: TObject);
var
iniFile: TInifile;
begin
iniFile:=TIniFile.Create('ook.ini');
try
count:=iniFile.ReadInteger('CounterApp', 'Count', 0);
Inc(count);
iniFile.WriteInteger('CounterApp', 'Count', count);
finally
iniFile.Free;
end;
ShowMessage(IntToStr(count));
end;
0151デフォルトの名無しさん
2006/09/13(水) 21:30:060152デフォルトの名無しさん
2006/09/13(水) 22:06:310153デフォルトの名無しさん
2006/09/13(水) 22:39:21お前はそのままでいいよw
0154デフォルトの名無しさん
2006/09/13(水) 23:24:420155デフォルトの名無しさん
2006/09/14(木) 00:35:54お主、俺を超えたな!?
0156デフォルトの名無しさん
2006/09/14(木) 04:04:150157デフォルトの名無しさん
2006/09/14(木) 05:19:240158デフォルトの名無しさん
2006/09/14(木) 07:56:030159デフォルトの名無しさん
2006/09/14(木) 10:09:08>ttp://pc8.2ch.net/test/read.cgi/tech/1139675970/239
>ソースと実行ファイル
>http://vipperup.orz.hm/miniup/src/viup0403.zip
これって、もう手に入らないの?
0160デフォルトの名無しさん
2006/09/14(木) 16:02:350161デフォルトの名無しさん
2006/09/29(金) 18:21:310162デフォルトの名無しさん
2006/09/29(金) 18:37:240163デフォルトの名無しさん
2006/10/06(金) 22:25:29対策をしているらしく、keybd_event ではエンターキーだけが認識されません。
(そのアプリ上でエンターキーを直接押せば認識される)
こういった場合、どのようにすればいいのでしょうか?
0165デフォルトの名無しさん
2006/10/16(月) 03:02:58Vbでいうところの Validate イベントを実現したい。
どうすればいい?
Procedure TXXXXX.OnValidate(Sender : TObject;Cancel : Boolean);
Cancel := True;
とすれば、フォーカスが抜けないようにする。
どうやったらできるんだろう?
TEdit を継承して、
WndProc を オーバーライドして
CM_EXIT をフックしてみた。
TEdit ではうまくいったが
TComboBox ではうまくいかなかった(DropDownList では おk で DropDown ではNg だった)。
誰か経験者か、うまいやり方知ってるひと教えてください。
0166デフォルトの名無しさん
2006/10/16(月) 09:10:19WM_KILLFOCUS受け取ったときに上記状態なら指定されたところにチェックしにいくとか
0167デフォルトの名無しさん
2006/10/16(月) 09:25:28Cancel=Falseなら、Combobox.setfocus
0168デフォルトの名無しさん
2006/10/16(月) 10:42:34begin
チェック処理
if エラー then
begin
Enabled := False;
Application.ProcessMessages;
Enabled := True;
hoge.SetFocus;
end;
end;
0169デフォルトの名無しさん
2006/10/16(月) 16:57:310170デフォルトの名無しさん
2006/10/16(月) 17:36:530171デフォルトの名無しさん
2006/10/17(火) 01:33:57ありがとうございます。
WM_KILLFOCUSでも同じでした。
>>167,168
ありがとうございます。
TComboBox の派生クラスに OnValidate イベントを実装したいのです。
0172デフォルトの名無しさん
2006/10/19(木) 10:09:05procedure TMyCombo.DoExit;
var
Cancel: Boolean;
begin
if Assigned(FOnValidate) then begin
Cancel := False;
FOnValidate(Self, Cancel);
if Cancel then begin
SetFocus;
Exit;
end;
end;
inherited;
end;
0173デフォルトの名無しさん
2006/10/19(木) 10:47:13SQLServer2000 使用です。
exceptにて、EDatabaseErrorが発生した場合に、
そのエラーNoを取得したいのですが、どのように書けばよいのでしょうか?
現時点では下のように書くところまでやりました。
except
on E: EDatabaseError do
begin
Result := False;
end;
end;
0174デフォルトの名無しさん
2006/10/19(木) 11:09:58いろいろ考えられるね。
・E.MessageにエラーNoが入ってるならそこから抽出する。
・E.ErrorNoみたいのがあるならそれを使う。
・SQLServer2000にGetLastDBError見たいな関数があるならそれを利用する。
0175デフォルトの名無しさん
2006/10/19(木) 11:19:34BDE使ってるならEDBEngineErrorでcatchすれば
エラーの詳細が取れるけど。
どうやって接続してるの?
0176173
2006/10/19(木) 11:24:15すみません、もっと根本的な問題だったようです。
やりたいことは、レコードロックによるタイムアウトエラーを取得したいのですが、
タイムアウトはEDatabaseErrorではないようです。
タイムアウトはEDatabaseError以外のどのExxxErrorでとれるのでしょうか?
0177173
2006/10/19(木) 11:25:55データモジュールにADOConnectionを貼り、ADOQueryで実行しています。
0178デフォルトの名無しさん
2006/10/19(木) 11:35:44そこまで細かいことは自分で調べちゃった方が早くね?
0179デフォルトの名無しさん
2006/10/19(木) 11:46:42on E: Exception で捕まえて、E.ClassNameを調べる
0181デフォルトの名無しさん
2006/11/04(土) 19:10:27EnterとAcquire、LeaveとReleaseの違いは何ですか?
いろいろ試した限りでは同じ処理に見えるのですが・・・
0182デフォルトの名無しさん
2006/11/04(土) 22:59:27ヘルプ見た?
その上で動作が同じだと判断するなら同じなんです
深く考えすぎないほうが良いかと
0183デフォルトの名無しさん
2006/11/06(月) 22:23:11TCriticalSectionのページに行こうとしても、
リンクがみつかりません って出るんですよ
無料のDelphi6だからかな? まぁ気にしないことにします
0184デフォルトの名無しさん
2006/11/07(火) 11:13:410185デフォルトの名無しさん
2006/11/07(火) 18:24:070186デフォルトの名無しさん
2006/11/23(木) 13:53:16チェックボックスに分けて選んでリレーを
ON/OFFしたいんですが
procedure TForm1.Button1Click(Sender: TObject);
begin
Relay[Time]:=True;
Time:=Time+1;
RelayChange;
end;
これからどう増やせばいいでしょうか?
どうかよろしくお願いいたします。
0187デフォルトの名無しさん
2006/11/23(木) 20:25:23日本語でおk
0188デフォルトの名無しさん
2006/11/25(土) 17:27:49http://www.highdots.com/css-tab-designer/
オフィスっぽいGUIは、どんなコンポーネントを使っているんでしょうか?
0189188
2006/11/25(土) 17:28:270190デフォルトの名無しさん
2006/12/25(月) 17:35:38自作クラスのコンストラクタの引数で作業フォルダのパスを指定して
フォルダが存在しなければ作成ってのをやろうと思うんだけど、
try〜finallyの手前でCreateすると例外が発生したときに例外を捕まえられないし
try内の先頭でCreateするとコンパイルで「初期化されていない可能性があります」と警告が出る。
コンストラクタは内部変数の初期化だけにしておいて
作業フォルダのパス指定は別メソッドにしておいたほうがいいのだろうか・・・
0191デフォルトの名無しさん
2006/12/25(月) 19:14:46try
Create
try
hoge
finally
hoge
end;
finally
hoge
end;
0192デフォルトの名無しさん
2006/12/29(金) 14:20:58Delphiにおいてはコンストラクタ内で発生して捕捉されない例外は
コンストラクタの失敗を意味する。
0193デフォルトの名無しさん
2007/01/06(土) 19:54:050194デフォルトの名無しさん
2007/01/27(土) 03:40:040195デフォルトの名無しさん
2007/01/27(土) 03:58:26TCoolBar のバンドの .Control に TToolBar 設定して、
TToolBar.Menu に TMainMenu 設定。
0196デフォルトの名無しさん
2007/01/31(水) 17:58:13良い方法はありますか?
QuickReportで良いのですがQuickReportは汎用画像出力が出来ないので...
0197196
2007/01/31(水) 19:05:07でもWin32用が無いお。
0198デフォルトの名無しさん
2007/01/31(水) 23:11:14日本語でおk
0199デフォルトの名無しさん
2007/01/31(水) 23:15:30で、最終的に、印刷じゃなくて、画像にしたいと。
0200デフォルトの名無しさん
2007/03/02(金) 07:58:21win32に、WCaption: WideString みたいなメンバを追加して
さらにくそでかく遅いバイナリしか生成できなくする。
これなら.netでいいや、ってなりwin32死滅。
0201デフォルトの名無しさん
2007/03/02(金) 16:54:350202入門きぼん
2007/03/18(日) 23:52:34DelphiTurboExplorerを、サイトからDLして使用したいと考えているのですが、
ユーザー登録をすませても、DLページに行けずに困っています。
それと、フリーのデーターベースであるFirebirdと
繋げられるのでしょうか?
やはり製品版でないと無理なのでしょうか?
自分は、単純に初心者向けプログラムである。
CDやDVDの在庫管理アプリを作りたいだけなんですが、
自分の労力以外は、極力フリーで作りたいと思っています。
可能でしょうか?
宜しくお願いします。
0203デフォルトの名無しさん
2007/03/19(月) 00:54:430204デフォルトの名無しさん
2007/03/19(月) 01:06:50The page cannot be found
0205デフォルトの名無しさん
2007/03/19(月) 06:01:060206デフォルトの名無しさん
2007/03/19(月) 11:33:22HTTP Error 404 - File or directory not found.
0207デフォルトの名無しさん
2007/03/19(月) 20:46:50ttp://torrent.borland.com/turbodelphi_jp.exe
0208202
2007/03/19(月) 21:55:11すみません。
やはりHTTP Error 404 - File or directory not found.になります。
みなさん、ありがとうございました。
残念で、悲しいですが、すみませんがDelphiあきらめます。
0209デフォルトの名無しさん
2007/03/19(月) 22:07:23http://www.codegear.com/tabid/144/Default.aspx
0210デフォルトの名無しさん
2007/03/20(火) 00:22:270211デフォルトの名無しさん
2007/03/21(水) 07:19:260212デフォルトの名無しさん
2007/03/21(水) 23:56:26ifのあとに条件をズラーッとandでくっつけるしかないのでしょうか?
例えばxが1 3 5 6 7 10・・100と不規則なときに、一定の動作をさせたいです。
0213デフォルトの名無しさん
2007/03/22(木) 00:14:261,3,5,6,7,10,100: 〜〜';
else
〜〜;
end;
0214デフォルトの名無しさん
2007/03/22(木) 07:13:44ってのもあるよ
0215デフォルトの名無しさん
2007/03/22(木) 14:14:54二次元配列があり地図のようになってるとします。
その時に●から一番近い5(複数ある)への経路を求める問題。
マスは30*30
●は(16、16)
0は通れる、1は通れない、4はいやな人
で、5の周りに4がいた場合それは目的の5にはなりません。
000000000000000000000000000000
000000000000000000000000000000
000000111100000000050000000000
000000001100000000000000000000
000000000100541110000000000000
000000000000111111000000000000
000000000000000000000000000000
001100000000000000000000000000
00000000000000●000000000000000
000100000000000000000000000000
000100000000000111111110000000
000000000000000000000000000000
000000500000000000050000000000
000000000000000000000000000000
000000000000000000000000000000
0216デフォルトの名無しさん
2007/03/23(金) 12:23:282chのレス数じゃ無理w
試しに幅優先探索して書こうとしたら、600行超えたからやめたw
0217デフォルトの名無しさん
2007/03/23(金) 17:39:42たけしのコマ大かと思った・・・。
斜め移動はあり?
地形は固定?
障害物1等のオブジェクトは、定数?
つっこむ所が多々ありそうだなぁ。
0218デフォルトの名無しさん
2007/03/24(土) 19:35:42普通にA*でいいんじゃないの?
>>216
600行はありえん。
0219デフォルトの名無しさん
2007/03/25(日) 00:12:27俺は斜め移動無し、固定でMAPはファイルからそのまんま読み込んだ状態としたよ
んで、今の箇所から上下左右で自分の関数を呼び出して、再起関数にして探してった。
でもこれじゃ全数検索になってしまう。
こういうアルゴリズム習ったけどやり方有ってるか不明
>>218
A*って何?
0220デフォルトの名無しさん
2007/03/25(日) 04:42:33暇つぶしに >>215 をやってみた。5時間かかったお。
再帰呼び出しとかは使えないし分からんので、長めになっちゃった。
キュー(FIFO)をやってみようと思って、ポインタとか使ってみたけど訳分からん。
ttp://strawberry.web-sv.com/cgi/up/iuy/nm4383.zip.html
(フォームにボタン1個要)
だって、MC工作機械マクロ言語に再帰呼び出しとかポインタなんて無いよ orz
あ、でも、なんちゃってポインタは出来るかな? #(#10) な感じで。
0221デフォルトの名無しさん
2007/03/25(日) 07:25:370222デフォルトの名無しさん
2007/03/27(火) 02:25:05TurboExplorerにもなかったりします?
0223デフォルトの名無しさん
2007/03/27(火) 06:53:37名前がセレクトフォルダじゃないからダメなの?
0224デフォルトの名無しさん
2007/03/28(水) 09:12:040225デフォルトの名無しさん
2007/03/28(水) 09:45:16で解決したのがわんさかあったけど、いまは知らない
0226デフォルトの名無しさん
2007/03/28(水) 09:54:17SelectDirectoryはとりあえずあればいいやみたいなもんだし
0227デフォルトの名無しさん
2007/03/28(水) 21:40:15FileCtrl;
procedure TForm1.Button1Click(Sender: TObject);
var
dir: string;
begin
MoveWindow(Application.Handle , Left ,Top ,0 ,0 ,False);
SelectDirectory('表題', '', dir);
Label1.Caption := dir;
end;
0229デフォルトの名無しさん
2007/03/31(土) 10:40:580230デフォルトの名無しさん
2007/04/07(土) 19:52:37Firebirdはまだ触ったこともないし、BDEもそのとき玉々作ってみただけの
データベース素人ですが。
0231デフォルトの名無しさん
2007/04/08(日) 13:26:52どういう作りになっているのかにも寄るけど
簡単には無理じゃね。
0232デフォルトの名無しさん
2007/04/08(日) 20:33:05ありがとうございますm(_ _)m
やっぱ作り直しですか。
0233デフォルトの名無しさん
2007/04/08(日) 20:57:31InterBase Data Access に変えるだけで問題ないだろし
そうでないなら、それなりに大変だろうってだけさ
0234デフォルトの名無しさん
2007/04/08(日) 21:59:340235デフォルトの名無しさん
2007/04/10(火) 13:29:140236デフォルトの名無しさん
2007/04/10(火) 20:04:010237疑問
2007/04/16(月) 02:52:02var
Integer: string;
begin
Integer := 'Double';
Writeln(Integer);
end.
0238デフォルトの名無しさん
2007/04/16(月) 08:03:01変数として使うと、
使った後整数型の定義とか、型変換とかで困ってしまうよ
他の型名とか自分で定義する型名も同じ事情があるよ。
0239デフォルトの名無しさん
2007/04/16(月) 16:19:270240デフォルトの名無しさん
2007/04/16(月) 23:21:03なんでだろ。
Windows.hとかのCからコンバートしたときのための兼ね合い?
似たようなので、引数でも例外あったような
0241名無し@沢村
2007/04/17(火) 00:10:20Delphiはつまらんぞー!
おみゃーたー、『肥えた語』つー言語があるの知ってる?
おりは知ってるよ。
おりがつくった言語よ。これからh『肥えた語』の時代よ。
URLはここよ↓
http://www.geocities.jp/hontamagod/
感想を頼むなー♪
0242デフォルトの名無しさん
2007/04/23(月) 22:52:08以前入れたときは確か、すんなり入ったのですが。
..\JEDI\jvcl\run\JvJVCLUtils.pas(7359) エラー: E2010 'Char' と 'string' には互換性がありません
..\JEDI\jvcl\run\JvJVCLAboutForm.pas(115) 致命的エラー: F2063 '..\..\run\JvJVCLUtils.pas' ユニットはコンパイルできませんでした
ほかにも出てきます。
pas は秀丸では欧文フォントで文字化けなしに読めたんですが「TM」とかの特殊文字が
○株みたいに扱われているんでしょうか、Shift-Jis ではChar扱いしてもらえないようです。
OSは Vista
D5 にはインストールされています。
m(_ _)m
0243デフォルトの名無しさん
2007/04/23(月) 23:02:280244デフォルトの名無しさん
2007/04/23(月) 23:05:380245デフォルトの名無しさん
2007/04/23(月) 23:07:220246デフォルトの名無しさん
2007/04/23(月) 23:17:26そんなに古いのー?
0247デフォルトの名無しさん
2007/04/23(月) 23:18:12しばらくD5で使ってたのでそれをそのままフォルダからインストールしようとしてました。
0248デフォルトの名無しさん
2007/04/23(月) 23:19:480249デフォルトの名無しさん
2007/04/23(月) 23:28:30はき出す場所が違うからOKだと思っていたのですが、
とりあえず2005には最新版を入れてみます。
0250デフォルトの名無しさん
2007/04/24(火) 20:28:58入れてみましたが状況は変わりませんでした(x.x)
0251デフォルトの名無しさん
2007/04/24(火) 21:14:09とりあえずJcl*.bplとJv*.bplを削除してみたら?
0252デフォルトの名無しさん
2007/04/24(火) 21:28:50結局使わない部分っぽかったので修正して無理矢理入れてしまいました。
JvgUtils.pas
function Transliterate(const Str: string; RusToLat: Boolean): string;
コメントアウトで Result := Str;
JvDBGrid.pas
FCharList :=
['A'..'Z', 'a'..'z', ' ', '-', '+', '0'..'9', '.', ',', Backspace{,
'e', 'e', 'e', 'e', 'o', 'o', 'u', 'u', 'a', 'a', 'a', 'i', 'i', 'c'}];
下半分をコメントアウト
JvJVCLUtils.pas
// Text: Char;
Text: string[2];
Char を string に変更
JvStrToHtml.pas
特殊文字 27 個コメントアウト
ありがとうございましたm(_ _)m
0253デフォルトの名無しさん
2007/04/24(火) 21:35:100254デフォルトの名無しさん
2007/04/24(火) 22:06:550255デフォルトの名無しさん
2007/04/24(火) 22:44:22あったようななかったような・・・
0256デフォルトの名無しさん
2007/04/24(火) 23:15:420257デフォルトの名無しさん
2007/06/18(月) 23:36:07問題でずっと悩まされてます・・・
古いIDE組み込み型のコンポーネントって
新しくなるとコンパイルが通らなくなる・・(泣
Designideで悩まない方法はありますか?
0258デフォルトの名無しさん
2007/06/19(火) 05:33:000259ミ,,゚Д゚ミノ ◆A6VzDeLphI
2007/06/19(火) 14:05:42-- DsgnIntfが見つからない場合 --
コンポーネントをインストールするときに
DsgnIntfが無いといってエラーになる場合があります。
Delphi5からDsgnIntf.dcuのコンパイル済みユニットが
無くなったからこのような現象が起きるそうです。
Delphi6からはDesignIntfという名前に変更されています。
DsgnIntf Unit はおもに、コンポーネントエディタやプロパティエ
ディタを作るときに利用するものです。
「環境オプション/ライブラリパス」に
$(DELPHI)\Source\Toolsapi
を追加してみましょう。
解決するはずです。
本当は、この方法を用いるとプロパティエディタのコードが
実行ファイルに含まれてしまうので、そういう書き方をしている
コンポーネントが悪いので、自分の作る物ではこういう問題が発生しないように
気をつけましょう。
参照────────────────────
[Delphi:42979] Delphi5 変更点
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=42979
0260デフォルトの名無しさん
2007/06/21(木) 20:49:16designide.dcuが見つからないという
エラーが出てしまいます・・orz
0261デフォルトの名無しさん
2007/06/21(木) 22:17:400262デフォルトの名無しさん
2007/06/28(木) 07:12:16BackSpaceキーは効くものの
Enterキーがきかないのですが
効くようにすることは可能でしょうか?
0263デフォルトの名無しさん
2007/06/30(土) 08:58:54ありがとうございます。
いろいろいじっていて
実行時パッケージでない方でビルドできました。
0264デフォルトの名無しさん
2007/06/30(土) 22:34:43間違いなくナッキーは淫乱
ペイントソフト楽に作れ杉
0265デフォルトの名無しさん
2007/07/04(水) 09:36:130266デフォルトの名無しさん
2007/07/04(水) 09:44:580267デフォルトの名無しさん
2007/07/04(水) 09:49:35どっかにアップしてたように思うのだけど、今検索してもみつからないな
0269ミ,,゚Д゚ミノ ◆A6VzDeLphI
2007/07/04(水) 10:54:14検索に1時間ほどかかってしまた。
0270265
2007/07/04(水) 11:00:48デルフサギコ様、うpをお願いしますorz
コンポーネントのソースは読めるので、
手直しとか派生くらいできますし、
使いこなせると思いまつ。
0271ミ,,゚Д゚ミノ ◆A6VzDeLphI
2007/07/04(水) 11:00:59手元にあるのはShapeの矢印版っすね。
majunarrowexとか、viArrow.pas
って名前だけど、googleではでないみたいだ。
とりあえずうpろうか。午後くらいでよい?
0272265
2007/07/04(水) 11:03:42ずっと待ってまつ。
希望では、以下の機能も欲しかったり。。。
・マウスで動かせる
・マウスで長さが変えられる
・移動や長さが変ったときに、Changeイベント
・矢印をオフにして単なるライン化
0273ミ,,゚Д゚ミノ ◆A6VzDeLphI
2007/07/04(水) 11:09:05いや、はようpっとくよ。
もっといいものをつくってくれた人もいたきがするんだが...
あの時期てきにホットゾヌの作者の中の人だった気がするが
確証無しで。
このコンポ、いったい誰作なんだろう...中国の方かしら。
0274ミ,,゚Д゚ミノ ◆A6VzDeLphI
2007/07/04(水) 11:11:48>・マウスで動かせる
>・マウスで長さが変えられる
桶
>・移動や長さが変ったときに、Changeイベント
わからない。というか、Resizeイベントはなさそうだから
どっちにしても自作だね。
>・矢印をオフにして単なるライン化
なぜか出来ないみたいだ。
改造すれば簡単でしょう。
0275デフォルトの名無しさん
2007/07/04(水) 11:20:24http://delwiki.info/?c=plugin;plugin=attach_download;p=%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FDraw%A5%B3%A5%F3%A5%DD%A4%CE%B8%B6%B7%BF;file_name=MyDraw.pas
0277デフォルトの名無しさん
2007/07/04(水) 11:53:46・1個だけ
・設計中のみ変更可能
・コードはシンプル
>>275
・複数のラインやオブジェクトが1コントロールに入る
・フォームにフックさせて最下面に無理やり描画するのも出来る
・実行中に移動等も可能
・出来る事が大きいだけに、けっこう複雑
0278265
2007/07/04(水) 11:56:32サンクス
どっちもクセ多杉orz
やりたいことは275なんだけどメッセージフック&インライン汗と、
何かあったとき対処できるかなとドンビキ。
273に275のコード混ぜるかなぁ。。。
0279デフォルトの名無しさん
2007/07/04(水) 12:06:35インラインアセンブラの部分はたぶん変更しなくていいいだろう。
ただ、文字を回転させるのに端ではなくて 真中というのは、チョットとまどった
あと、DesignProcでマウス応答全部やってるので
右ボタンメニューに対応させるとか、ココでやらんとあかんのかも
0280デフォルトの名無しさん
2007/07/04(水) 12:50:49iHypot -> math.Hypot で代用
MulSubDiv はコメント通りに浮動小数点で計算させる
0281265
2007/07/04(水) 13:02:06>あと、DesignProcでマウス応答全部やってるので
この作り、拡張性大丈夫かなぁ。
0282デフォルトの名無しさん
2007/07/04(水) 13:11:00気になるなら、それぞれ分けたらいいだけで
ひとつはデザイン中だけ処理させる判定を1箇所にまとめたかったのと、
TMyFormDraw と TMyDraw の両方で使いたくてコピペが楽だからそうしたんだろな
0283265
2007/07/04(水) 13:19:59了解でつ。
このコンポってStringsの中身をLines1つにすれば1本の線になるんですね。
動きも面白いし、機能は完璧。
最期の悩みは、このまま使うか、Linesプロパティを削除して、1本の線のコントロールとサブセットコントロール化するか。。。
0284Delフサギコ ◆A6VzDeLphI
2007/07/04(水) 13:21:48ミ ゙''゙〜 ________
ミ∧,,∧ /
ミ,,゚Д゚彡 < おお。あったですかぁ。
U U \あっててよかったDelWiki新
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
こういうのって、コンポインストールしないとサンプルプログラムが
コンパイルできない形になってて、非常に面倒よね〜
コンパイルしたsample.exeを是非に付けて欲しいもので。
まあ、漏れも付けてないんだけど。
それにしても、MyDraw....すごすぎだな。
(って何年も前にも言った感じがとてもデジャブー)
>>283さん
贅沢な悩みだな。(w
みつかってよかったね。
0286デフォルトの名無しさん
2007/07/04(水) 13:27:30で実行中に、線を増やせるね。
0287|Д゚彡 ◆A6VzDeLphI
2007/07/04(水) 13:30:56草葉の陰から見つめているんですよ。
0288デフォルトの名無しさん
2007/07/04(水) 15:13:17そんな物、ダウソして実行する馬鹿がいたら是非お目にかかりたい物でwwww
0289デフォルトの名無しさん
2007/07/04(水) 18:28:340290デフォルトの名無しさん
2007/07/04(水) 19:37:140291デフォルトの名無しさん
2007/07/04(水) 20:00:090292デフォルトの名無しさん
2007/07/04(水) 21:15:30ココに、サンプル書いてみた。
右ボタンで削除出来るようにコンポ側に少し追加もした
でも、コレ、誰がItemのオブジェクト削除してくれてるんだろ?
テキストを変更してもメモリリークしないんだろか?
0293初心者++
2007/07/05(木) 00:11:28初心者です。データベースの接続で困ってます。
TTableのDataBaseNameで
サンプルのDBDEMOSでは無事接続できるんですが、
ほかのアリエス名(MSAccess,Excel...)では
ログインダイアログでユーザー名 パスワードをきかれ、
先へ進めません。どなたか教えてください。
Turbo Delphi for wind32
OS : wind2000です。
0294初心者++
2007/07/05(木) 00:15:55初心者です。データベースの接続で困ってます。
TTableのDataBaseNameで
サンプルのDBDEMOSでは無事接続できるんですが、
ほかのアリエス名(MSAccess,Excel...)では
ログインダイアログでユーザー名 パスワードをきかれ、
先へ進めません。どなたか教えてください。
Turbo Delphi for wind32
OS : wind2000です。
0295デフォルトの名無しさん
2007/07/05(木) 16:25:33ttp://www.lares.dti.ne.jp/~hida/tips/bde_MSACCESS.htm
0296デフォルトの名無しさん
2007/07/05(木) 16:38:53(TUIWebBrowser)のFlash上の
テキスト入力コントロールでEnter入力が
できない問題について質問した者です。
RADながらWin32APIとの親和性,
カスタマイズ性が高くアセンブラも使え、
デフォルトコントロールの綺麗さなど、
色々優れた点がある中で、生産コストを下げる目的で
Delphiを選ぶときについて意見をお伺いしたいです。
ブラウザを作る際に、
まずTWebBrowserを使ってみて、入力に関する
致命的なバグがあったために、そのバグを修正した
TUIWebBrowserを使ったのですが、
そこでまた入力バグに出会ってしまい、
これらの問題が、VC++での開発でははじめから起きない
問題であったために、VC++で作り直すべきか考えています。
流通しているDelphi製のブラウザ系ソフトにも同じバグが見れました。
しかし、作りやすいので本当はDelphiを使いたいです。
Delphiで、資料やバグフィクス情報が無く、
節約できるはずの時間が、逆に冗長になるケースを考慮したとき、
そういった面を考えても、Delphiの生産性を活用するためには
どういったことが必要になりますでしょうか。
Delphi開発の先輩である皆さんに
お考えをお聞かせ願いたいです。
0297デフォルトの名無しさん
2007/07/05(木) 17:19:12>どういったことが必要になりますでしょうか。
VCLコードを読んで理解する事。
0298デフォルトの名無しさん
2007/07/05(木) 17:46:02でも、たぶん VC++でも色々拡張しようとすると、いろんな問題が出ると思うよ。
他人の作ったコードをソース無しに使おうってんだから当然だ。
TWebBrowser ならともかく TUIWebBrowser は使ってる人が少ないだろうし
さらに Flash となると、問題に答えてくれる人は少ないと思うよ。
>>262 の問題は メッセージポンプの所で流れてるメッセージ
を(Application.OnMessage とかで)見て、なんとか出来ないか考えてみたら?
0299デフォルトの名無しさん
2007/07/05(木) 17:47:05解決は難しい。TWebBrowser やその派生コントロールは、Delphi で簡単に
使えるように見えるが、Delphi での細かい制御が一番面倒なもののひとつ。
VC++ でできるなら、そっちでやればいいでしょう。
0300デフォルトの名無しさん
2007/07/05(木) 17:49:230301デフォルトの名無しさん
2007/07/05(木) 17:54:180302デフォルトの名無しさん
2007/07/05(木) 18:45:410303デフォルトの名無しさん
2007/07/05(木) 19:02:10TWebBrowserのバグを回避した
TUIWebBrowserでFlashActiveX上のコントロールを経由した
ときだけ起こるって言ってるし
TWebBrowserの有名な入力バグは普通もう回避してるだろう。
0304デフォルトの名無しさん
2007/07/05(木) 22:25:45そこで質問です。>>273の
.dfm に記述されたコードを .pas側で実行時に自動生成する
形に書き直すと、どういう風になりますか?じぶんはテキスト
エディタ派なのでコードの編集はできればテキストエディタで
やりたいとです。。。
プロジェクトを立ち上げると、
フォーム作成中にエラーが発生しました。(中略)
クラス TviArrowが見つかりません
とか出て上手くゆかなかったとです。
viArrow.pas をプロジェクトに追加して
プロジェクトを再構築。でコンパイルしたら実行
ファイルのほうは簡単にできてちょっと感動したとです。ひろしですひろしですひろしです
0305デフォルトの名無しさん
2007/07/05(木) 22:39:05なあ、こっちも実行してみてくれ。
http://delwiki.info/?c=plugin;plugin=attach_download;p=%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FDraw%A5%B3%A5%F3%A5%DD%A4%CE%B8%B6%B7%BF;file_name=MyDrawSample.lzh
0307デフォルトの名無しさん
2007/07/06(金) 07:39:12.dfm にはコンポーネントのプロパティが入っている。
実行中に位置やサイズを変更したいなら、 Left, Top, Right, Bottom をコードで弄る必要がある
>>305のは、コンポーネントを登録しなくてもいいように作られている
位置やサイズは文字列で与えてるようだ
0308Delフサギコ ◆A6VzDeLphI
2007/07/06(金) 09:35:55ミ,,゚Д゚彡
ミ つ旦)~~
〜と,,,~),,~) 旦~~
]]]]]]]]]]]]]]]]]]]]]]]]]]]]
自動生成する形になってて、いいっすね
>>305さん
どうせなら、バイナリも含んじゃえばいいのに。(w
IDE起動するのメンド(い人もいるかもね。)
>>307さん
MyDrawコンポーネントは単体で
たくさんの矢印や
矩形を処理するようになっていて
その位置を元々TStrings系でもっているのですよ。
0309デフォルトの名無しさん
2007/07/09(月) 18:36:58TScrollBoxみたいにCanvasプロパティの無いコンポーネントにお絵かきするには、
どうすれば良いですか?
0310デフォルトの名無しさん
2007/07/09(月) 22:34:162.TWinControlから派生したものであれば、さらに派生させてCanvasプロパティをpublicにする。
ん〜これしか思いつかなかった。もう少し具体的にやりたいことを書けば、もう少しまともな
回答がつくと思うよ。
0311デフォルトの名無しさん
2007/07/09(月) 22:42:34Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetDC(hoge.Handle);
try
Canvas.TextOut(0, 0, 'HOGE');
finally
ReleaseDC(hoge.Handle, Canvas.Handle);
end;
finally
Canvas.Free;
end;
end;
0312309
2007/07/10(火) 08:56:46具体的には、
TScrollBoxの上にTImage、その上にMyDrawを乗せています。
それで、MyDrawの図形をマウスでいじると、
TImageが物凄くチラツクんですよね。
それで、TScrollBoxにもTImageの図形描いておいてやろうかな、と。
0313309
2007/07/10(火) 09:35:540314デフォルトの名無しさん
2007/07/10(火) 22:26:170315デフォルトの名無しさん
2007/07/10(火) 22:41:540316デフォルトの名無しさん
2007/07/10(火) 23:14:11つ GetAsyncKeyState
ttp://msdn.microsoft.com/library/ja/jpwinui/html/_win32_getasynckeystate.asp
>315
現在押されている、ということであればGetKeyStateは不適切。
0317デフォルトの名無しさん
2007/07/11(水) 22:17:05windowsの世界だと int 21h(AH=8) みたいなのはないんでしょうか。
シーラカンスですんません。
0318デフォルトの名無しさん
2007/07/12(木) 00:08:04たとえばOnKeyPressとかTForm.KeyPreviewあたりは幸せになれるかも?
0319デフォルトの名無しさん
2007/07/12(木) 06:53:33やりたいのは、コンソールアプリケションで、
enter (1-9 or q):
みたいなプロンプトをだして、一文字キーボードから入力してもらい、
入力された文字で処理を分岐させようというだけです。
つまりread(c); でreturn を入れなくても一文字読み込みたいというだけです。
0320デフォルトの名無しさん
2007/07/12(木) 08:00:06GUIアプリの例だと、ボタンとメモと、タイマーを貼り付けて
procedure TForm1.Button1Click(Sender: TObject);
begin
AllocConsole;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
pirBuffer: INPUT_RECORD;
hdl: THandle;
lpcRead: DWORD;
begin
hdl := GetStdHandle(STD_INPUT_HANDLE);
if integer(hdl) < 0 then
exit;
while ReadConsoleInput(hdl, pirBuffer, 1, lpcRead) do
with pirBuffer do case EventType of
KEY_EVENT: //Event.KeyEvent
if Event.KeyEvent.bKeyDown then
Memo1.Lines.Add('KEY=' + Event.KeyEvent.AsciiChar);
_MOUSE_EVENT: //Event.MOUSE_EVENT
with Event.MouseEvent do
Memo1.Lines.Add(format('%5d %5d ', [dwMousePosition.x, dwMousePosition.y]));
WINDOW_BUFFER_SIZE_EVENT, //Event. WindowBufferSizeEvent
MENU_EVENT, // Event. MenuEvent
FOCUS_EVENT: //Event.FocusEvent
end;
end;
コンソールアプリだと、このタイマーの部分でキー入力があるまで無限ループする関数を書く事になるだろな
0321デフォルトの名無しさん
2007/07/13(金) 07:16:47これを参考にコンソール用に書き直してみます。
0322296
2007/07/13(金) 17:53:11ブラウザコンポーネント上の
FlashActiveX上の入力問題で質問した>>296です。
みなさんありがとうございました。
時間がかかりましたが、
なんとか解析して自己解決できました。
これでDelphiのままいけそうです。
0323デフォルトの名無しさん
2007/07/16(月) 03:42:15解析結果を書いてくれるとみんなが幸せになれるかもよ
0324デフォルトの名無しさん
2007/07/28(土) 20:12:22スクリプトによって書かれて配置される
FlashActiveXが、1ページに2つ以上あるときに、
従来の方法で
2つ目のものにメッセージを送れていない場合があるようです。
ウィンドウを細かく検索することで回避しました。
0325デフォルトの名無しさん
2007/09/17(月) 21:48:040326デフォルトの名無しさん
2007/09/17(月) 21:56:240327デフォルトの名無しさん
2007/09/17(月) 22:06:24楽しみに待ってます。本当にありがとう!!
前スレの字句解析から意味解析のログ本当に勉強になったので
0328デフォルトの名無しさん
2007/09/19(水) 19:02:18元々EditにあったPopupMenuが無くなりますよね。
そうじゃなくて、EditのデフォのPopupMenuに自作PopupMenu1を足すには、
どうしたら良いでしょうか?
0329デフォルトの名無しさん
2007/09/19(水) 19:27:16OSに記憶してもらう方法とか有ったら知りたいのですがなかなか見つかりません。
マイクロソフトのページには
DPAPI は、以下の項目を保護するのに役立ちます。
• Web ページの資格情報 (たとえば、パスワード)
• ファイル共有の資格情報
• EFS (暗号化ファイル システム)、S/MIME、および他の証明書に関連付けられた秘密キー
• CryptProtectData() 関数を使用して保護されているプログラム データ
とあるのですが このDPAPIは単純に任意のパスワード等保護してもらえる機能として
捕らえていいのでしょうか 。 delphi7を利用しています。 どなたか情報いただけませんか。
0330デフォルトの名無しさん
2007/09/20(木) 08:37:270331デフォルトの名無しさん
2007/09/20(木) 12:07:54たぶん出来ない。
右ボタンメニュを出すには TrackPopupMenu を呼び出すわけで
エディットコントロールにはデフォルトのWM_RBUTTONUP内部でコレを呼び出してる部分があるのだろう
TrackPopupMenuを呼び出すにはhMenuが必要だけど、EDITでコレを入手する方法が見つからない。
親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。
0332デフォルトの名無しさん
2007/09/20(木) 12:38:35>親窓なら、GetMenuでhMenuを呼び出せるけど、小窓ではそれが出来ないから。
親窓を取得したりできないですかね。
差し替えたPopupMenu1のイベントハンドラを実行すると、
EditのデフォルトのPopupMenuを開きなおしたり、
とかでも良いのですが。
0333デフォルトの名無しさん
2007/09/20(木) 12:53:09var SaveMenu:TPopupMenu;
begin
SaveMenu:=Edit1.PopupMenu;
Edit1.PopupMenu:=nil;
SendMessage(Edit1.Handle,WM_RBUTTONDOWN,Edit1.Left,Edit1.Height);
SendMessage(Edit1.Handle,WM_RBUTTONUP,Edit1.Left,Edit1.Height);
Edit1.PopupMenu:=SaveMenu;
end;
と、いったんメニューを外して、右ボタンを押して離してを送りつければ出るよ
0334デフォルトの名無しさん
2007/09/20(木) 12:57:320335デフォルトの名無しさん
2007/09/20(木) 13:28:00var pt:TPoint;
begin
pt:=ClientToScreen(Point(Edit1.Left,Edit1.Height));
PostMessage(Edit1.Handle,WM_CONTEXTMENU,Edit1.Handle,pt.x+(pt.y shl 16));
end;
0336デフォルトの名無しさん
2007/09/20(木) 13:49:46両方おk、でした。
TPointを指定するのメンドウだから、333でやるかも。
PopupMenu1のメニューの一つに編集っていうメニューを用意して、それだとデフォメニューをオープン、
という動作でカコヨクできました。
0337デフォルトの名無しさん
2007/09/21(金) 20:03:36ひょっとしてあたしを騙したの?
0338デフォルトの名無しさん
2007/09/21(金) 20:47:230339デフォルトの名無しさん
2007/09/22(土) 02:55:260340デフォルトの名無しさん
2007/09/22(土) 18:11:260341デフォルトの名無しさん
2007/09/24(月) 00:52:44多言語化(日本語/英語)
をするときはどうしてますか?おしえてください
0342デフォルトの名無しさん
2007/09/24(月) 00:58:53TNT+dxgettext
0343デフォルトの名無しさん
2007/09/24(月) 03:36:290344デフォルトの名無しさん
2007/09/24(月) 04:17:570345デフォルトの名無しさん
2007/09/24(月) 12:17:20Delphiに国際化対応のツールが付属してるでしょ、
0346デフォルトの名無しさん
2007/09/25(火) 07:52:39お久しぶりです。TThreadでボヤいてた者です。
TThreadをプールして使い回してみたところ問題なさそうなのでこれで行くことにしました。
あとスレッドで処理中にフォームを操作するとCPU100%のまま帰ってこなくなる現象が出ましたが、
TThreadの方にpublicで作ったAnsiStringに渡した文字列が原因だったようで、
スレッドの変数をAnsiString.Unique()して参照を切り離してやったら問題無くなりました。
これから先に嵌る人が居るかもしれないので書いておきます。
改めてありがとうございましたorz
0347デフォルトの名無しさん
2007/09/27(木) 14:25:29>国際化、リソースDLL
こちらに書いてあることでしょうか?
http://www.wwlnk.com/boheme/delphi/tips/tec1550.htm
最後に書いてある、一度設定したらもう変更できないみたいな
ことが気になるのですが、
修正が入ったり、言語が変わると文字列の幅が変わるので
画面の調整も必要に思うんですが
みなさんどうしているのでしょうか?
何度も修正する場合
TNT+dxgettextが使われるのでしょうか。
0348デフォルトの名無しさん
2007/10/04(木) 12:21:130349デフォルトの名無しさん
2007/10/04(木) 15:10:25その上に貼り付けたコントロールも一緒にでかくなる。
ParentFont参照。
ウィンドウキャプションとかはWindowsが描いてるものだから無理。
0351デフォルトの名無しさん
2007/10/04(木) 16:38:180352デフォルトの名無しさん
2007/10/04(木) 22:53:42Susie Plug-in + SPIS
0353デフォルトの名無しさん
2007/10/10(水) 11:38:530354デフォルトの名無しさん
2007/10/10(水) 14:59:41>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
0355デフォルトの名無しさん
2007/10/10(水) 16:31:39マジレスするとDelphiでは無理
0356デフォルトの名無しさん
2007/10/10(水) 18:38:07コンポは知らないけど
NtQuerySystemInformation
を googleさんに begin とか pas と and で聞いたら 教えてくれるんじゃないかな
0357デフォルトの名無しさん
2007/10/10(水) 19:06:35コンボはないけど、
多分、TookHelp関数を使えば割と簡単にできると思う。
具体的にはTHelp32.pasに宣言されている、
Process32FirstとProcess32Nextを使えばいいんじゃない。
0358デフォルトの名無しさん
2007/10/10(水) 23:55:39お前の持ってるでるふゃいではな。
0359デフォルトの名無しさん
2007/10/11(木) 00:26:35逆にこれをライブラリ化してる製品ってないんじゃないかな
0360Delフサギコ ◆A6VzDeLphI
2007/10/11(木) 01:04:52ミ,,゚Д゚彡
U つ
@ミ ミ
∪''∪
DelFusa Library - Delphi OpenSource - DelFusa Floor
http://delfusa.main.jp/delfusafloor/opensource/delfusa_library_f.html
GetProcExeNameList
0361デフォルトの名無しさん
2007/10/11(木) 05:28:29>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
0362デフォルトの名無しさん
2007/10/11(木) 06:37:28インチをセンチメートルに変換するプログラムを作って
細かい仕様は自由
ヒント:1in = 2.540cm 、StrToFloat
0363デフォルトの名無しさん
2007/10/11(木) 07:36:26{$APPTYPE CONSOLE}
function InchToMetre(Value:Double):Double;
const
INCH_UNIT=0.0254;
begin
Result := Value * INCH_UNIT;
end;
begin
writeln(InchToMetre(0.050)); //12.7
writeln(InchToMetre(0.045)); //7.62
writeln(InchToMetre(0.030)); //5.56
end.
0364デフォルトの名無しさん
2007/10/11(木) 07:36:560365デフォルトの名無しさん
2007/10/11(木) 09:15:410366デフォルトの名無しさん
2007/10/11(木) 09:48:480367デフォルトの名無しさん
2007/10/11(木) 09:53:580368デフォルトの名無しさん
2007/10/11(木) 11:44:070369365
2007/10/11(木) 11:51:18でも、実は未だに解決してなくて知りたかったりして。
0370デフォルトの名無しさん
2007/10/11(木) 13:22:130371365
2007/10/11(木) 14:23:02実は自分もDel7出来ました。
が、実際の環境である、
C++ Builder 6だと上手くコンパイルできないんでつ><
0372デフォルトの名無しさん
2007/10/11(木) 16:41:560373デフォルトの名無しさん
2007/10/11(木) 19:19:370374デフォルトの名無しさん
2007/10/11(木) 22:14:070375デフォルトの名無しさん
2007/10/12(金) 15:44:09ってある^はどういう意味?
0376デフォルトの名無しさん
2007/10/12(金) 16:43:45C言語の *(a+3) と同じ
0377デフォルトの名無しさん
2007/10/12(金) 17:52:240378デフォルトの名無しさん
2007/10/12(金) 18:39:09エディットボックスにファイルをD&Dしてそのパスを取得
はどのようにやればよいですか?
0379デフォルトの名無しさん
2007/10/12(金) 19:29:56くだすれDelphi(超初心者用)その44
http://pc11.2ch.net/test/read.cgi/tech/1191657968/l50
0380デフォルトの名無しさん
2007/10/13(土) 05:15:360381デフォルトの名無しさん
2007/10/17(水) 17:21:40本は何がいい?
それかどぼんみたく、そこだけ見ればそこそこのものは作れるようになるサイトか
0382デフォルトの名無しさん
2007/10/17(水) 23:12:41ファイラ作りたいとか、MMO作りたいとか(スレがあっったりするが)
0383デフォルトの名無しさん
2007/10/18(木) 08:44:22いきなり始めて、躓いてから質問してみたら?
0384デフォルトの名無しさん
2007/10/18(木) 15:17:320385デフォルトの名無しさん
2007/10/18(木) 15:30:47ネイティブアプリが作れるようになったら試しに触ってやるよ。
0386デフォルトの名無しさん
2007/10/18(木) 23:24:20C#は良い本もヘルプもMSDNもWEBサイトも腐るほどあるし。
0387デフォルトの名無しさん
2007/11/09(金) 01:23:20Ctrl+Alt+Delを無効にする方法。
右クリックを無効にする方法。
教えて。
0388デフォルトの名無しさん
2007/11/09(金) 01:40:40マルウェアでも作るつもりですか?
0389デフォルトの名無しさん
2007/11/09(金) 05:38:410390デフォルトの名無しさん
2007/11/09(金) 06:47:53いちばん簡単なのは、DirectXのフルスクリーンモードで、そういうモードがある。
やり方は自分で調べろ
0391387
2007/11/09(金) 06:48:48ちなみに、会社のIT担当委員ってのをやってて、社員にサイバーテロの対処について教育するんだが、
本物のウィルスを使うわけにはいかないんで、ジョークウェアを作ろうと思っている。
0392387
2007/11/09(金) 06:49:39一定の時間が経過したら自動的に終了させるつもりだ。
0393デフォルトの名無しさん
2007/11/09(金) 23:31:11無効にすることはできない。無理。不可能。Deleteキーの軸を折っちゃえ。
右クリックはマウスの右クリックのスイッチを(ry
0394デフォルトの名無しさん
2007/11/10(土) 06:56:12教える立場だったら自分で調べて欲しいところ。
ヒント:海外
0395デフォルトの名無しさん
2007/11/10(土) 07:35:04おしえる側も、最低限のことは守らないと
0396デフォルトの名無しさん
2007/11/10(土) 08:46:07けどまぁ、信用してもらえないのも仕方がないからなんとかするわ。
0397デフォルトの名無しさん
2007/11/12(月) 07:10:160398delphi初心者
2007/11/12(月) 13:48:031.コンマ区切りの文字列をばらして配列にセットしてくれる関数はありませんか?
2.functionで配列は返せないのですか?
追伸: 「そんなこと自分で調べろ!」 と云う罵倒はおことわり。
0399デフォルトの名無しさん
2007/11/12(月) 13:50:460400デフォルトの名無しさん
2007/11/12(月) 13:51:220401デフォルトの名無しさん
2007/11/12(月) 22:10:08配列の型を宣言してそれを戻り値の型にすればおk
0402デフォルトの名無しさん
2007/11/13(火) 14:33:42それ、何てTStringList?
0403デフォルトの名無しさん
2007/11/13(火) 18:48:49http://www.vector.co.jp/soft/dl/win95/prog/se205882.html
【Delphi 6 導入手順 】
http://www.wikihouse.com/DelphiVIP/index.php?%C6%B3%C6%FE%BC%EA%BD%E7
【インターネットダイレクト(Indy)コンポーネント導入手順 】
http://homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm
動作確認は、メモとIdHttpコンポーネントを貼り付けて以下のコードを書いて実行してみる。
うまくいくとこのスレがメモにダウンロードされる。
Memo1.Lines.Text := IdHttp1.Get('http://live19.2ch.net/test/read.cgi/stock/1144395454/l50');
【デルファイの質問所】
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi
http://leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
http://groups.google.com/groups/search?hl=ja&q=delphi+
0404デフォルトの名無しさん
2007/11/13(火) 20:01:320405初心者++
2007/11/18(日) 11:09:49propertyの設定は
cachedupdate true /requestlive true /updateobject updatesql
updatesqlのsql設定文もできてると思うんですが、、、
begin
database1.open;
database1.StartTransaction;
query1.Open;
end;
procedure TSDIAppForm.Button1Click(Sender: TObject);
begin
if query1.UpdatesPending then begin
query1.ApplyUpdates;
end;
database1.Commit;
query1.CommitUpdates;
query1.Close;
database1.Close;
end;
どこが間違ってるのでしょうか?教えてください
Turbo Delphi for wind32
OS : wind2000です。
0406デフォルトの名無しさん
2007/11/18(日) 15:36:44>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。
0407デフォルトの名無しさん
2007/11/18(日) 17:54:220408デフォルトの名無しさん
2007/11/18(日) 18:45:04自分の居場所をキチンとメインテナンスするのは、それは当然ではあるまいか?
0409デフォルトの名無しさん
2007/11/20(火) 17:32:32問題と解答、それに議論が無いから、過疎ってスレ違いと基地外の巣窟と化してるんだな。
問題:おみくじ
randomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ
0410デフォルトの名無しさん
2007/11/20(火) 17:36:13あまりにも簡単すぎるプログラム出題でワロタw
せめて、n回凶が出る確率を計算するプログラムとかにすればいいのに。
0411デフォルトの名無しさん
2007/11/20(火) 17:47:39Queryの更新エラーは、
query1.RequestLiveのtrue/falseが
結構関係している。
0412デフォルトの名無しさん
2007/11/20(火) 22:53:350413デフォルトの名無しさん
2007/11/20(火) 23:05:26CGは専門外なんで無理ですw
0414デフォルトの名無しさん
2007/11/20(火) 23:21:520415デフォルトの名無しさん
2007/11/21(水) 01:02:340416初心者++
2007/11/21(水) 02:06:06SQL文のキー違反でした。
SQLの勉強をもっとしないと阿寒と思いました。
Accessのビューで作ったSQL文を貼り付けたりしておったのですが、、、。
エラー続出でした。
0417デフォルトの名無しさん
2007/11/21(水) 23:30:12マス目を全て塗りつぶしたらクリアとなるゲームを作る
□□□□□ □□□□□ ■■□□□
□□□□□ □□■□□ ■□■□□
□□□□□ □■■■□ □■■■□
□□□□□ □□■□□ □□■□□
□□□□□の真ん中を押すと □□□□□左上クリックで .□□□□□
■■□□□ ■□□□□
■○■□□ □■□□□
□■■■□ □□■■□
□□■□□ □□■□□
□□□□□ ○を押したら □□□□□
全部塗りつぶしたらゲームクリア
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
0418デフォルトの名無しさん
2007/11/21(水) 23:43:16ライツアウト懐かしいな
0419デフォルトの名無しさん
2007/11/22(木) 00:58:060420デフォルトの名無しさん
2007/11/22(木) 01:03:2804211/2
2007/11/22(木) 01:33:44procedure FormPaint(Sender: TObject);
procedure FormClick(Sender: TObject);
private
FTable: array[0..4, 0..4] of Boolean;
end;
procedure TForm1.FormPaint(Sender: TObject);
const
B2S: array[Boolean] of String = ('□', '■');
var
x, y: Integer;
begin
for x := 0 to 4 do
for y := 0 to 4 do
Canvas.TextOut(x*12, y*12, B2S[FTable[x, y]]);
end;
04222/2
2007/11/22(木) 01:34:15var
pt: TPoint;
begin
pt := Self.ScreenToClient(Mouse.CursorPos);
pt.X := pt.X div 12;
pt.Y := pt.Y div 12;
if (0 <= pt.X) and (pt.X <= 4) and (0 <= pt.Y) and (pt.Y <= 4) then
begin
FTable[pt.X, pt.Y] := not FTable[pt.X, pt.Y];
if 1 <= pt.X then FTable[pt.X-1, pt.Y] := not FTable[pt.X-1, pt.Y];
if pt.X <= 3 then FTable[pt.X+1, pt.Y] := not FTable[pt.X+1, pt.Y];
if 1 <= pt.Y then FTable[pt.X, pt.Y-1] := not FTable[pt.X, pt.Y-1];
if pt.Y <= 3 then FTable[pt.X, pt.Y+1] := not FTable[pt.X, pt.Y+1];
end;
Invalidate;
end;
04232/2 ver.2
2007/11/22(木) 01:40:47procedure TForm1.FormClick(Sender: TObject);
var
pt: TPoint;
x, y: Integer;
Clear: Boolean;
begin
pt := Self.ScreenToClient(Mouse.CursorPos);
x := pt.X div 12;
y := pt.Y div 12;
if (0 <= x) and (x <= 4) and (0 <= y) and (y <= 4) then
begin
FTable[x, y] := not FTable[x, y];
if 1 <= x then FTable[x-1, y] := not FTable[x-1, y];
if x <= 3 then FTable[x+1, y] := not FTable[x+1, y];
if 1 <= y then FTable[x, y-1] := not FTable[x, y-1];
if y <= 3 then FTable[x, y+1] := not FTable[x, y+1];
end;
04243/2
2007/11/22(木) 01:41:18for x := 0 to 4 do
begin
for y := 0 to 4 do
if not FTable[x, y] then
begin
Clear := False;
Break;
end;
if not Clear then
Break;
end;
if Clear then
ShowMessage('おめ');
Invalidate;
end;
0425デフォルトの名無しさん
2007/11/22(木) 02:02:470426デフォルトの名無しさん
2007/11/23(金) 11:33:40{$R *.dfm}
//スペースの都合上ここに記述本当ならTForm1のprivateが望ましい
var
BTable:array of array of Boolean;
procedure CheckComplete();
var
X,Y:Integer;
begin
for X:=1 to High(BTable)-1 do
for Y:= 1 to High(BTable[X])-1 do
if Not BTable[X,Y] then Exit;
ShowMessage('Mission Complete!');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1);
end;
0427修正1/2 (426は放置推奨 )
2007/11/23(金) 11:43:25//●最初にDrawGridを貼り付け、プロパティを以下のようにセット
Align = alClient
DefaultDrawing = False
ColCount = 6
RowCount = 6
//●FormのPrivateに以下のフィールドとメソッドを追加
BTable:array of array of Boolean; //動的二次元配列
procedure CheckComplete();
//●CheckComplete関数を書く
procedure TForm1.CheckComplete();
var
X,Y:Integer;
begin
for X:=1 to High(BTable)-1 do
for Y:= 1 to High(BTable[X])-1 do
if Not BTable[X,Y] then Exit;
ShowMessage('Mission Complete!');
end;
//●FormCreateを書く
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1);
end;
0428修正(2/2)
2007/11/23(金) 11:43:59procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
const
COLORPALS:array[Boolean] of array[Boolean] of TColor = ((clWhite,clBlack),(clSilver,clSilver));
begin
DrawGrid1.Canvas.Brush.Color := COLORPALS[(gdFixed in State) , BTable[ACol,ARow] ];
DrawGrid1.Canvas.FillRect(Rect);
end;
//●DrawGrid1SelectCellを書く
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean);
begin
BTable[ACol-1,ARow] := Not BTable[ACol-1,ARow];
BTable[ACol ,ARow] := Not BTable[ACol ,ARow];
BTable[ACol+1,ARow] := Not BTable[ACol+1,ARow];
BTable[ACol,ARow-1] := Not BTable[ACol,ARow-1];
BTable[ACol,ARow+1] := Not BTable[ACol,ARow+1];
DrawGrid1.Invalidate;
CheckComplete();
end;
0429デフォルトの名無しさん
2007/11/23(金) 18:34:167行スレで盛り上がりそうな内容だなw
0430デフォルトの名無しさん
2007/11/28(水) 17:46:320431デフォルトの名無しさん
2007/11/28(水) 23:00:38D6からそうなったのか?
パスなしだとWINDOWSフォルダにつくられるんじゃなかった?
0432デフォルトの名無しさん
2007/11/28(水) 23:01:270433デフォルトの名無しさん
2007/12/08(土) 01:31:13作れたは良いんだがクリアできない
なんかコツとかある?勿論クリアするね
0434デフォルトの名無しさん
2007/12/13(木) 23:00:310435デフォルトの名無しさん
2007/12/13(木) 23:09:52TMemo.Lines.Delete
0436434
2007/12/14(金) 06:52:10ありがとう。
ごめん、質問間違えた。
あるデータと一致する行を削除 だった。
listboxだったらitems.indexとかで簡単にできるけど
0437デフォルトの名無しさん
2007/12/14(金) 22:58:42TMemo.Lines.IndexOf
0438デフォルトの名無しさん
2007/12/22(土) 19:30:52時間がかかるものなのでしょうか?
HDアクセスしまくりで、VS2005のそれとは比較にならない程遅いのですが。
それとも何か設定等が悪いのでしょうか?
OSはWinXP, メモリは2Gです。よろしくお願い致します。
0439デフォルトの名無しさん
2007/12/23(日) 18:36:320440デフォルトの名無しさん
2007/12/24(月) 09:47:310441デフォルトの名無しさん
2007/12/26(水) 21:13:590442デフォルトの名無しさん
2007/12/26(水) 22:06:020443デフォルトの名無しさん
2007/12/27(木) 01:49:050444デフォルトの名無しさん
2007/12/27(木) 02:11:10コード補完は、特に遅くないな。
ちなみに、起動時は、起動オプションで、Delphiのプロファイルのみ読み込み、
あと余計なDB周りのコンポなどもはずしてる。
しかしメモリ2Gで、ハードディスクカリカリは感がられんな
BDS2007が遅いということあるのかね
0445デフォルトの名無しさん
2007/12/28(金) 23:14:45コード補完滅茶苦茶遅い。
数年前は大丈夫だったから多分原因はHDDだろうと勝手に思ってる。
0446デフォルトの名無しさん
2007/12/29(土) 03:44:18そのくらいのスペックで、Del6Pro つかってだけど、問題なかったぞ?
BDSの世代になって、死ぬほど重くて、マシン買い換えたが
0447デフォルトの名無しさん
2007/12/31(月) 07:28:11どこかのサイトにオプジェクト志向学ぶならC#やJavaで書かれた出来の良いコードをDelphiに移植するのが面倒だけど理解が早くなる、と言う意味の事が書かれてました。
とは言え、自分にオプジェクト志向の良いコードなのかどうか判別が出来るくらいならわざわざ移植には及ばない訳でして、適当なサンプル選びで途方に暮れています。
簡単なもの、ちょい重たいかなレベルで適当そうなコードを紹介して頂けませんか?
0448デフォルトの名無しさん
2007/12/31(月) 07:30:10ageてしまいました。
0449デフォルトの名無しさん
2007/12/31(月) 11:10:07*頭をたたくと「いてぇ」、わきの下をくすぐると「わははは」と笑うクラスをつくて
まじめな課題です。
0450デフォルトの名無しさん
2007/12/31(月) 11:59:290451デフォルトの名無しさん
2007/12/31(月) 12:06:15何度も同じコード書いてるならそこを共通化するクラスなりライブラリなりを作ってみたら。
重複部分で呼び出しているAPIなり関数なりをJediVCLでGrepかけてどうラップしてあるかを見てみればいいと思う。
あのライブラリ郡の設計が美しいかどうかは微妙なところだけど。
一番手っ取り早いのはC#をやること。
C#、Delphi両面の利点と欠点が見えてくると思う。
もちろんよりリッチなクラスライブラリの使い方も習得できるしね。
0452デフォルトの名無しさん
2007/12/31(月) 19:50:50俺も、C#のライブラリを参考にするのがお勧め。
標準のでいい。
インターフェスだけならMSDNで見たい放題、クラス設計の参考になる。
中のぞきたかったら、Reflectorででも、使えばソース見られる。
Reflectorなら、Delphiでも見られるしなw
あとは、OOPなら、動的型言語のRubyもお勧め。
ほとんどが、オブジェクトなので、それを前提として、
どういった便利な使い方ができるか?というのがよくわかる。
ただ、ガーベジコレクション前提でオブジェクトを使い捨てまくるので、
そのままは使えないのだが、
勉強にはなる。
0453デフォルトの名無しさん
2008/01/02(水) 23:14:08#さぽきれかあ
0454デフォルトの名無しさん
2008/01/03(木) 15:25:420455デフォルトの名無しさん
2008/01/18(金) 16:05:07以下の条件ならどんなコーディングをすればいいのでしょうか?
type
TSomeInts = 0..9;
IntSet1, IntSet2 = set of TSomeInts
の条件下で
if (0 in IntSet1) and (0 in IntSet2) then ...
if (0 in IntSet1) and (1 in IntSet2) then ...
...
if (9 in IntSet1) and (9 in IntSet2) then ...
のように、IntSet1且つIntSet2の組み合わせでcase文を使用したい場合です
0456デフォルトの名無しさん
2008/01/18(金) 16:08:54問題を単純化するのにミスしました
type
Int1, Int2 = 0..9;
の条件下で
if (Int1 = 0) and (Int2 = 0) then ...
if (Int1 = 0) and (Int2 = 1) then ...
...
if (Int1 = 9) and (Int2 = 9) then ...
でお願いします
0457デフォルトの名無しさん
2008/01/18(金) 16:15:330〜9と決まってるんなら単純に
case Int1*10+Int2 of
00:
01
...
とやったら?
0458デフォルトの名無しさん
2008/01/18(金) 16:29:47ども
実際ご指摘のとおり
type
Suit = (Club, Diamond, Heart, Spade);
var
card1, card2: Suit;
cardbits: BYTE
とあれば
cardbits := ($01 shl Integer(card1) + ($10 shl Integer(card2));
case cardbits of
$00, $01, $02: ...
$10, $11, $03: ...
end
みたいなことで実現しているのですが、実際は条件がもっと複雑で
単純にcase文でネストする場合三重になります
この場合可視性が悪いですし
Suit = (Null, Club, Diamond, Heart, Spade, Joker);
みたいに列挙型を変更する場合も困難を極めます
0459デフォルトの名無しさん
2008/01/18(金) 17:04:39なジャンプテーブル用意したら。
0460デフォルトの名無しさん
2008/01/18(金) 17:16:45どもw
ジャンプテーブルが使えたんですね・・・
何やってんだ俺orz
0461デフォルトの名無しさん
2008/01/19(土) 17:54:22○可読性
0462デフォルトの名無しさん
2008/01/28(月) 14:54:47function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64; overload;
OffsetにInt64をあたえても上が呼ばれてるみたいなんですが
どうなんでしょう
0463デフォルトの名無しさん
2008/01/28(月) 18:45:190464デフォルトの名無しさん
2008/02/01(金) 22:18:42Form1のLabelに表示するたびにSynchronize関数を呼び出すとそのオーバーヘッド
が凄まじく処理時間が数倍に跳ね上がってしまいます
VCLを使用する場合にはSync関数を使用して呼び出すべきとの話ですが
全てが全てSyncを使用しなければならないのでしょうか?
例えばInvalidate関数等はどのタイミングで呼び出すべきなのでしょうか
0465デフォルトの名無しさん
2008/02/01(金) 22:31:43初めからスレッドセーフなコードならばわざわざそんな事はしなくても良い。
0466デフォルトの名無しさん
2008/02/01(金) 22:33:02データがどれだけ変更されようが画面の更新は1秒に一回未満にするならこんな感じ
lastupdateview := GetTickCount;
while true do
begin
処理
if GetTickCount - lastupdateview > 1000 then
begin
lastupdateview := GetTickCount;
Synchronize;
end;
end;
0467デフォルトの名無しさん
2008/02/01(金) 23:05:17ども。
Invalidateの呼び出しはそれでやってます。
その方法では、例えば処理中のファイル名を表示しようとした場合
重い処理を行っている時は表示されているファイル名と処理している
ファイルが異なるような場面が発生しませんか?
かと言って”処理が長くなるようだったら強制的に表示する”って方法
を実現しようとするとタイマーを使用するなり手間がかかる気がするのですが・・・
0468デフォルトの名無しさん
2008/02/01(金) 23:30:48全部のファイルを処理すると処理に時間がかかったということですよね?
> 重い処理を行っている時は表示されているファイル名と処理している
> ファイルが異なるような場面が発生しませんか?
それは仕方がないかと。
>>466では、1秒になってるけど、100m秒くらいにすればわからなくないかな?
ところで、VCLのスレッドセーフ周りはよく知らないのだが、
Labelの書き換え(Caption?Text?)は、メインスレッドから弄ってない場合でも、
他のスレッドどから書き替えたらダメなのものかね。
0469デフォルトの名無しさん
2008/02/01(金) 23:48:28ども。
>>466の例で言うならば、”処理”が重たい場合はLabelが書き換えられませんし
”処理”の前にLabelを書き換えようとした場合はLabelの書き換えがスキップ
された直後に重い処理が着ちゃうと対応できません
メインフォームにメッセージを投げて知らん振りしたほうが健全かな?とは
思いますが、Delphiっぽくなくなっちゃうんですよね
0470デフォルトの名無しさん
2008/02/02(土) 00:37:08処理するスレッドが重くてメインスレッドに反映されにくい場合なら、
スレッドの優先度変えればいけないかな・・・(未確認だが)
> メインフォームにメッセージを投げて知らん振りしたほうが健全かな?とは
いや、それもありかと思います。Delphiスレでもよく聞く話です。
VCL Formだとメッセージとりやすいですしね。
ただ、スレッドが重くてうんぬんの場合、この方法でも一緒かな?という気が
0471デフォルトの名無しさん
2008/02/02(土) 07:37:18IntersectRectをスレッド側で発行すればいいでしょ。
0472デフォルトの名無しさん
2008/02/02(土) 07:39:04○InvalidateRect
0473デフォルトの名無しさん
2008/02/02(土) 22:21:030474デフォルトの名無しさん
2008/02/09(土) 04:23:31といったコードがあるとします
i := Max(0, i);
と書いたほうがスマートな気がしますし
i := Max(0, Min(i, count-1));
と書くと簡単に範囲を限定できます
しかし、冗長に思えるif分の繰り返しのほうがいいコードが生成されます
この場合どちらを使用すべきなんでしょうか・・・
0475デフォルトの名無しさん
2008/02/09(土) 05:20:29マシンスペックが高い今、そんなことはいまどき考える必要はない
わかりやすい方にしる
0476デフォルトの名無しさん
2008/02/09(土) 12:29:24Maxはmathユニットの実関数だから仕方ない。
どうしてもというならアセンブラ使え
procedure TForm1.Button2Click(Sender: TObject);
function LimitZero(d:Integer):Integer;
asm
CDQ ;//eaxが負数ならedx=-1
not edx;
and eax,edx ;//
end;
var i:Integer;
begin
AllocConsole;
for i:=-10 to 10 do begin
WriteLn( LimitZero(i));
end;
end;
0477デフォルトの名無しさん
2008/02/09(土) 18:13:05どうしても転化したければ、inline使え
0478デフォルトの名無しさん
2008/02/24(日) 05:53:01フィルタをかけたかったらどうすりゃいいですかね?
俺が思いつくのは同じ大きさのBitmapを用意して
それを一色で塗りつぶした上で半透明化とかなんですけど
これってすんげえ無駄にメモリ食いますよね?
もっといい方法ってあります?
0479デフォルトの名無しさん
2008/02/24(日) 06:02:23DIBにして、ScanLineでBITMAPのデータを直でいじくる
0481デフォルトの名無しさん
2008/02/24(日) 06:37:09srcが元の色
colorがセロファンの色
destが書きこむ色
αが半透明のアルファの度合いだとしたら、
dest = color * α + src * (1 - α)
これをrgb各それぞれで計算してやるだけだぞ
こういうのは「αブレンド 計算式」ででてくればすぐにでてくるよ
0482デフォルトの名無しさん
2008/02/26(火) 14:47:50は無いのでしょうか?
0483デフォルトの名無しさん
2008/02/26(火) 16:55:55掛け算の場合も
(Amsb + A63)*(Bmsb + B63) = Amsb*Bmsb + Amsb*B63 + Bmsb*A63 + A63*B63
で、Amsb が符号付きだろうが符号無しだろうが、下位64bitの結果には影響しない。
0484デフォルトの名無しさん
2008/02/26(火) 17:52:05ulonglongを使用している構造体があったんでどう実装しようかと・・・
現状では下位32bitしか使用していないのでDWORDでも問題無いとは
思うのですが、手を抜いて将来トラブルと嫌だなぁ・・・と思った次第です
0485デフォルトの名無しさん
2008/02/26(火) 19:37:380486デフォルトの名無しさん
2008/02/27(水) 11:47:31だから SHR 演算は 符号無し右シフトと等価だった
0487デフォルトの名無しさん
2008/02/27(水) 19:01:280488デフォルトの名無しさん
2008/02/27(水) 20:44:10ありがとうございます
何をすればアルファブレンドできるかは理解できたんだけども
見つかったページがそれをシフト演算で行ってて
それの意味がわかんなくて困ってます
ページを貼らせてもらうと
http://www.sm.rim.or.jp/~shishido/delmono.html
> r:=cl and $ff; // RGB成分に分解
> g:=cl and $ff00 shr 8;
> b:=cl and $ff0000 shr 16;
必要な色成分以外を $ff なんちゃらでマスクして消しちゃってるんでしょうが
$の記号が何をするのかわからないのがひとつめ
> cl:=Round(r*0.3+g*0.59+b*0.11); // 明るさを計算
cl って RGB値じゃなかったでしたっけ? なんで明るさだけを入力できるかさっぱりなのが2つめ
> pp^:=cl+cl shl 8+cl shl 16; // (j,i)に明るさを書き戻す
さっきRGB値を明るさに変えたのになんでこんな処理ができるのか意味不明なのが3つめ
とわからないことだらけです。助けて
0489デフォルトの名無しさん
2008/02/27(水) 21:55:42$は16進数のプレフィクス。C/C++の0xに相当。
明るさは人間の目のRGBに対する感度の違いを考慮して計算している。昔の白黒テレビで
カラー画像を見ているのと同じ。
その明るさを持つグレーの値を計算している。
0490デフォルトの名無しさん
2008/02/29(金) 04:03:23下の二つは輝度を計算するときの公式みたいなものでアルファブレンドとは全然関係ないよ
0491478
2008/03/01(土) 05:18:35もっともほんとにやりたい事は
フィルタの範囲指定したり戻したりなんで
これからもうひと頑張りいるけど、あとはなんとかなるでしょ。
ところでRGB値ってbgrの順で保存されてるんだね。変なの
>>489-490
�dです
0492749
2008/03/01(土) 20:27:17BGRの順番で格納されているのはTColor
実際には速度の面からPixelでは無くScanLineでBMPに直接アクセスする
ことになるが、その場合の格納方法はまた違う
0493デフォルトの名無しさん
2008/03/01(土) 21:25:240494デフォルトの名無しさん
2008/03/02(日) 13:12:3832bit DWORDだとrgbだな
>>478はメモリの格納順では無くて上位ビット->下位ビットで話してるからな
0495デフォルトの名無しさん
2008/03/04(火) 03:36:32何をわけの分からないこと言ってるんだ
同じことだろ
0496デフォルトの名無しさん
2008/03/04(火) 04:23:570497デフォルトの名無しさん
2008/03/04(火) 15:49:44WriteProcessMemoryのAPIを使って値を書き込んだのですが、
おもう値が書き込まれません。以下がコードです。
GetMem(buf, 1);
buf^ := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), buf, NumberOfBytes, Write);
これを行うと、値が35901というのが書き込まれてしまいます。61という値を書き込みたいのですが、どのようにすればよろしいのでしょうか?
0498デフォルトの名無しさん
2008/03/04(火) 16:18:0835901 = $8C3D
正常に動いてるじゃないか
0499デフォルトの名無しさん
2008/03/04(火) 16:40:25いえ、普通に$3D(61)という値を書き込みたかったんですが、その場合はどうすればよろしいでしょうか?
0500デフォルトの名無しさん
2008/03/04(火) 17:35:44そりゃ1Byteしか書き込んでいないから。
0501デフォルトの名無しさん
2008/03/04(火) 18:29:49NumberOfBytes
を2という値に設定はしたのですが、これでは設定不足でしょうか?
0502デフォルトの名無しさん
2008/03/04(火) 20:08:370503デフォルトの名無しさん
2008/03/04(火) 21:04:31すいません、私のレベルが低くていまいちよくわかりません・・・。
WriteProcessMemory(WindowHandle, ptr(Address), buf, Sizeof(buf), Write);
上のようにすればいいという事でしょうか?
読み込む時というのがわかりません・・・。
0504デフォルトの名無しさん
2008/03/04(火) 21:47:00>値が35901というのが書き込まれてしまいます。
これが確認できたってことはその書き込んだアドレスから読み込んだんだろ?
その時35901だったってことは、少なくとも2bytes読み込んでいるということ。
0505デフォルトの名無しさん
2008/03/04(火) 21:55:22いえ書き込んだアドレスから読んだんではなくて、
表示されている値が変化したので確認できたという事です。
えとつまりは61という値にはできないという事でしょうか?
0506デフォルトの名無しさん
2008/03/04(火) 22:55:41意味不明なんだよ、質問が。なにをどうしたらなんの表示が変化したの?
WriteProcessMemory() の第一引数が WindowHandle って時点でどうかしてる。
0507デフォルトの名無しさん
2008/03/04(火) 23:48:37理解できてないから予期しない結果になるんだよ。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdebug/html/_win32_writeprocessmemory.asp
0508デフォルトの名無しさん
2008/03/05(水) 07:13:00>>507
すいません、書き忘れていました。
OpenProcessでもってきたハンドルを第一引数に入れています。
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
質問をまとめると、
var
buf: PChar;
WindowHandle: Integer;
Write: Cardinal;
WindowHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
GetMem(buf, 1);
buf^ := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), buf, Sizeof(buf), Write);
で対象のプロセスの31という値を61に書き換えようとしたところ、35901という値に誤って(?)表示されてしまった。
というわけです。わかりにくくてすいません・・・。
たぶんbufの値に問題があると思いますが・・・。
0509デフォルトの名無しさん
2008/03/05(水) 08:04:080510デフォルトの名無しさん
2008/03/05(水) 08:06:03動的に確保されたバッファーのサイズをコンパイラが知ってるはずない
0511デフォルトの名無しさん
2008/03/05(水) 08:58:03>>510
bufのサイズを指定すればよろしいのでしょうか?
Sizeof(buf)
で行っている作業でサイズは取得できてると思うのですが、これとはまた別の話でしょうか?
0512デフォルトの名無しさん
2008/03/05(水) 09:29:57Sizeof(buf) は、ポインタのサイズを取得してるので、作業領域のサイズを得ているわけじゃない
0513デフォルトの名無しさん
2008/03/05(水) 09:39:402、Writeも適切な名前でない。WriteSize とか cbWriteとか
3、Sizeof(buf)はポインタサイズで現在は4を返してる筈。
よって、
var
buf: string;
hProces : THandle;
WriteSize:DWORD;
WindowHandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
SetLength(buf,1);
buf[1] := Chr($3D);
WriteProcessMemory(WindowHandle, ptr(Address), PChar(buf), length(buf), Write);
ただし、35901が表示されたという事は、ホントは書きたい値は1バイトではなく2バイトか4バイト
の可能性が大。
0514デフォルトの名無しさん
2008/03/05(水) 11:00:22TColorと32bitRGBじゃRGBの順序が逆だよ?
そのまんまキャストは不可
ごっちゃにしてない?
0515デフォルトの名無しさん
2008/03/05(水) 11:36:40メモリ上の並びとしては R,G,B で、それを32bitの変数に読むと
エンディアンの関係で [xx ,RR , GG , BB] となるだけで、同じだろ?
0516デフォルトの名無しさん
2008/03/05(水) 13:53:56>>513
こんにちは。
ご教授感謝致します。以下が修正コードです。
var
buf: string;
hProces : THandle;
WriteSize:DWORD;
hProces := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
SetLength(buf,1);
buf[1] := Chr($29A);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), length(buf), WriteSize);
CloseHandle(hProces);
これで望む結果を出すことができました。ありがとうございます。
SetLength はメモリを再確保してくれる関数らしいですね、てっきりSizeOfで領域まで確保してくれているとばかり思っていました。
このような初心者に手を差し伸べてくださり本当にありがとうございます。
またこれでひとつ勉強になりました。それではm(_ _)m
0517デフォルトの名無しさん
2008/03/05(水) 19:02:16> TColor を Graphics ユニットに定義された定数で指定せずに,4 バイトの 16 進数で指定した場合,
> 下位の 3 バイトはそれぞれ青,緑,赤の RGB カラーの輝度を表します。
> $00FF0000 という値は最高の輝度,つまり純粋の青を示し,$0000FF00 は純粋の緑を示し,
> $000000FF は純粋の赤を示します。$00000000 は黒,$00FFFFFF は白です。
>>514
これ以上に何か意見があるなら聞こうか?(笑)
0518デフォルトの名無しさん
2008/03/05(水) 20:01:01痛いヤツだな
>>493=>>495=>>517なのか?
DIB32はメモリ上はBB GG RR 00って順番で並んでいる
コレをDWORDでアクセスすると$00RRGGBBになるだろ?
TColorの$00BBGGRRとは逆になるんだよ
初心者スレで無知を晒すのは恥じゃ無いが、学ぶ能力が無いのは恥るべき
0519デフォルトの名無しさん
2008/03/06(木) 00:55:230520デフォルトの名無しさん
2008/03/06(木) 02:29:10なんか必死だけどちゃんと仕様見てきて言えよ
0521デフォルトの名無しさん
2008/03/06(木) 05:12:31????
0522デフォルトの名無しさん
2008/03/06(木) 09:27:41昨日メモリについて質問した者です。
気になる事がありましたので、お聞き致します。
仮に
SetLength(buf,1);
buf[1] := Chr($29A);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), length(buf), WriteSize);
CloseHandle(hProces);
をbuf[1] := Chr($29A);としたい場合は、
function StrToByte(const s: string): byte;
var
i, n : integer;
begin
result := 0;
n := 1;
i := Length(s);
while (i > 0) and (n <= 128) do begin
if s[i] = '1' then
Inc(result, n);
n := n *2;
Dec(i);
end;
end;
を使ってbuf[1] := Chr(StrToByte('$29A'));を使って同様の結果がでないのはなぜでしょうか?
0523522
2008/03/06(木) 10:13:29SetLength(buf,1);
buf[1] := Chr($29A);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), 3, WriteSize);
CloseHandle(hProces);
こう書いたのですが、うまくいきませんでした。上の質問意味不明ですねOrz
0524デフォルトの名無しさん
2008/03/06(木) 10:40:082バイトを書きたいなら $29A なら $02 と $9Aに分けて
SetLength(buf,2);
buf[1] := Chr($9A);
buf[2] := Chr($02);
WriteProcessMemory(hProces, ptr(Address), PChar(buf), length(buf), WriteSize);
または、
var
SendInt:WORD;
として
SendInt := $029A
WriteProcessMemory(hProces, ptr(Address), @SendInt , SizeOf(SendInt), WriteSize);
0525デフォルトの名無しさん
2008/03/06(木) 12:17:08どうして PCharではなくて string を使ってるかというと、
PCharだとメモリ確保した後、開放しなければいけないけど
stringなら自動開放されるからtry〜finally を使わなくてもいいから便利だから。
PCharやstringを使うのは、可変サイズに対応する為。
3バイトでも4バイトでも同じコードで対応出来るからね。
でも固定サイズなら、ポインタで処理する必要はない。
渡す時にポインタを渡せばいい。
byte,WORD,DWORDのそれぞれの引数用の関数3つを作る方がスマートだよ
0526デフォルトの名無しさん
2008/03/06(木) 15:50:39>>525
ご回答ありがとうございます。
必要な事はできたのですが、純粋に疑問になったので思い切って質問してみた所存です。
二つに分けてやるのは知りませんでした。
Stringは自動開放されるのを知っていましたが、Pcharも自動で開放されるかと思ってました(汗
私はbyte,WORD,DWORDとかの三つの関数作るなんて思わないでがつがつ書いていましたOrz
あとこれは余談ですが、GetMEMとSetLengthとは同じなんですかね?
私がGETMEMで確保してましたが、回答してくださった方はSetLengthでやっていました。
これはアセンブラのCMPとTESTみたいな感じで好みによってでしょうか?
別にこれには答えてくださらなくても構いません。
回答者のお二人ありがとうございました、目からウロコです><
0527デフォルトの名無しさん
2008/03/06(木) 17:38:22ヘルプを読めばGetMemとSetLengthの違いがわかります
0528デフォルトの名無しさん
2008/03/06(木) 21:07:30ほんとだ・・・いつもメモリ扱う時はPchar使ってたから、意識しないで使ってたけど、
違いあったんですね・・・。
どうもでした。
0529デフォルトの名無しさん
2008/03/07(金) 11:01:59ttp://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ヒント
GUIアプリでも AllocConsole; を入れておけばコンソールを出して write/wrilteln を使う事が出来ます
TMemoを貼ってLines.Add をプリント代わりとしてもいいです。
0530デフォルトの名無しさん
2008/03/07(金) 13:51:19結局どっちなんだよw
0531デフォルトの名無しさん
2008/03/07(金) 14:04:56bitmap.Canvas.Pixels[0,0] := TColor($0000FF);
PDWORD(bitmap.ScanLine[1])^ := DWORD(TColor($0000FF));
PDWORD(bitmap.ScanLine[2])^ := DWORD($0000FF);
で試してみた
結果
赤
青
青
嘘つきばっかだなw
0532デフォルトの名無しさん
2008/03/07(金) 22:39:540533デフォルトの名無しさん
2008/03/08(土) 17:40:34>DWORD($0000FF);
意味ねぇーー
0534デフォルトの名無しさん
2008/03/12(水) 12:35:55「意味が無い」ことを説明してるんでは?
TColorが上位、下位逆なのを説明されても理解できていない&認めようと
しないのが多数居たのが驚き。
いや、それだけ初心者向けの言語ってことなんだろうな。
0535デフォルトの名無しさん
2008/03/12(水) 18:38:440536デフォルトの名無しさん
2008/03/15(土) 15:15:36このDLLをリソースには入れれたのですが実行時にDLLをHDDに書き込まずに動かす方法があれば教えてください
環境は、WinXP,Delphi6です。。。ファイルをEXE1つだけにしたいだけなのですがお願いします
0537536
2008/03/15(土) 16:18:060538デフォルトの名無しさん
2008/03/15(土) 20:09:450539デフォルトの名無しさん
2008/03/27(木) 17:33:470540デフォルトの名無しさん
2008/04/11(金) 06:48:24間違っています。
以上。
↓次どうぞ
0541デフォルトの名無しさん
2008/04/16(水) 15:44:57BCBの__DATE__みたいな奴です。
0542デフォルトの名無しさん
2008/04/16(水) 22:47:590543デフォルトの名無しさん
2008/04/17(木) 10:01:18実験コード
procedure TForm1.FormCreate(Sender: TObject);
begin
with TStringList.Create do try
Add(''''+formatDateTime('yyyy/mm/dd',now)+'''');
SaveToFile('Test.dat');
finally free end;
Caption:={$I test.dat};
end;
名前付きパイプで、日付データを返すようなのを作って走らせて
{$I \\.\pipe\DatePipe } とか
0544デフォルトの名無しさん
2008/04/17(木) 11:30:32APIで読めば読めるけど、LoadFromFileでは読めない。
たぶんLoadFromFileではサイズを先に読んでから処理するからなんだろう。
だから $Iでも読めないかも
0545デフォルトの名無しさん
2008/04/17(木) 18:58:18(名前が label1,label2..label10 とかだとして)
それぞれのラベルのCaptionにループを使ってアクセスするにはどうしたらいいんでしょう。
0546デフォルトの名無しさん
2008/04/17(木) 21:02:210547545
2008/04/17(木) 21:33:340548デフォルトの名無しさん
2008/04/24(木) 20:51:42それを埋め込んだデルファイを起動するアプリを作っていいかんじになりました、どうも。
0549デフォルトの名無しさん
2008/05/14(水) 16:04:58イベントハンドラを教えてくださいorz
0550549
2008/05/14(水) 16:16:320551デフォルトの名無しさん
2008/05/17(土) 13:45:07Stringでなく数値で操作できるGridコンポ探しています。
どなたかご存じないですか?
0552デフォルトの名無しさん
2008/05/18(日) 02:03:35いみふめ
数値と文字列は相互可変なんだから TStringGrid でなにが不足なんだ?
0553デフォルトの名無しさん
2008/05/18(日) 10:57:120554デフォルトの名無しさん
2008/05/18(日) 11:09:12StringGridKeyPressイベントで
if not (Key in ['0'..'9']) then Key := #0;
とかやって入力を潰してしまえばいい。
ペーストも含めて対策したいならSetEditTextでゴミを取り除いてCells[]にセットしてやればいい。
他にもなんか対策すべきだったと思うが忘れた。
まあそこらへんのノウハウ込みのコンポを探してるんだろうが。
0555デフォルトの名無しさん
2008/05/20(火) 12:02:23StringGridKeyPressとSetEditTextで新しいコンポを作れそうです。
ありがとうございました。
0556デフォルトの名無しさん
2008/05/28(水) 18:57:24別のストリーム、たとえば、TContentStreamにファイルの中身を設定しようとすると、
どういった記述となりますか?
0557デフォルトの名無しさん
2008/05/28(水) 19:55:360558デフォルトの名無しさん
2008/05/28(水) 19:59:250559デフォルトの名無しさん
2008/05/31(土) 02:17:47ローカルの地図画像であんな感じのアプリを、db連動で作ってみたいんだけど、何を参考にすればいい? グラフィック関係かと思って、ゲーム関係見たけど、あまり参考になりそうにない。
0560デフォルトの名無しさん
2008/06/11(水) 11:48:36juni := member_suu + 1;
for t := 0 to member_suu - 1 do
begin
for k := 0 to member_suu - 1 do
begin
if StrToInt(ListBox1.Items[t]) >= StrToInt(ListBox1.Items[k]) then
juni := juni - 1;
end;
ListBox2.Items[t] := IntToStr(juni);
juni := member_suu + 1;
end;
上の関数で整数の特典に対して順位をつけたのだが、同点がおおくて1位等が重複してしまうので、
重複しないようにしたい。1位と2位の差はあまりこだわっていなく、名前順でいいしランダム(条件なし)でもいい。
アドバイスください。
0561デフォルトの名無しさん
2008/06/11(水) 14:38:25・ランダムなら、得点とランダム値をソートのキーとする
0562デフォルトの名無しさん
2008/06/22(日) 03:10:210563デフォルトの名無しさん
2008/06/22(日) 03:11:130564デフォルトの名無しさん
2008/07/23(水) 17:05:00表示させる方法はあるのでしょうか?
無ければ、Menuライクなコンポーネント?
0565デフォルトの名無しさん
2008/07/23(水) 19:25:230566デフォルトの名無しさん
2008/08/08(金) 13:42:48レジストリを操作(キー・値の変更・削除)したいんですが
SYSTEMユーザーしか操作権限がない状態です
これらを操作する方法などありますか?
0567デフォルトの名無しさん
2008/08/08(金) 22:03:580568デフォルトの名無しさん
2008/08/10(日) 11:06:010569デフォルトの名無しさん
2008/08/10(日) 14:37:090570デフォルトの名無しさん
2008/08/10(日) 14:57:37本番環境とごっそり置き換える作業をプログラム化したいんです。
今、それをするのに手作業(設定時なのでAdministrato)で
レジストリのアクセス権つけて不必要な登録を消したりとかしてます。
0571デフォルトの名無しさん
2008/08/10(日) 15:14:040572デフォルトの名無しさん
2008/08/10(日) 16:17:13刻まれているので消しているということらしいんですが
(この辺がテスト環境と本番環境で変わってくるので変更したい)
実際には、その環境の情報を見てはいないんですが
消す必要がないのかな・・・
0573デフォルトの名無しさん
2008/08/29(金) 00:44:34MIMEとか、ishのような感じで、当然、可逆変換で。
0574デフォルトの名無しさん
2008/08/29(金) 08:19:150575573
2008/08/29(金) 19:31:440576デフォルトの名無しさん
2008/08/29(金) 21:25:36まともなRDBMSならBLOB使うべきだし、
BLOB使えないなら別の名前を与えてファイルのまま保存、使うときは逆参照汁。
0577デフォルトの名無しさん
2008/08/29(金) 21:29:26ttp://www.google.com/codesearch?q=BASE64+lang%3Apas
この辺りでも参考にしてくれ。
0578デフォルトの名無しさん
2008/08/31(日) 01:49:12文字列フィールドに入りきれない文字列を画像に変換してBLOBに保存する、って無理?
0579デフォルトの名無しさん
2008/08/31(日) 11:22:22使用してるDBが分からないけど、Delphiからということを考慮するとFirebirdか?
もしそうなら、難しいこと考えず、サブタイプが1(テキスト)のBLOG作ればいいんじゃないのかな?
ほかのDBだと、
PostgreSQLはTEXT型があるから、意識する必要なし
SQL Serverも、2005からVARCHAR(MAX)があるから、意識する必要なし
MYSQLもTEXT型があるみたいだ
ORCLE, DB2はシラネ
0580デフォルトの名無しさん
2008/08/31(日) 11:37:40ローカルで火鳥かMSQLか何かの組み込みエンジン(まぁ、これは何でもよい。)、相手先はOracle。
Oracleにはあらかじめ定義された文字・数値項目と画像の入力ができる。
しかし、設計が追いついていないため、利用者で必要な情報を入力する文字項目が足りない。
画像なら何十枚でも追加可能。
そこで、ローカル情報を画像に変換してオラクル側に画像として保存すれば、当面は事足りるってこと。
もちろん取り出したら、ローカル側では文字情報に戻す。
その時の変換作業用っていうか、状態確認用みたいなので、ローカルでも同じものを保存しておきたい。
と言うことなんだけど。
0581デフォルトの名無しさん
2008/09/01(月) 07:15:35そういったサンプルコードないですか?
0582デフォルトの名無しさん
2008/09/01(月) 19:27:39IMEの状態が変わるときのメッセージ(WM_IME_NOTIFY)を受けたら
IMEの状態を取得して、ONの時はColorプロパティを適当な色に変えれば良いんだ。
0583デフォルトの名無しさん
2008/09/02(火) 01:05:42タイマーを一つだけ使うのと、処理それぞれでタイマーを作るのでどっちが一般的なんでしょうか?
また、どっちが軽くなるんでしょうか?
よろしくお願いします。
0584デフォルトの名無しさん
2008/09/02(火) 03:24:52タイマー二つまわすよりも一つの方が理屈としては軽い。
ただタイマーごときで重くなるようなPCは今時存在しない。
0585デフォルトの名無しさん
2008/09/02(火) 03:31:58ありがとうございます!
助かりました
0586デフォルトの名無しさん
2008/09/08(月) 08:07:01凡例を表示させると、凡例がグラフの裏側へと隠れてしまいます。
(枠の端っこのちょっとだけ見えている状態です)
これをグラフよりも手前に表示させる方法を教えてください・・
0587デフォルトの名無しさん
2008/09/08(月) 20:01:27http://namidame.2ch.net/test/read.cgi/mitemite/1220869722/
こういうスレつくってみた。
0588デフォルトの名無しさん
2008/09/09(火) 06:27:010589デフォルトの名無しさん
2008/09/10(水) 14:49:55Linux環境にてDelphi互換のLazarusをインストールして使いたいと思い
freePascal本体、Freepascalのソース、Lazarus本体をインストール致しました。
Lazarusは立ち上がり、ソース入力後
いざ実行というときに、コンパイラに弾かれてしまいます。
以下エラーメッセージです。
/usr/bin/ld: cannot find -lX11
project1.lpr(17,1) Error: Error while linking
project1.lpr(17,1) Fatal: There were 1 errors compiling module, stopping
リンク関係の設定を何かはじめに行なわないといけないのでしょうか?
もし、ご存じの方いらっしゃいましたらご教授ください。
よろしくおねがいします。
0590デフォルトの名無しさん
2008/09/10(水) 18:39:03とりあえずこういうスレがあるからそちらで聞くとよいと思われ。
【Delphi互換!?】FreePascal【GPL】
http://pc11.2ch.net/test/read.cgi/tech/1137051510/l50
0592デフォルトの名無しさん
2008/09/12(金) 13:51:14ユーザーの処理にあわせて、新しいフォームを作り、そこに画像を表示させたいんです。
元々用意しとくんじゃなくて、いくらでも増やせていけるように。
たとえばフォトショップでいくらでも画像ひらいて、どんどんウィンドウ増えるじゃないですか。
あーいう感じです。
0593デフォルトの名無しさん
2008/09/12(金) 13:59:37TForm1=class(TForm)
end;
forms: array of TForm1
SetLenght( forms, 10 );
for i := 0 to 9 do
forms[i] := TForm1.Create( Self );
って感じで。
これだったら、デザイナで1つ作って、実行時は10個フォームが出きるが。
0594デフォルトの名無しさん
2008/09/12(金) 15:03:51このフォームの上につくるオブジェクトもこれでOKですかね。
いわゆる動的生成をやるってことですよね?
0595デフォルトの名無しさん
2008/09/12(金) 15:13:38フォーム上のObjectが同じなら最初にデザイナで作っておく。
フォームごとに変わるなら、それぞれ、動的作成するんだけど、
動的作成しなければいけないObjectが多数ある場合は、
デザイナで作った方が簡単だと思う。
0596デフォルトの名無しさん
2008/09/12(金) 15:49:300597デフォルトの名無しさん
2008/09/17(水) 18:27:00アップローダー作ったら公開してくれるの?
0598デフォルトの名無しさん
2008/09/18(木) 00:30:44半年ROMれ
0599デフォルトの名無しさん
2008/09/18(木) 00:35:400600デフォルトの名無しさん
2008/09/18(木) 00:47:110601デフォルトの名無しさん
2008/09/20(土) 21:18:100602デフォルトの名無しさん
2008/10/11(土) 15:50:000603デフォルトの名無しさん
2008/11/18(火) 23:02:01D5にFastCode.Libraries-0.6.4入れたらStrUtils.pasなど新しいものが入っていないので断念して
某所さんの古い記事にあった「詰め合わせセット RTL Replacement Pkg v0.3」を入れました
>Delphi 4 以降に対応しています。私はまだ試していないのですが、Delphi 7 以前では特にお勧めだと思います。
とあったのですがやはりエラーの嵐でサンプルすらコンパイル出来ませんでした
どなたかD5で使っておられる方は居ませんでしょうか?
D2007も持ってはいるんですが起動時間や手軽さからD5は手放せないのです
0604デフォルトの名無しさん
2008/11/18(火) 23:27:220605デフォルトの名無しさん
2008/11/18(火) 23:29:02D5持ってたらなんなの?
0606デフォルトの名無しさん
2008/11/18(火) 23:35:15D2007ではFastCodeの効果ありますでしょうか?
0607デフォルトの名無しさん
2008/11/18(火) 23:35:47いえ、FastCodeの話です
0608デフォルトの名無しさん
2008/11/19(水) 00:44:330609デフォルトの名無しさん
2008/11/19(水) 02:09:08マルチバイト非対応なんで気を付けてね
0610デフォルトの名無しさん
2008/11/19(水) 09:14:53FastCodeとかFastMoveって何?
0611デフォルトの名無しさん
2008/11/19(水) 10:24:370612デフォルトの名無しさん
2008/11/19(水) 14:31:52標準のシステムの関数を速いのにおきかえたものただし>>609の問題があったはず
0613デフォルトの名無しさん
2008/11/22(土) 11:32:010614デフォルトの名無しさん
2009/02/02(月) 18:23:000615デフォルトの名無しさん
2009/02/05(木) 13:17:57kwsk
0616デフォルトの名無しさん
2009/02/19(木) 15:08:180617デフォルトの名無しさん
2009/02/20(金) 00:23:17先頭3バイト以降を別のStreamにコピーするとか
MemoryをPCharにキャストして[3]とか
0618デフォルトの名無しさん
2009/02/20(金) 07:53:170619デフォルトの名無しさん
2009/02/21(土) 10:04:300620デフォルトの名無しさん
2009/02/21(土) 10:27:00その前にそのscanfとやらが、Delphiでどの関数にあたるのかを説明してくれ。
0621デフォルトの名無しさん
2009/02/21(土) 15:21:45ないはず
0622デフォルトの名無しさん
2009/02/27(金) 16:36:03strtoint strtofloat strtocurr他で一個づつ変換
0623デフォルトの名無しさん
2009/03/24(火) 14:32:450624デフォルトの名無しさん
2009/03/24(火) 15:18:41試すのに1分もかからないと思うが、どうよ?
0625デフォルトの名無しさん
2009/06/18(木) 20:49:46VCLコンポーネントから派生したコンポーネントを
作るにはどうすればいいでしょうか?
0626デフォルトの名無しさん
2009/06/18(木) 21:05:120627デフォルトの名無しさん
2009/06/18(木) 21:10:00ありがとうございます。
派生したコンポーネントを使いたいのですが
どうすればいいでしょうか?
フォームに派生クラスのコントロールをどうやって置いたら
よいのかわからなくて、適当なコントロールを置いた後に
dfm ファイルを直接書き換えてみたのですが、見つからない
と言われた挙げ句、関連している pasファイルを破壊されて
しまいました。
0628デフォルトの名無しさん
2009/06/18(木) 21:14:31OOPの知識なんかも結構必要になるし。
0629デフォルトの名無しさん
2009/06/18(木) 21:17:15ありがとうございます。
ただ単純に TRadioButton の CreateParams を
オーバライドしたいだけなのです。
0630デフォルトの名無しさん
2009/06/18(木) 21:26:522009は持ってないから変わってるかもしれないが。
unit cMyRadioButtonEx;
uses // todo:必要なユニットを列挙
type
TRadioButtonEx = class(TRadioButton) // or TCustomRadioButton;
...
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TRadioButtonEx]);
end;
// todo: TRadioButtonExの実装
end.
0631デフォルトの名無しさん
2009/06/18(木) 21:31:53メニューには、コンポーネント|インポートと
コンポーネント|新規VCLコンポーネントの
2種類しかなく、インポートはタイプライブラリと
ActiveXコントロール、.NETアセンブリの取り込み
の3種類しかありませんでした。
新規VCLコンポーネントで派生クラスを作れるような
雰囲気でしたが、実際に操作してみると内部エラー
らしきエラーが出て処理が進まないのです。
Delphi2009はバグだらけという事で諦めるしかないの
でしょうか?
0632デフォルトの名無しさん
2009/06/18(木) 21:36:29gui作るならpythonで十分だろ
0633デフォルトの名無しさん
2009/06/18(木) 21:37:496万もしたのに、この有様です。
泣けてきます。
0634デフォルトの名無しさん
2009/06/18(木) 21:43:29CreateParamで具体的に何指定したいかとかさ。
0635デフォルトの名無しさん
2009/06/18(木) 21:45:56ありがとうございます。
BS_PUSHLIKEスタイルを付けたいだけなのです。
0636デフォルトの名無しさん
2009/06/18(木) 21:52:31アドレス 00000018 に対する読み込み違反がおきました。
というエラーです。
0637デフォルトの名無しさん
2009/06/18(木) 22:28:28できたユニットをパッケージにつっこんで
右のプロジェクトマネージャからパッケージを右クリック→
インストールを選択で終わりだろ
0638デフォルトの名無しさん
2009/06/18(木) 22:32:54それを試してみたら 636 に書いた例外が
発生して止まってしまいました。
フォームの dfm を手で編集してみると、
その フォームに関係する Pascalのソースファイルが
破壊されます。
0639デフォルトの名無しさん
2009/06/18(木) 23:36:41interface
uses
SysUtils, Classes, Controls, StdCtrls;
type
TRadioButtonEx = class(TRadioButton)
end;
0640デフォルトの名無しさん
2009/06/18(木) 23:37:07implementation
procedure Register;
begin
RegisterComponents('Samples', [TRadioButtonEx]);
end;
end.
0641デフォルトの名無しさん
2009/06/18(木) 23:38:090642デフォルトの名無しさん
2009/06/19(金) 01:06:47暇だから作ってみた
ttp://swfup.info/view.php/11076.swf
サイズ情報が間違ってるっぽいので"保存用リンク"を
クリックして見てくれ
0643デフォルトの名無しさん
2009/06/19(金) 03:57:520644デフォルトの名無しさん
2009/06/19(金) 04:53:37エラーが出るとか言っているから入れてなさそうだよな
0645デフォルトの名無しさん
2009/06/19(金) 11:41:58そのまま見れるように直してみた。URLはそのまま
0646ミ,,゚Д゚彡 ◆A6VzDeLphI
2009/06/19(金) 12:27:460647デフォルトの名無しさん
2009/06/19(金) 13:32:54ここからUpdate3を落としてインスコしてね
ttp://cc.embarcadero.com/item/26921
日本語Readme ttp://edn.embarcadero.com/article/39592/
>>646 暇は世界を救う
0648デフォルトの名無しさん
2009/06/22(月) 16:23:41type
TRecHoge = record
X: Integer;
Answer: string;
end;
function Hoge(value: Integer): TRecHoge;
var
returnValue: TRecHoge;
begin
if value = 1 then begin
returnValue.Answer := '戻り値をセットしました。';
Result := returnValue;
end;
end;
procedure HogeCall;
var
buf: TRecHoge;
begin
buf := Hoge(0);
ShowMessage(buf.Answer);
buf := Hoge(1);
ShowMessage(buf.Answer);
buf := Hoge(0);
ShowMessage(buf.Answer);
end;
0649デフォルトの名無しさん
2009/06/22(月) 16:33:490650デフォルトの名無しさん
2009/06/22(月) 16:46:58その通りなんだけど、レコード型を戻り値にした場合はコンパイラが警告出さないんだよね。
0651デフォルトの名無しさん
2009/06/22(月) 16:57:06このクセを付ければどの言語に移ってもおk
0652デフォルトの名無しさん
2009/06/22(月) 16:58:06ローカル変数を前もってクリアしておくというクセを付けとけばいいよと
0653デフォルトの名無しさん
2009/06/22(月) 17:50:33この場合、ローカル変数をクリアするのは解決にならないと思われ
0654デフォルトの名無しさん
2009/06/23(火) 17:32:250655デフォルトの名無しさん
2009/06/23(火) 18:31:00> if WinExec( PChar( SGet), SW_SHOW) < 31 then
>[DCC エラー] main.pas(1314): E2010 'Char' と 'AnsiChar' には互換性がありません
D2009だと何でエラーになるのですか?
0656デフォルトの名無しさん
2009/06/23(火) 19:49:14SelectDirectory?
>>655
http://edn.embarcadero.com/jp/print/38791
って、ここは質問スレじゃない気がする
0657デフォルトの名無しさん
2009/06/23(火) 21:32:380659デフォルトの名無しさん
2009/06/25(木) 09:04:540660デフォルトの名無しさん
2009/06/25(木) 09:20:05マルチ氏ね
http://pc12.2ch.net/test/read.cgi/tech/1217575832/662-664
0661デフォルトの名無しさん
2009/06/25(木) 12:47:10しばらく触ってなかったが、俺のDel7では
TRecHoge = record
ですらエラーで受け付けん・・・?何が不正な文字列だ?
0662デフォルトの名無しさん
2009/06/25(木) 12:48:020663デフォルトの名無しさん
2009/06/25(木) 15:27:32こんなだったっけ?
コピペでそのまま使えた気がするけどな
0664デフォルトの名無しさん
2009/06/25(木) 18:26:52&nbsp;にすればコピペだけでちゃんと動く。
>>650
構造体にはフィールドの内容によってゴミのままの部分も出てくるから
全部代入するのを強制するのは無駄って話だね。
type // Win32APIでまれによくある構造体
TMyRec = record
flags: byte; // foo, bar, bazを使うかどうかを指定するビットフラグ;
foo: Integer;
bar: Char;
baz: String;
end;
0665デフォルトの名無しさん
2009/07/10(金) 21:28:27Update3/4 適用済でもダメだわこれ。
0666デフォルトの名無しさん
2009/07/11(土) 10:09:370667デフォルトの名無しさん
2009/07/11(土) 15:59:56どこがどうだめなの?updateしようと思ってるんだけど
0668デフォルトの名無しさん
2009/07/11(土) 21:51:370669デフォルトの名無しさん
2009/07/11(土) 22:18:04Del7だろ常考
0670デフォルトの名無しさん
2009/07/12(日) 13:03:310671デフォルトの名無しさん
2009/07/16(木) 08:56:16フォーム毎に書くと大変なので、
TApplicationにやらせたいと思っていますが、
できますか?
0672デフォルトの名無しさん
2009/07/16(木) 11:15:06これに共通の処理足しまくるとめっちゃ快適になる。
で、使うときはTForm1 = class(TFormEx)とかに書き換えるだけ。
自分ならTAction継承した独自のアクションに
F1のショートカット設定してそっちに振るけどな。
0673デフォルトの名無しさん
2009/07/16(木) 11:17:29名言集 その1
『アパッチ砲はワシが作った』
http://jbbs.livedoor.jp/bbs/read.cgi/internet/134/1229674638/5062
自分の管理するしたらばで借りた掲示板にて
> 5062 :自動保守 ◆AOIMAD.NZM [] :2009/08/16(日) 00:46:29 ID:nQYgq9jg0
> そもそも、アパッチ砲っていうのは、私が指揮官になった時代に私の先輩たちが導入して
> 先輩たちが命名したもの、っていうかまぁ、そういう砲は今まで存在してないから
> 名前つけなくちゃいけないしw
>
> ってことで、使っているうちに広まった名前なので、それが正式名称になるんじゃないかと。
>
> http://www.paradisearmy.com/doujin/pasok_apache.htm(俺の先輩が命名)
> http://www.paradisearmy.com/doujin/pasok_hping.htm(俺が命名?)
※注 「アパッチ砲」の正式名称は「Apache Jmeter」で、もちろん自動焼人の先輩が作ったものではありません
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0675デフォルトの名無しさん
2009/08/21(金) 00:58:10threadvar以外のものは全部保護すべき。
0676デフォルトの名無しさん
2009/09/09(水) 10:00:19ボタンを貼り付けても、今風の角が取れたボタンになるFormと、
昔ながらの角張ったボタンになってしまうFormに分かれてしまう。
ボタンのプロパティいじっても今風にならないんだが、なぜなんだ?
0677デフォルトの名無しさん
2009/09/09(水) 10:59:57両方コピーしてメモ帳とかに張ってみたら異なるプロパティ判るんじゃないかな?
0679デフォルトの名無しさん
2009/09/09(水) 11:32:210680デフォルトの名無しさん
2009/09/10(木) 23:39:57C++でいうdynamic_castとほぼ同じような物ですか?
0681デフォルトの名無しさん
2009/09/12(土) 03:25:53次の環境を模索してます。
.Net ですか? Win32ですか?
Delphi(Object Pascal)は生き残りますか?
D6から成長してない45歳、会社で唯一人のプログラマっす。
0682デフォルトの名無しさん
2009/09/12(土) 09:03:210683デフォルトの名無しさん
2009/09/12(土) 09:11:13他のヤツは人じゃないのか
0684デフォルトの名無しさん
2009/09/12(土) 10:09:250685デフォルトの名無しさん
2009/09/12(土) 16:51:0745歳ならDelphiより自分の職業プログラマ人生の方が先に終(ry
0686デフォルトの名無しさん
2009/09/12(土) 17:43:54いわゆる、近所のPCの便利屋さんみたいな立場。
すごい重宝がられているはずだが。
0687デフォルトの名無しさん
2009/09/12(土) 17:44:37マジレスすると.NET(C#)だろ。
0688デフォルトの名無しさん
2009/09/13(日) 17:02:36Win32で事足りるなら・・・
自営や零細相手に細々とやってるがまだまだD7でいけそう。
用途次第、客ありきなら相手次第やね。維持>発展ならw
0689デフォルトの名無しさん
2009/09/15(火) 03:12:17Win32上でWin16がエミュレーションで動いているようにWin64上にもWin32のエミュレーションがあるから、
仮にWin64がメインストリームになったとしてもWin32で事足りる場面が多いと思う
現実的に考えるとWin64がメインになるのはまだまだ先のことだろうしWin32は安泰
0690デフォルトの名無しさん
2009/09/16(水) 13:49:53さらにDelがARMプロセッサも将来サポートするとか逝ってるし、って組み込み不要なんだろw
なら、ドトネト系なんか捨てといて、スクリプト系のウェブアプリ作れるようになった方がプラスかも。
0691デフォルトの名無しさん
2009/09/16(水) 14:25:470692デフォルトの名無しさん
2009/09/16(水) 15:04:340693デフォルトの名無しさん
2009/09/19(土) 22:20:340694デフォルトの名無しさん
2009/09/19(土) 22:26:340695デフォルトの名無しさん
2009/09/20(日) 01:29:39日本語しかまともに喋れない大半の日本人終わったな
0696デフォルトの名無しさん
2009/09/20(日) 10:15:110697デフォルトの名無しさん
2009/09/20(日) 17:31:270698デフォルトの名無しさん
2009/09/24(木) 16:50:32タスクバーに入らずデスクトップ左下にアイコン化してしまう(ためタスクバーから復帰できない)のですが、
対処方法はありますか?
0699デフォルトの名無しさん
2009/09/24(木) 17:40:20http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200601/06010024.txt
0700デフォルトの名無しさん
2009/09/24(木) 17:55:27しかし、ビミョにやりたいことと違う。。。
0701デフォルトの名無しさん
2009/09/24(木) 18:30:41子窓を最小化したときにタスクバーに入れたいなら
ttp://www2.big.or.jp/~osamu/Delphi/Tips/edit.cgi?file=0232.txt&rev=1.3
アプリケーションごと仕舞いたいなら
ttp://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/01178.html
0702デフォルトの名無しさん
2009/10/17(土) 23:35:42グリットを可変させて、変数ABCを
1,1にA 1,2にB 1,3にCを
グリット内に書き出したいのですが、わかりません。
どなたか、お知恵を拝借したく思います。
突然の乱入すみません。よろしくお願いします。
procedure TForm1.ComboBox1Change(Sender: TObject);
var
x :integer ;
y :string ;
lp:integer;
z :string;
begin
z:='ABC';
x:=combobox1.ItemIndex ;
y:=combobox1.Items[x];
StringGrid1.RowCount:=StrToInt(y)+1;
// 項目部設定
StringGrid1.Cells[1,0] := '東京';
StringGrid1.Cells[2,0] := '大阪';
StringGrid1.Cells[3,0] := '沖縄';
for lp:=1 to strtoint(y) do begin
StringGrid1.Cells[0,lp] := inttostr(lp);
0703デフォルトの名無しさん
2009/10/20(火) 00:26:330704デフォルトの名無しさん
2009/10/28(水) 14:19:49Char→AnsiChar string→AnsiStringで置換掛けてコンパイルしてみました。
ところが実行時にStrToIntでエラーが出ます。
処理するレコードは固定長レコードなのですがある項目が全角日本語だったり半角だったりするために
Ansiにしたことで変換対象のロケーションが以前と違っていることが判りました。
StrToIntの引数は固定長だしと直値で指定している箇所がたくさんあり、
全角半角を判定してとかはやりたくないのですがいい方法は無いでしょうか?
0705デフォルトの名無しさん
2009/10/28(水) 15:39:11いう戦略でアップグレードしてる奴多そうだな。
0706704
2009/10/28(水) 18:35:390707デフォルトの名無しさん
2009/11/14(土) 15:36:17次のようなプログラムを考えています。
プログラムを起動
↓
ファイル(群)を選択
↓
選択したファイル(群)をプログラムに取り込み(一つのファイルにする)パスワードをかける。
↓
取り込み処理終わり
復元処理
↓
プログラムを実行、パスワードを入力
↓
一定回数パスワードを間違えたら、プログラムごとファイルを消去。
こういう事って可能ですか?
取り込み処理では圧縮をしてもしなくても構いませんが、最終的に一つのファイルになるのが必須です。
0708デフォルトの名無しさん
2009/11/14(土) 16:31:360709デフォルトの名無しさん
2009/11/14(土) 16:33:130710707
2009/11/14(土) 19:38:02>>あらかじめコピーをされてたら何の意味もない
それについては次のステップの課題なんだけど、コピーをされたら内部で「パスワード」を変更するようにする。
つまり、永久に開く事が不可能となる、というのを考えている。
>>そういう動作はいかがなものかと思うが
これは、セキュリティ対策の一環としてアイデアが出たモノで、これで決定というわけではない。
ただ、試行して結果が好ましかったら本採用になる。
というわけで、いくつかある仕様の一つなので、今の段階では善し悪しが判定できない。
という事情があります。
0711デフォルトの名無しさん
2009/11/14(土) 19:48:14コピーされたかどうかが分かるぐらいなら、ソフトの不法コピー問題なんて起こらないよ
0712デフォルトの名無しさん
2009/11/14(土) 22:09:53なんか根本的なところが間違ってる、とまではいわないまでも、考え違いをしているような気がする。
もういちどスタートラインに戻って考え直してみてはいかが?
0713デフォルトの名無しさん
2009/11/15(日) 02:54:06それが可能かどうか判断が付かないレベルでは、作るのは到底無理だと思うよ
0714デフォルトの名無しさん
2009/11/15(日) 02:56:31ファイルシステムから作れば可能ではあると思うよw
0715デフォルトの名無しさん
2009/11/15(日) 08:45:08まず先に、OSのファイルコピーなどをフックするrootkitをインストールか動作させる必要があるなw
0716デフォルトの名無しさん
2009/11/15(日) 08:47:030717デフォルトの名無しさん
2009/11/15(日) 09:42:220718デフォルトの名無しさん
2009/11/15(日) 18:04:25以下のURLを見ると、インストール番号などがないと使用許諾コードを取得できないようなのですが。
http://edn.embarcadero.com/article/33580
0719デフォルトの名無しさん
2009/11/15(日) 18:16:410720デフォルトの名無しさん
2009/11/18(水) 22:29:21delphiで画像の一番上左から4番目のワードアートと似たような文字を表示したいのですが、
可能でしょうか?
win32apiのパスを使えばできそうだけど、分からないですorz
0721デフォルトの名無しさん
2009/11/18(水) 23:36:430722デフォルトの名無しさん
2009/11/20(金) 11:01:05Officeのワードアート機能を使うサンプルは見たことがあるけど
直接表示するのは知らないなあ。
0723デフォルトの名無しさん
2009/11/20(金) 20:42:25ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200904/09040002.txt
0724デフォルトの名無しさん
2009/11/21(土) 20:56:27そんな感じです!文字を変形させるのに使う計算が理解できなくて苦しんでます。
http://www.geocities.jp/asumaroyuumaro/program/winapi/path/flattenpath.html
これを元にやってみてはいるんですが、うまくいかないorz
0725デフォルトの名無しさん
2009/11/26(木) 17:43:140726デフォルトの名無しさん
2009/12/01(火) 19:06:18俺のホストじゃ無理だった
0727デフォルトの名無しさん
2009/12/02(水) 00:20:06http://pc12.2ch.net/test/read.cgi/tech/1259667697/
0728デフォルトの名無しさん
2009/12/03(木) 17:30:130729デフォルトの名無しさん
2009/12/05(土) 00:23:18・整数値を書き込む、読み出す
・文字列を書き込む、読み出す
・あるアドレスからあるサイズだけ読み出すってのがわかりません。
0730デフォルトの名無しさん
2009/12/05(土) 01:53:260731デフォルトの名無しさん
2009/12/05(土) 09:00:01その前に派生元であるTStreamの使い方を調べるべきだ。
>730
またお前か。さっさと吊れ。
0732デフォルトの名無しさん
2009/12/05(土) 16:02:24だってw
くっさww
0733デフォルトの名無しさん
2009/12/05(土) 19:53:230734デフォルトの名無しさん
2009/12/05(土) 23:01:04_, ._ んもー / NMO
( ・ω・)
○={=}〇,
|:::::::::\, ', ´
.wwし w`(.@)wwwwwwww
0735デフォルトの名無しさん
2009/12/05(土) 23:57:36だってv
くっさvv
0736デフォルトの名無しさん
2009/12/07(月) 22:09:280737デフォルトの名無しさん
2009/12/07(月) 23:14:26/;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、 / ヽ
/ヽヽ: ://: :!:,X~::|: /;,,;,/: :/ リ!: ::/ノ l`ヽl !: : |: : : :l: :l: リ / そ そ お \
/: : ヽヾ/: : l/::l |/|||llllヾ,、 / |: :/ , -==、 l\:::|: : : :|i: | / う う 前 |
. /: : : //ヾ ; :|!: イ、||ll|||||::|| ノノ イ|||||||ヾ、 |: ::|!: : イ: ::|/ な 思 が
/: : ://: : :ヽソ::ヽl |{ i||ll"ン ´ i| l|||l"l `|: /|: : /'!/l ん う
∠: : : ~: : : : : : : :丶ゝ-―- , ー=z_ソ |/ ハメ;, :: ::|. だ ん
i|::ハ: : : : : : : : : : : 、ヘヘヘヘ 、 ヘヘヘヘヘ /: : : : : \,|. ろ な
|!l |: : : : : : : : :、: ::\ 、-―-, / : : :丶;,,;,:ミヽ う ら
丶: :ハ、lヽ: :ヽ: : ::\__ `~ " /: : ト; lヽ) ゝ
レ `| `、l`、>=ニ´ , _´ : :} ` /
,,、r"^~´"''''"t-`r、 _ -、 ´ヽノ \ノ / お ・
,;'~ _r-- 、__ ~f、_>'、_ | で 前 ・
f~ ,;" ~"t___ ミ、 ^'t | は ん ・
," ,~ ヾ~'-、__ ミ_ξ丶 | な 中 ・
;' ,イ .. ヽ_ ヾ、0ヽ丶 l /
( ;":: |: :: .. .`, ヾ 丶 ! \____/
;;;; :: 入:: :: :: l`ー-、 )l ヾ 丶
"~、ソ:: :い:: : \_ ノ , ヾ 丶
0738デフォルトの名無しさん
2009/12/07(月) 23:23:22頭の中がリセットされていたことに笑いが止まらなかった。
0739デフォルトの名無しさん
2009/12/08(火) 08:17:290740デフォルトの名無しさん
2009/12/08(火) 14:12:11____
/ \
/| _ = ミ
彡 -、 , 、 _,- ミ _
{ `| ,=・ァ = ,r・=、, |´ }
ヽ{! '" , ',:、 '" ,' |}ノ 黙れ小僧!
| /`'ー'"ヽ- ト、
__,.-ヽ ノー=-' } /:: \_
: : : : : :/`ー、__ノ-'/ : : : |: :`ー
: : : : く: /:| \_,.-"/:: : : : |: : :
: : : : /: : :|/|:::∧ /:: : : /: : :
: : : :|: : : : :| /:く /:: : : ;\: : : :
: : : :|: : : : :|'::::::::/: : :◎: :/: : : :
0741デフォルトの名無しさん
2009/12/11(金) 16:05:26改造する必要が出てきました。
今作ってるコンポーネント以外にはGrid.pasの変更を波及させたくないので、コンポーネントの
プロジェクトからだけ改造したGrid.pasを参照するようにしたいんですが、うまく行きません。
ソースコード上はAlt+↑で継承元を辿っていくとちゃんと改造したGrid.pasに辿り着くんですが、
いざコンパイルを掛けるとTCustmoGridに追加した変数が認識されずエラーとなります。
こういう場合はどうしたら良いでしょうか?
A.諦めて継承先のコンポーネントで何とかする
B.DELPHIが参照しているVCL本体を置き換える。
C.改造したGrid.pasをGrid2.pasのように別名保存し、コンポーネントのプロジェクト内では
Grid.pasの代わりにGrid2.pasを参照する。
のような案を考えましたが、他に何か良い案が有れば宜しくお願いします。
0742デフォルトの名無しさん
2009/12/11(金) 16:14:00それくらいじゃ対処できないってんならC案だろうけど。
0743デフォルトの名無しさん
2009/12/11(金) 16:43:05プロジェクトのフォルダに改造したGrid.pasを入れればそっちを参照するんじゃない?
その方法が開発チーム内で許されていればだけど。
0744デフォルトの名無しさん
2009/12/12(土) 00:33:540745741
2009/12/14(月) 03:56:07containsにGrids.pasを書くと、
「パッケージ 'vcl' はすでにユニット 'Grids' を含んでいます」
というエラーが発生してコンパイルできません。
containsに書かずにプロジェクトのソースディレクトリにGrids.pasを置くとvclパッケージ内部のGrids.pasが優先して参照されてしまいます。
継承先でどうにかする方法も模索中ですが、TCustomGridがprivateで持っているメンバーにたくさんアクセスする必要があるため難航しています。
0746デフォルトの名無しさん
2009/12/14(月) 10:30:49vclを外す事は許されないんだろうか。
0747デフォルトの名無しさん
2009/12/14(月) 13:53:58対象バージョンが固定ならprivateメンバーにアクセスする方法はいくらでもある
まあ別にバージョン固定じゃなくてもその分分岐すればいいんだけど
0749デフォルトの名無しさん
2009/12/17(木) 22:12:16TClientDataSet が保っているデータセットを
結合して1つのDBGridに表示したいのですが、
どうすればいいでしょうか?
宜しくお願いします。
0750デフォルトの名無しさん
2009/12/17(木) 23:15:32一方のDataSetにFieldKindがfkLookupの
TFieldを用意し、他方のDataSetを参照すればいけそう。な気
がする。
やり方
つttp://docwiki.embarcadero.com/RADStudio/ja/参照項目を
定義する
0751デフォルトの名無しさん
2009/12/17(木) 23:25:32最初に確認すべきだったけど、Delphiのバージョンとエディションは?
0752デフォルトの名無しさん
2009/12/17(木) 23:45:34的確なアドバイスありがとうございました。
これで眠れそうです。
0753デフォルトの名無しさん
2009/12/18(金) 00:05:15TObjectからTCustomGridまでに宣言されてるすべてのメンバー変数を抽出して、
それをレコードか何かとして宣言して、インスタンスをそのレコードでキャストすれば直接アクセスできる
それぞれの変数間に詰め物もあるけど、その辺はデバッガでメモリ覗く等して一度調べればOK
多少語弊があるかもしれないけど、簡単に言えばクラスってのは継承できるレコードに過ぎないからね
他にもprivate変数をpublicにしただけのクローンクラスを作ってキャストしても同じ効果が得られる
もちろん目的のprivate変数自体のオフセットが分かってればインスタンスアドレスから直接取り出した方が早いけど
ただしこの説明で何やってるかピンと来なければ危険なのでやらない方がいい
0754デフォルトの名無しさん
2009/12/19(土) 03:15:07コンポーネント改造しようだなんて10年早い
0755デフォルトの名無しさん
2009/12/19(土) 04:03:160756デフォルトの名無しさん
2009/12/19(土) 04:49:300757デフォルトの名無しさん
2010/01/13(水) 14:25:340758デフォルトの名無しさん
2010/01/13(水) 14:33:43SelectDirectory(Delphi2009で確認)
0759デフォルトの名無しさん
2010/01/13(水) 16:19:000760デフォルトの名無しさん
2010/01/13(水) 20:57:580761デフォルトの名無しさん
2010/01/14(木) 00:03:060762デフォルトの名無しさん
2010/01/14(木) 14:09:310763デフォルトの名無しさん
2010/01/15(金) 10:30:360764デフォルトの名無しさん
2010/03/24(水) 23:33:450765デフォルトの名無しさん
2010/03/27(土) 18:22:08開発ターゲットは、SQLServerを使うDBアプリです。
Ent版ならSQLServerのNativeDriverが付いてきますよね。
でも、Pro版でもADOやODBC経由でSQLserverを使えるはず。
ADOやODBC経由と比較し、NativeDriveerが使えるメリットって、
何があるのでしょうか?
0766デフォルトの名無しさん
2010/03/27(土) 18:31:43・SQLServerの全機能をDelphiから扱える
0767デフォルトの名無しさん
2010/03/27(土) 21:07:410768デフォルトの名無しさん
2010/04/03(土) 18:51:030769デフォルトの名無しさん
2010/04/07(水) 18:11:25Self.Canvas.Brush.Color := clBlack;
Self.Canvas.Rectangle(10, 10, 200, 100);
のようにしました。
この描画結果をデザイン時でもに見えるようにするにはどうしたら良いでしょうか?
フォーム自体のコードではデザイン時に無反応なので無理だと判断しています。
そこで、試しにカスタムコンポーネントTDrawTestを作って
constructor TDrawTest.Create(AOwner: TComponent);
begin
inherited;
if AOwner is TForm then begin
FParent := TForm(AOwner);
FParent.OnPaint := Self.ParentDraw;
FParent.OnResize := Self.ParentDraw;
end;
end;
procedure TDrawTest.ParentDraw(Sender: TObject);
begin
FParent.Canvas.Brush.Color := clBlack;
FParent.Canvas.Rectangle(10, 10, 200, 100);
end;
のようにしてやり、このコンポーネントを対象のフォームに配置しました。
すると、デザイン時にフォームをリサイズした時に長方形が描画されたのですが、フォームを他の画面の後ろに隠して再び前に出した時など、サイズ変更が伴わない再描画処理では長方形が描画されませんでした。
処理対象のイベントを増やしていけば一応は動作するのでしょうが、根本的に方法がおかしいような気もします。
何か良い方法は無いでしょうか?
0770デフォルトの名無しさん
2010/04/07(水) 20:03:16条件によって、そのダイアログを表示し続けるにはどうしたらいいですか?
0771デフォルトの名無しさん
2010/04/07(水) 22:21:300772770
2010/04/08(木) 10:10:550773デフォルトの名無しさん
2010/04/13(火) 17:59:42timeoutでググルと下が出てきましたがエラー一覧だった:
ttp://mrxray.on.coocan.jp/Delphi/plSamples/772_Indy_HTTPGet.htm
0774デフォルトの名無しさん
2010/04/14(水) 00:28:130775773
2010/04/14(水) 11:42:49実際に発生しているエラーは、
Getメソッドを繰り返し行って4回目くらいに、Connection Closed Gracefully、が発生です。
どうもPCのスペックが悪いのか(Win7のネットブック)、時間がかかってるのが目に見えるようなのでやっぱタイムアウトかな、と思います。
0776デフォルトの名無しさん
2010/04/14(水) 13:54:120777773
2010/04/14(水) 13:58:30>ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200512/05120092.txt
(FTPですが)にも書いてあるように、
VCLコントロールが内部から投げてる例外って意味ですが、
やっぱ、その場合にもエラー処理を行うのが対処みたいで、
正常終了ということでは無さそうです。
実際、
>Connection Closed Gracefully
が発生しているのは、
何十〜何百台あるPCの1、2台だけっぽいです。
0778デフォルトの名無しさん
2010/04/14(水) 20:08:50話はそれからだ。
TIdHTTP.ReadTimeoutはIndy9にもある。というかあんまり古いバージョンはお勧めしない。
C++Builder6ならIndy9まではあげたほうがいい。
0779デフォルトの名無しさん
2010/04/14(水) 21:32:31Connection Closed Gracefullyがでるときは大抵POSTミスやら通信ミスってるだけだろ
0780デフォルトの名無しさん
2010/04/14(水) 22:24:20のことだろ?たぶん。Gracefullな手順踏んで正常にコネクションが切断されただけだろ。
タイムアウトじゃねぇかな。
0781デフォルトの名無しさん
2010/04/14(水) 22:33:06すまそ。
0782デフォルトの名無しさん
2010/04/15(木) 14:24:250783デフォルトの名無しさん
2010/04/16(金) 16:25:23EDN(エンバカデロデベロッパーネットワーク)のWebページの通りにインストールしたのですが、
コンパイルエラーになってしまいます。
エラーメッセージとエラー箇所のコードを下記に示します。
対処方法を教えていただけないでしょうか?
■エラーメッセージは次の通りです。
[DCC エラー] StBarC.pas(1751): E2030 case 文のラベルが重複して定義されています
[DCC 警告] StBarC.pas(1752): W1063 指定された AnsiChar 定数 (#$84) を WideChar に
拡大変換した結果、情報が失われました
■エラー箇所のコードは次の通りです。
> procedure GetACode128CDigit (c : Char; var Index : Integer;
> var bcDigitPos : Integer);
> var
> J : Integer;
>
> begin
> case (c) of
> #130 : bcDigits[bcDigitPos + 1] := 98; {rest are manufactured characters}
> #131 : bcDigits[bcDigitPos + 1] := 97; <− ★ここで上記のコンパイルエラーになります★
0784デフォルトの名無しさん
2010/04/16(金) 19:05:280785デフォルトの名無しさん
2010/04/16(金) 21:21:42ありがとう。やってみます。
Delphi2010+TurboPowerSysToolsのインストール解説ページにソースコードの
変更が必要など書いてなかったです。
必要なら書いてほしいなぁ・・・
0786デフォルトの名無しさん
2010/04/24(土) 06:25:15Delphi 2010に、TurboPower SysToolsをインストールするHPって、
http://edn.embarcadero.com/article/40498
だよな。
公式ページに掲載されてる情報なんだから、コード修正なんて不要だと思うのだが。
0787デフォルトの名無しさん
2010/04/24(土) 13:21:270788デフォルトの名無しさん
2010/04/25(日) 04:57:24確かに StBarC.pas の数箇所で変更が必要です。
修正箇所は、こんな感じ。
修正前: Case c :
修正後: Case AnsiChar(c) :
修正前: if c in [...]
修正後:if CharInSet(c, [...])
>>787へ
批判するだけで建設的な意見を書き込めない「無能者」は、
どんな社会でも受け入れられないでしょう。
幸いにも受け入れられる社会を見つけても、そこはキミと同じ無能者
の巣窟だろうね。
0789デフォルトの名無しさん
2010/04/25(日) 07:31:190790デフォルトの名無しさん
2010/04/26(月) 03:45:29公式だからと鵜呑みにしたのは無能じゃないの?
馬鹿なの?
0791デフォルトの名無しさん
2010/04/26(月) 15:14:30見当違いの>>786みたいなレスも社会では受け入れられないよね、無能の屑さん^^
0792デフォルトの名無しさん
2010/04/27(火) 20:09:240793デフォルトの名無しさん
2010/04/28(水) 21:01:590794デフォルトの名無しさん
2010/05/10(月) 19:51:14独法などで研究やっている人が多いんだよね?ちがう?
0795デフォルトの名無しさん
2010/05/11(火) 00:03:180796デフォルトの名無しさん
2010/05/14(金) 12:00:40とりあえずヘルプなど当たってみましたが、見つけることができませんでした
例えばMessageBoxとmessageBoxを区別したい(表記が統一されていなければわかるようにしたい)のですが…
0797デフォルトの名無しさん
2010/05/14(金) 12:04:26何したいのかよくわかんないけど、検索のオプションには大小区別のオプションはあるよ。
0798デフォルトの名無しさん
2010/05/14(金) 15:36:56いえ、色々な人間がコーディングしていると、人によってはMessageBoxだったり、またある人はmessageboxだったり、messageBOXだったり、まちまちになるとソースが読みにくくなるんです。
まぁ一括置換をしてやれば良いんですが、できればコーディングしている段階で、その人がわかるようにコンパイルで弾いてやれないかなと思ったんです
神経質といえば神経質ですね
0799デフォルトの名無しさん
2010/05/15(土) 13:46:44やり方載ってるページとか無いですかね?
検索してもPhotoshopでのやり方とかは出てくるんですがねぇ・・・
Bitmapに保存しておいて、それを貼り付ける方法も考えたのですが、
出来れば、コードで描きたいんですけど。
0800デフォルトの名無しさん
2010/05/15(土) 18:39:30漏れはプログラムは組めるが絵心が無いんで
Illustratorでヘアライン仕上げみたいな描画をする方法を教えてくれ。
そうしたら実現コード考えてもいい。
0801デフォルトの名無しさん
2010/05/17(月) 11:34:05マルチスレッドってやつ使うのとは何が違うの?
タイマー使った方がお手軽に並列処理出来ると思ったけど
違うっぽいんで教えてくだしゃぁ
0802デフォルトの名無しさん
2010/05/17(月) 15:24:36すみません、規制で書き込みませんでした。
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1225706387?fr=shopping_search
こんな感じですが。
よろしくお願いします。
0803デフォルトの名無しさん
2010/05/17(月) 15:46:02タイマーのインターバルを50msec位にして、タイマーのイベントで100msec位かかる処理を行うとどうなりますか?
また、スレッドを50msec毎に作成して100msec位かかる処理を行うとどうなりますか?
0804デフォルトの名無しさん
2010/05/17(月) 22:31:38タイマを使うってのはメインスレッドの中で処理が順次行われていくってこと。例えていうなら
中の人が5分おきに電話で起こされて仕事をしてまた寝るってのを繰り返す感じ。だから
処理は並行には行われない。それに対してスレッドのほうは中の人を5人用意してそれぞれに
仕事を割り振って一斉に(でなくてもいいけど)平行して仕事をしてもらう。でも1つしかない
資源は排他的に扱う(一度に一人だけが使用する)ようにしなければならない。
勘違いしやすいのは、タイマはタイマ割り込みではなく、指定した時間が経過したことを
示すフラグでしかない(WM_TIMERはフラグが立ったことの通知)というあたり。
0805デフォルトの名無しさん
2010/05/17(月) 23:45:33ありがとうございました。
すっきりしますた。
0806デフォルトの名無しさん
2010/05/18(火) 01:06:28なんかオレにも出来そうだな。
ちょっと書いてみるか。
0807デフォルトの名無しさん
2010/05/21(金) 12:26:43ありえないの?
0808デフォルトの名無しさん
2010/05/21(金) 12:48:020809デフォルトの名無しさん
2010/05/21(金) 13:35:27マルチタスクで片方のタスクが停滞することはありえないの?
0810806
2010/05/22(土) 21:35:020811デフォルトの名無しさん
2010/05/24(月) 14:48:48タスクバーのツールバー(?)に表示するには、
どうしたら良いのでしょう?
0812デフォルトの名無しさん
2010/05/24(月) 15:15:450813デフォルトの名無しさん
2010/05/24(月) 15:51:40タスクバーのアイコンを非表示にして、タスクトレイにアイコンを表示したいでつ。
0814デフォルトの名無しさん
2010/05/24(月) 16:10:480815デフォルトの名無しさん
2010/05/24(月) 16:12:330816デフォルトの名無しさん
2010/05/24(月) 16:23:18えっと、質問何だったっけ?
0817デフォルトの名無しさん
2010/05/24(月) 17:19:24ttp://kazina.seesaa.net/article/20890953.html
0818デフォルトの名無しさん
2010/05/27(木) 11:18:13シリアル通信で マイクロソフトのActiveX MSCOMM32.OCX を使った場合
処理の途中でポートが開いているか判別するのに
if MSComm1.PortOpen = False then // クローズ状態
begin
{ ポートがクローズしていた場合の処理 }
end else
begin
{ ポートがオープンしていた場合の処理 }
end;
とやるところを、CommX で
http://www.moriq.com/apollo/ext/comm/Phi/CommX.html
ttp://www.moriq.com/delphi/CommX106.lzh
TCommX.Handleプロパティ
>property Handle: THandle;
>通信ハンドルの値を示します。
0819デフォルトの名無しさん
2010/05/27(木) 11:19:16>このプロパティは、拡張のために用意されています。
>また、オープンされていない状態のときは、
>必ず -1 となるので通信コンポーネントの状態を知ることもできます。
とあるので
if CommX1.Handle = -1 then // クローズ状態?
begin
{ ポートがクローズしていた場合の処理 }
end else
begin
{ ポートがオープンしていた場合の処理 }
end;
とやってもポートopen/close 関わらず片一方の処理しかできません。
ポートの開閉状態を知るのに何かコツでもあるのでしょうか?
検索を掛けても、手動でボタンなどを操作するソースばかりでわかりません。
壮絶な勘違いをしているかもしれませんが、教えてください。
0820818-819 です
2010/05/27(木) 17:43:42この場合の if CommX1.Handle = -1 then
−1は
Integer型「符号あり整数値」= −1
じゃなくて
Cardinal(UINT)型 = 4294967295
になるんですね・・・
又は 16進数で = FFFFFFFF
if CommX1.Handle = 4294967295 then
if CommX1.Handle = $FFFFFFFF then
で逝けました・・・
0821デフォルトの名無しさん
2010/05/27(木) 21:00:450822818-819 です
2010/05/27(木) 22:47:47しかし、MSCOMM32.OCX から CommX に変えると、シリアル経由で
1秒間隔毎にだらだらと送られてくる文字を足していって #13#10 で区切って文字列にし、
必用な部分を抜いて、別に送ると
これまでの約5倍ほどの遅延が発生するようになってしまいました。
ttp://sourceforge.net/projects/comport/files/
TComPort に切り替えて読み込みの遅延は押さえ込めそうなのですが、
今度は>>818 の処理をさせる書式が見当たりません。
どなたか判る方、教えていただけませんでしょうか?
0823デフォルトの名無しさん
2010/05/27(木) 22:56:050824デフォルトの名無しさん
2010/05/27(木) 23:55:38つ Connected
0825824
2010/05/28(金) 00:00:45あ、OnRxCharのようなデータの受信イベントで処理するのが常道だから。
0826818-819 です
2010/05/28(金) 01:56:16行けました・・とサクっと書きたかったのですが、
最初入れていたのが TComPort component version 1.50 で、その書式だとエラー
なんとか比較的新しいコンポーネントに入れなおして突破できました。
ありがとうございました。
>>825 地道に理解していきます m(_ _)m
0827デフォルトの名無しさん
2010/06/18(金) 14:29:380828デフォルトの名無しさん
2010/06/18(金) 16:33:120829827
2010/06/18(金) 17:01:15実は、C++ Builder 6 なんですが、ADO経由でODBC出来るんでしたっけ?
0830デフォルトの名無しさん
2010/06/18(金) 17:07:220831827
2010/06/18(金) 17:09:14とりあえず、ADOアクセス検討してみまつ。
0832827
2010/06/21(月) 11:25:39ランタイムとか居るのでしょうか?
もしくはADOQuery初心者サイトがあれば教えて下さいorz
0833デフォルトの名無しさん
2010/06/25(金) 09:13:470834デフォルトの名無しさん
2010/06/26(土) 11:24:060835デフォルトの名無しさん
2010/06/26(土) 12:10:040836デフォルトの名無しさん
2010/06/26(土) 12:43:550837デフォルトの名無しさん
2010/06/26(土) 19:22:26びっくりした
0838デフォルトの名無しさん
2010/06/27(日) 16:59:210839デフォルトの名無しさん
2010/06/28(月) 02:02:350840デフォルトの名無しさん
2010/06/28(月) 14:45:470841デフォルトの名無しさん
2010/06/29(火) 01:32:530842デフォルトの名無しさん
2010/06/30(水) 17:53:290843名無しさん@そうだ選挙に行こう
2010/07/11(日) 22:27:11.flvファイルを再生できるのってないでしょうか?
シェアウェアのは海外にあるんですが
フリーのはないでしょうか?
0844デフォルトの名無しさん
2010/07/12(月) 02:27:360845デフォルトの名無しさん
2010/07/16(金) 09:39:070846デフォルトの名無しさん
2010/07/19(月) 00:42:41COMでFlashそのものを使えばいいじゃん
0847デフォルトの名無しさん
2010/07/29(木) 23:21:58どうなったんでしょうか?
0848デフォルトの名無しさん
2010/07/30(金) 02:28:240849デフォルトの名無しさん
2010/07/30(金) 13:30:190850デフォルトの名無しさん
2010/08/05(木) 15:35:10具体的には、
THoge = (
ahoge1,
ahoge2,
ahoge3,
);
とした時、3という結果を得たいのです。
配列なんかだと、Length( hoge ); で取得できたりもしますが、これと同じことをしたいのです。
が、型に対してLength( THoge ); などとはできません…。
何か良い方法があるでしょうか。
0851デフォルトの名無しさん
2010/08/05(木) 16:26:020853デフォルトの名無しさん
2010/08/06(金) 16:10:130854デフォルトの名無しさん
2010/08/06(金) 20:37:04試しにグローバル変数に、
a:array[0..$10000000-1] of Integer;
b:array[0..$10000000-1] of Integer;
c:array[0..$10000000-1] of Integer;
と宣言し、実行してみました。
コンパイルは通り、a[]に関しては全領域にアクセスできました。
しかしb[]にアクセスすると、途中でアドレス違反をはき、停止しました。
グローバル変数->.bss、const->.dataに配置されるんですよね確か
exeを起動したらその定義が読み込まれると思うのですが、メモリに展開した時点でアドレス違反になる=起動すらできないと踏んでいたのですが、何か根本的に間違っているんでしょうか…?
0855デフォルトの名無しさん
2010/08/06(金) 23:46:110856デフォルトの名無しさん
2010/09/15(水) 00:17:03JRuby…
0857デフォルトの名無しさん
2010/09/18(土) 16:51:47strA:= '文字列 n1 ,文字列 n2 ,文字列 n3 , 〜文字列 n';
送信先ではこの区切りカンマ含む文字列と一緒に Hex2桁の(00〜FF) CK_A+CK_B
http://www.synopsys.co.jp/today_tomorrow/67/tt67_dw_1.html
チェックサム (Check Sum)誤り検出符号を付けなくてはならず、無かったり違うとチャックサムエラーで受け付けてくれません。
種類と計算式は
TCP スタンダードRFC1145 のチェックサムアルゴリズム
CHECKSUM CK_A CK_B
CK_A=0;
CK_B=0;
for(i = 0;i < N;i ++)
{
CK_A += buffer[i];
CK_B += CK_A;
}
という式だそうですが、Delphi 式に置き換えが判りません
どう書くのでしょう?
0858デフォルトの名無しさん
2010/09/18(土) 17:12:260859デフォルトの名無しさん
2010/09/18(土) 17:16:51アプリケーション層でも独自プロトコルでチェックサム付けないといけないってだけの話だろ
0860デフォルトの名無しさん
2010/09/18(土) 20:39:530861857
2010/09/18(土) 21:07:00データを渡さなければいけないホストプログラムが誤データ排除に
>>857 の式でのチェックサムを使っているそうで、生データだけでは拒否されます。
0862デフォルトの名無しさん
2010/09/18(土) 21:27:060863デフォルトの名無しさん
2010/09/19(日) 15:25:40CK_B := CK_B + CK_A;
できますタ
0864デフォルトの名無しさん
2010/09/19(日) 16:39:41勝手に騙らないでもらえますか?
0865デフォルトの名無しさん
2010/09/19(日) 16:50:54できますた
0866デフォルトの名無しさん
2010/09/19(日) 17:12:37こんなところで聞いた私が間違いでした
0867デフォルトの名無しさん
2010/09/19(日) 17:18:360868857
2010/09/20(月) 05:16:44これかな
void sum(FILE *out,char *buf)
{
unsigned char sum = 0;
char *p;
p = buf;
for (;;) {
putc(*p++,out);
if( *p == '*') break;
sum ^= *p;
}
fprintf(out,"*%02X\n",sum);
}
まったく違う気もしますがすみません、作った方と大半の資料とその製作環境は火事で....仕様書と残った一部ノートから発掘
「君プログラム組めるんだってね?」と事務方に押し付けられても ねぇ
せめて同じ系列の製作環境整えてそれで組める人を探してほしい。
0869デフォルトの名無しさん
2010/09/20(月) 05:24:060870デフォルトの名無しさん
2010/09/20(月) 06:40:54まったく違う気もしますが、って・・・
0871デフォルトの名無しさん
2010/09/21(火) 04:56:320872デフォルトの名無しさん
2010/09/29(水) 22:04:59ShowMessage( IntToStr( SizeOf( A ) ) );
ShowMessage( IntToStr( SizeOf( 1.00 ) ) );
こんな実験をしてみたんですが、
SizeOf( A )のほうは8、SizeOf( 1.00 )のほうは10と表示されます。
これはなぜなんでしょうか?同じ1.00という値を渡しているので、同じ値が表示されることを期待していたのですが…。
CPUエディタでみても、直接$00000008と$0000000aの値がそれぞれセットされているだけで詳細がわかりません。
0873デフォルトの名無しさん
2010/09/29(水) 22:14:290874デフォルトの名無しさん
2010/09/29(水) 23:30:520875デフォルトの名無しさん
2010/10/01(金) 12:46:550876デフォルトの名無しさん
2010/10/01(金) 20:10:070877デフォルトの名無しさん
2010/10/01(金) 22:58:180878デフォルトの名無しさん
2010/11/04(木) 02:18:12前スレのログをください(なければアドレスorスレタイトルを教えてください)
0879デフォルトの名無しさん
2010/11/04(木) 02:46:100880デフォルトの名無しさん
2010/11/04(木) 02:47:450881デフォルトの名無しさん
2010/11/04(木) 12:50:510882デフォルトの名無しさん
2010/11/07(日) 00:14:36http://www2.tbb.t-com.ne.jp/kob/DelphiTips/mciSendString.htm
ここにはそう書いてあるけど音声しかでません。
なお、Media Player Classic Version 6.4.8.3 日本語版では再生できています。
Del6Personal on XP sp2です。
0883デフォルトの名無しさん
2010/11/07(日) 15:03:560885デフォルトの名無しさん
2010/11/08(月) 17:30:06自機の作成、キーボード操作まではできたんだ。
だが、弾の発射が、Timerで座標の変化をしているせいか
画面上にひとつしか存在できない。
弾を連続して出すにはどんな方法が必要なんでしょうか?
初心者なので、馬鹿らしい質問かもしれませんが、回答お願いします
0886デフォルトの名無しさん
2010/11/08(月) 17:36:030887デフォルトの名無しさん
2010/11/08(月) 17:45:28タイマーインスタンスを複数生成する。
回答2
タイマーイベント発生時に複数の弾処理を行う。
ゲームの作り方の解説サイトってゲ製作の奴が作ってなかったか?
俺が見たのは何年も前の話だけど
0888デフォルトの名無しさん
2010/11/08(月) 17:49:360889デフォルトの名無しさん
2010/11/09(火) 17:15:51TPanelを継承して例えばTSuperPanelコンポーネントを作成しているのですが、
そのクラスでWMSizeプロシージャを定義し、inheritedを書きました。
で、inherited WMSize( msg );と書くと、プライベートメンバにアクセスできませんと怒られたので、
見てみると、実際TWinControlのWMSizeプロシージャはprivateセクションに定義されていました。
おかしいなと思い、TSuperPanelコンポーネントのinheritedにブレークを置いてみると、
procedure TWinControl.WMSize(var Message: TWMSize);
に入って来ていました。protectedなりpublicに定義されているならそれもわかるんですが、privateなのに
なぜここに突入して来るのでしょうか。
また、TSuperPanelのWMSizeから、inherited WMSize( msg );みたいに、親クラスのプロシージャ名を
まじえて定義することはできないんですかね?
WMSizeに限っては、ただinherited;、と書かなければならないものなんでしょうか。
0890デフォルトの名無しさん
2010/11/09(火) 22:46:220891デフォルトの名無しさん
2010/11/10(水) 11:46:420892デフォルトの名無しさん
2010/11/10(水) 12:49:46恥ずかしいね
0893デフォルトの名無しさん
2010/11/10(水) 13:32:480894デフォルトの名無しさん
2010/11/10(水) 14:17:150895デフォルトの名無しさん
2010/11/10(水) 16:36:340896デフォルトの名無しさん
2010/11/10(水) 18:30:020897デフォルトの名無しさん
2010/11/13(土) 14:25:130898デフォルトの名無しさん
2010/11/15(月) 12:14:318枚ありるJpeg画像を横4枚×縦2枚に合成して、
1つのJpegファイルを生成するソフトを作りたいです。
TBitmapには、指定した座標にファイルから読み込む機能は無さそうです。
どういう方法がありますでしょうか?
0899デフォルトの名無しさん
2010/11/15(月) 13:52:430900デフォルトの名無しさん
2010/11/15(月) 15:26:190901デフォルトの名無しさん
2010/11/15(月) 17:19:360902デフォルトの名無しさん
2010/11/15(月) 22:12:35TBitmap に直接ファイルから読み込むのではなく、TJPEGImage なり TPicture なりで
別に読み込んで新規の TBitmap に貼っ付ける
貼り付け方法は >>899-901 のいずれか
0903898
2010/11/15(月) 22:41:58ありがとうございます(v^-゚)
0904デフォルトの名無しさん
2010/11/26(金) 13:54:00Formに
Left := 0;
Top := 0;
と位置を指定すると、Formの左と上がサイズ5位隠れてしまいます。
Left := 5;
Top := 5;
とすると、希望通りFormの左上が画面の左上に合います。
この5って何ですかね?
0905デフォルトの名無しさん
2010/11/26(金) 13:55:030906デフォルトの名無しさん
2010/11/26(金) 14:17:350907デフォルトの名無しさん
2010/11/26(金) 15:15:560908デフォルトの名無しさん
2010/11/26(金) 17:08:480909デフォルトの名無しさん
2010/11/26(金) 17:12:03Delphi2010 です。
0910デフォルトの名無しさん
2010/11/27(土) 01:10:09Delphiはバージョン間互換だけ見ればトップレベルなんだけど
0911デフォルトの名無しさん
2010/11/27(土) 01:19:18メモリに配置したデータ : TempTarget:TMemoryStream
を範囲指定して : TargetBeginningPos,TargetHerePos:String
コピー(退避)させたい : TempFile:TMemoryStream
コピー後はデータの開始位置を先頭に戻しておく
と試しにセーブしてみるとコピー元先頭から保存されてしまいます。
どう直せば範囲指定で抜き出せるのでしょうか?
MS_Base:TMemoryStream
01 02 03 04 05 06 07 08 09 〜〜
↓
Temp_Hex:TMemoryStream
03 04 05 06 07 08
になって欲しい
0912デフォルトの名無しさん
2010/11/27(土) 01:22:34TempHexFileMS(Temp_Hex,MS_Base,'02','08');
Temp_Hex.SaveToFile(SaveFileName);
function TForm1.TempHexFileMS(TempFile,TempTarget:TMemoryStream;TargetBeginningPos,TargetHerePos:String):Boolean;
var
TempSize : Integer;
begin
Result := False;
TempSize := StrToInt('$'+ TargetHerePos) - StrToInt('$'+ TargetBeginningPos);
if ((TempSize *2) > TempTarget.Size) then exit;
try
TempTarget.Position := StrToInt('$'+ TargetBeginningPos); // 先頭位置を0x0002 に移動
TempFile.Write(TempTarget.Memory^,TempSize +1); // 0x0008 - 0x0002 の範囲サイズ を格納
TempFile.Position := 0;
TempTarget.Position := 0; // 先頭位置を戻す
Result := True;
except
Result := False;
end;
end;
-------------
↓
Temp_Hex
01 02 03 04 05 06
先頭から保存されてしまう
0913デフォルトの名無しさん
2010/11/27(土) 01:29:21TempTarget.Position := StrToInt('$'+ TargetBeginningPos);
を
TempTarget.Seek(StrToInt('$'+ TargetBeginningPos),0);
に変えても結果が同じでした。
0914デフォルトの名無しさん
2010/11/27(土) 03:52:42ついでにアドレス指定をInt にして元を $00n で来させるように減らしました
function TForm1.TempHexFileMS(TempFile,TempTarget:TMemoryStream;TargetBeginningPos,TargetHerePos:Integer):Boolean;
var
TempSize : Integer;
begin
Result := False;
TempSize := TargetHerePos - TargetBeginningPos;
if ((TempSize *2) > TempTarget.Size) then exit;
try
TempTarget.Position := TargetBeginningPos;
TempFile.CopyFrom(TempTarget,TempSize +1); // TempFile.Write.Memory^
TempFile.Position := 0;
TempTarget.Position := 0;
Result := True;
except
Result := False;
end;
end;
0915デフォルトの名無しさん
2010/11/27(土) 21:30:490916904
2010/11/27(土) 23:32:57WM_NCHITTESTを捕まえて、0,0にしましたよ。
0917デフォルトの名無しさん
2010/11/28(日) 12:43:590918デフォルトの名無しさん
2010/11/29(月) 13:14:40お前の勇気は無駄にしない
0919904
2010/12/17(金) 19:02:33ジュスチャーを組み込んだアプリを長時間動かしていると、突然
IRealtimeStylus 有効または無効に出来ません。みたいなエラーで落ちちゃうんですけど・・・
何か情報もっている方居ませんか?
0920デフォルトの名無しさん
2010/12/17(金) 21:27:570921904
2010/12/18(土) 14:49:47デバッグします。
0922デフォルトの名無しさん
2010/12/19(日) 12:36:420923デフォルトの名無しさん
2010/12/20(月) 18:21:140924デフォルトの名無しさん
2011/01/05(水) 11:25:24Boolean型などのプロパティは、↓のように定義すると隠れるんですが、Marginsプロパティのようにクラス参照になっているもので同じことをやると、エラーになります。
private
procedure SetAlignWithMargins( const setBool : Boolean );
published
property AlignWithMargins: Boolean write SetAlignWithMargins;
中略
procedure TSamples.SetAlignWithMargins( const setBool : Boolean );
begin
inherited AlignWithMargins := setBool;
end;
だいたいのサイトで読み専プロパティにすれば良いと書いていて、実際そうするとエラーにはならないんですが、設定はできないものの項目としてはオブジェクトインスペクタにグレー表示されてしまいます。
0925デフォルトの名無しさん
2011/01/05(水) 13:12:500926デフォルトの名無しさん
2011/01/24(月) 11:53:34↓例
http://www.youtube.com/watch?v=3KKWVPpFJXw
情報が見つからないのでいったいどこから手を付けて良いのかわからないのですが
できれば日本で参考になるサイトなどありませんか?
0927デフォルトの名無しさん
2011/01/24(月) 14:06:46それすら分からない人に作れるんでしょうかね
0928デフォルトの名無しさん
2011/01/24(月) 15:18:40黙れカス
0929デフォルトの名無しさん
2011/01/24(月) 16:00:160930デフォルトの名無しさん
2011/01/24(月) 16:15:330931デフォルトの名無しさん
2011/01/24(月) 17:49:150932デフォルトの名無しさん
2011/01/24(月) 17:57:160933デフォルトの名無しさん
2011/01/24(月) 20:07:460934デフォルトの名無しさん
2011/01/24(月) 20:24:550935デフォルトの名無しさん
2011/01/25(火) 00:54:44ttp://codelaboratories.com/nui/
からCL NUI SDKをインストールして、
ttp://www.lakraven.com/delphi-stuff/tkinect/
のTKinectコンポーネントを入れる。日本語の情報はほとんどないので
IT Security Labの内容を読むのが一番。
0936デフォルトの名無しさん
2011/01/25(火) 02:42:440937デフォルトの名無しさん
2011/01/25(火) 06:21:120938937
2011/01/25(火) 13:10:190940926
2011/01/26(水) 13:40:50935は紹介するなら責任をもって説明も書いてくれないと
0941926
2011/01/26(水) 13:41:560942926
2011/01/26(水) 20:56:200943デフォルトの名無しさん
2011/01/26(水) 21:17:20自分で書け
0944デフォルトの名無しさん
2011/02/01(火) 08:48:59Delphi2010ですが、コンポーネントのソースを除くと、例えば,
TComboBoxのようにpublished節しかなく、read/write指定がない、
ただproperty <名前>となっているものが多くあるように思います。
で、TComboBoxはTCustomComboBoxを継承しているのですが、それだったら、
最初からTCustomComboBoxを利用すれば良いじゃないかと思うのです。
このような構造にするメリットって何かあるのでしょうか?
0945デフォルトの名無しさん
2011/02/01(火) 10:10:03するプロパティを決めることができる。アクセス制限は狭めることができないので、
継承ツリーのどこかでpublishとするとpublishではなくすることができない。
0946904
2011/02/01(火) 12:09:49ProtectedとかPrivateに格下げできないから。
Publishedにするpropertyを自分で決められるようにするために
TCustomXXXXが存在するんじゃないの?
0947デフォルトの名無しさん
2011/02/01(火) 12:58:39しょぼすぎて自分でコンポーネントを作成できない人にはメリットないので安心して下さい
0948デフォルトの名無しさん
2011/02/01(火) 13:25:330949デフォルトの名無しさん
2011/02/01(火) 14:57:430950デフォルトの名無しさん
2011/02/02(水) 01:53:59家にずっと引きこもっていたら経済情報なんて不必要なのは分かるけどさ・・・・
0951デフォルトの名無しさん
2011/02/02(水) 23:54:51使うことが適切かどうかを論議した方が良い
0952デフォルトの名無しさん
2011/02/03(木) 00:06:100953デフォルトの名無しさん
2011/02/09(水) 13:46:22以下、ソースの抜粋。必要な変数は定義済みです。
constructor THogeControl.Create(AOwner: TComponent);
begin
FActionList:=TActionListEx.Create(nil);
FLeftAction:=TAction.Create(FActionList);
FRightAction:=TAction.Create(FActionList);
FActionList.AddAction(FLeftAction);
FActionList.AddAction(FRightAction);
FActionList.Actions[0].OnExecute := actLeftExecute;
FActionList.Actions[1].OnExecute := actRightExecute;
FGestureManager := TGestureManager.Create(nil);
Touch.GestureManager := FGestureManager;
// ここから先アクションとジェスチャーの紐付けがわからない。
end;
そもそも、TFormとかTPanelとかのTouchプロパティの下にはGestures.Standardみたいなプロパティが
ありそうなのですが、TTouchManagerをみるとGesturesプロパティが見当たりません。
何かヒントでもいいので、教えていただけないでしょうか。
0954953
2011/02/09(水) 13:50:09環境はD2010です。
0955デフォルトの名無しさん
2011/02/09(水) 15:06:560956904
2011/02/09(水) 16:05:28自己解決。
Touch.GestureManagerに必要なジェスチャを登録して、
そのジェスチャーにアクションを割り付ければいいという事が判りました。
// 必要なジェスチャーを登録する(今回はLeft)
Touch.GestureManager.SelectGesture( Self, sgiLeft );
// 登録したジェスチャーにアクションを紐付ける
Touch.GestureManager.FindGesture( Self, sgiLeft ).Action := FActionList.Actions[0];
以上で、無事ジェスチャ機能が働きました。
どのようにして、FormとかPanelのTouchプロパティの下にGesturesが表示されるかは
判りませんでした。
0957デフォルトの名無しさん
2011/02/09(水) 17:58:25つーかTActionListとTGestureManager貼りつけて、あとは各コンポでアクション選ぶだけだぞ
これの何が難しいの
0958904
2011/02/09(水) 18:16:26ただ、動かすだけなら簡単なのは判ってるって。
0959デフォルトの名無しさん
2011/02/10(木) 00:32:23まぁ、質問者の書き方も問題あるかもしれんが・・・
ちょっと読めば、動的に作成する方法を聞いてるくらいは判るやろ?
そこで、ポトペタやれば出来るだろってのはどうかなぁ。
0960デフォルトの名無しさん
2011/02/10(木) 03:42:54もしかして方法を本当に知らない・・・・?ネタではなくて?
0961デフォルトの名無しさん
2011/02/10(木) 09:10:52その自作コンポーネントを一つ配置しただけで、
ジェスチャーとかアクションコンポーネントをポトペタしなくても
すぐにジェスチャーが使えるようにしたいって話でしょ?
0962デフォルトの名無しさん
2011/02/10(木) 17:25:26もしかして一行リソースを読む処理を書かなくちゃいけないのを指して違うって言ってる?
どんだけ厳しいんだよ
0963デフォルトの名無しさん
2011/02/19(土) 13:48:152010までは、たとえばあるボタンに「フォーム/ユニットの切替」F12を割り当てて使えていたのですが、
XEに変えてから、この割り当てが効きません
かなり不便なのでなんとかしたいのですが、なにが悪いのでしょう?
0964963
2011/02/19(土) 15:38:58プログラム実行→IDE最小化→プログラム終了→IDE元のサイズに戻る
ができずに、プログラムを終了してもIDEが最小化されたままです
環境オプションの実行中の所を色々変更してるんですがダメです
元のサイズに戻すことは出来ないのでしょうか?
0965デフォルトの名無しさん
2011/03/11(金) 22:07:49.83知り合いがDelphiで作ったモジュールから、C++のDLLを呼び出そうとしています。
ただ、DLL関数の引数が、vector<string> a のようなstringの配列になってるんだけど、
これってそう簡単に呼び出せるものなのでしょうか。
Delphi側で、C++のSTLの定義に従ったものを作ろうと思えば作れるのだろうけど、
こういう場合って、C++のほうを単純な配列にするとか変えたほうがいいのでしょうか。
0966デフォルトの名無しさん
2011/03/12(土) 00:30:09.16動作を保障できない。可能なら普通のCのインタフェースに変更してもらうべし。
0967デフォルトの名無しさん
2011/03/12(土) 01:40:51.32まったくその通りです。char*の配列char**にすべきでしょうね。
ありがとうございます
0968デフォルトの名無しさん
2011/03/12(土) 17:04:23.690969デフォルトの名無しさん
2011/03/15(火) 18:42:24.90思うね
0970デフォルトの名無しさん
2011/03/15(火) 20:15:48.94思うわー
0971デフォルトの名無しさん
2011/03/15(火) 21:30:00.740972デフォルトの名無しさん
2011/03/16(水) 02:39:05.73思う思う
0973デフォルトの名無しさん
2011/03/16(水) 09:52:41.440974デフォルトの名無しさん
2011/03/16(水) 13:07:36.590975デフォルトの名無しさん
2011/03/16(水) 13:24:03.73ttp://www.youtube.com/watch?v=U8VHmiM8-AQ
0976デフォルトの名無しさん
2011/03/16(水) 15:09:53.000977デフォルトの名無しさん
2011/03/16(水) 18:52:56.800978デフォルトの名無しさん
2011/03/16(水) 19:22:09.480979デフォルトの名無しさん
2011/03/17(木) 07:45:23.340980デフォルトの名無しさん
2011/03/18(金) 12:06:11.590981デフォルトの名無しさん
2011/03/18(金) 12:07:10.13○ XEってwinsight32みたいなツールってありますか?
0982デフォルトの名無しさん
2011/03/18(金) 14:49:20.990983デフォルトの名無しさん
2011/03/18(金) 15:32:33.82レス数が950を超えています。1000を超えると書き込みができなくなります。