[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/13 11:51 / Filesize : 238 KB / Number-of Response : 924
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前: ◆XcB18Bks.Y mailto:sage [2008/03/12(水) 21:09:39 ]
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その45
pc11.2ch.net/test/read.cgi/tech/1198802907/

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9


151 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:01:22 ]
delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2F%BF%F4%C3%CD%A4%E4CSV%A4%CE%BC%E8%A4%EA%BD%D0%A4%B7
この GetInteger10を呼び出してる GetIntegerみたいに好みの仕様を追加したらいいんじゃないの?


152 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:17:15 ]
TreeViewで特定の項目だけVisible:=Falseにできますか?
または代わりの方法があれば教えてください。

153 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:15:01 ]
Canvasにウィンドウ右上の_ □ ×ボタンをレンダリングする方法ないですか?
ビットマップで用意するとテーマの変更に追従できないので。

>>152
たぶん無理。Add/Deleteするしか。

154 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:26:03 ]
>>153
WinAPIのDrawFrameControl


155 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:18:18 ]
DrawFrameControlってテーマに対応してるの?

156 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:37:32 ]
Win32APIだし、内部的にそれらのAPI使ってWindowsはウィンドウ描画してるんじゃ?

てか、それぐらい自分で試せるだろ。


157 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:39:03 ]
いや、テーマAPI別にあるから対応してねぇかも。


158 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:45:44 ]
Win32のスレで聞きな。そっちの方が知ってる人多いと思う。


159 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:26:10 ]
TRegExprでtr演算子の置換をするにはどうすればいいですか?
たとえば「tr/abc/ABC/」見たいなのです
英語とか良く分からないしググッても出ないし・・・
よろしくお願いします



160 名前:159 mailto:sage [2008/03/29(土) 14:48:57 ]
今頃ですがTRegExprでなくてもDLLを使わないようなものでなければ大丈夫です

161 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:53:24 ]
TRegExprの使い方
delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FTRegExpr

PCRE使ったの
cc.codegear.com/Item/25062

162 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:47:55 ]
鬼車ベースのライブラリってないの?

163 名前:159 mailto:sage [2008/03/29(土) 17:54:41 ]
>>161
> TRegExprの使い方
これを読んでみて分かりませんでした・・・
何かサンプルをいただけないでしょうか

164 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:08:56 ]
ぢゃ日本製使え
ttp://homepage1.nifty.com/bmonkey/delphi/delphi.html

165 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 02:33:50 ]
DirectoryListBox で、今選んでいるフォルダの深さが何階層目かを知る方法ってありますか?

166 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 02:40:05 ]
それ16ビットUIの名残り。使わない方がいいよ。

167 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 03:00:55 ]
>>166
そうですか、今後なるべく使わない様にします。
じゃあ、変数に入ってるパスが何階層目かを知る方法ってありますか?

168 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 04:05:07 ]
デリミタの数を数えるとか

169 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/30(日) 04:23:47 ]
delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/WordDecompose/WordDecompose.pas.txt

俺も自作のを使ってしまうなあ。




170 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 06:13:30 ]
StringReplaceで\を\_にでも変換して、
長さの差を取れば\の数は分かるんじゃないのか?

171 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 06:19:44 ]
\の数だけだとUNCパスで誤動作するんじゃね?

172 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 09:42:07 ]
はぁ・・・Del7買ってから出来たものはボタンクリックして画像表示
それから2Dのスクロールと3Dモデルの回転のみ・・・

変数宣言めんどくせー
コンパイラ時に自動作成して後で修正させるようにしてくれりゃいいのに

173 名前:167 mailto:sage [2008/03/30(日) 10:01:31 ]
>>168-171
やはり文字系で処理するしかないですか
なんかディレクトリの命令であるかなと思ったんで
すいませんでした、なんとかやってみます
ありがとうございましたw

174 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:03:40 ]
ExtractFileDriveしてExcludeTrailingPathDelimiterしつつExtractFilePathできる回数を数える

175 名前:167 mailto:sage [2008/03/30(日) 11:19:06 ]
>>174
あっ、そういう方法でも出来るんですね
なんか出来そうな感じがしてきました
試しにやってみます、ありがとうございましたw

176 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/30(日) 12:03:39 ]
作ってます。
delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/FileNameUnit/FileNameUnit.pas.txt

function PathLevel(Path: String): Integer;
procedure testPathLevel;

ご参考ください。

こういうのって、つくづく、実装よりも
テストコードが大事って思う。

177 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:06:29 ]
>172
そういうのが苦手な人にはDelphiは向かないのかも。Delphi2007ならリファクタリングで変数宣言を
追加する機能もあるけど、ちょっと違うな。昔のVBなら変数宣言不要なモード(Option)もあった気が。

178 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:55:00 ]
>>177
というかコンパイラって手抜きで進歩無さ杉
変数宣言なんか同じソース上に表示させる意味もなく、プロパティのように別窓か別ファイルでソート可能な表形式で管理・表示でいい


179 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:11:59 ]
BASICでもやってろ



180 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:54:06 ]
そもそもプログラミングに向いてない。

181 名前:167 mailto:sage [2008/03/30(日) 14:15:03 ]
>>176
WordDecompose.pas 頂きました
色々参考にさせていただきます、ありがとうございましたw

182 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:20:24 ]
ありとあらゆる変数をグローバル変数で宣言しておいたらどうだろう?

183 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:47:34 ]
>>178
IDEの恩恵しか受けたことないとこういう風に育つのか

184 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:10:06 ]
いや、何となくわかる。変数宣言のUI。でもソース上に書くってのに
慣れてるしプログラム書いてるって感じするし、よくよく考えてみると
GUI にするのってローカルだとかナンだとか面倒そうじゃん

185 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:35:28 ]
妄想するだけでで宣言文を書けたらいいのにね。
それは冗談として、アドインで作れないの?

186 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:25:08 ]
GUIで表示や追加くらいなら作れると思うが、
そんなので喜ぶのは初心者だけだし、
そういうのを作れるレベルの人は逆に生産性下がって不要なので
結果として誰も作らないってことになってるんじゃないかと

187 名前:デフォルトの名無しさん [2008/03/31(月) 00:39:57 ]
SpeedButtonみたいなのがいくつか5個くらい並んでて、一つは常にへっこんでて、一つを押すと他の全部が上がるってタイプのボタンはどうやってるんですか?

188 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:48:22 ]
SpeedButtonをグループ化するんだ

189 名前:デフォルトの名無しさん [2008/03/31(月) 00:54:37 ]
できました。
どうもありがとう!



190 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 10:50:14 ]
データベースでBlobに入っているバイナリファイルを少しずつダウンロード
したいのですが、良い方法はないでしょうか?
現在TBlobStream.CreateでそのStreamから少しずつ読み込んでいるのですが、
Createメソッドを実行した時点ですべてのデータを読み込んでいるようです。
要は少しずつReadしてプログレスバーにその状況を表示したいのです。
上の方法だとCreateを呼んだところでプログラムが一次停止したようになってしまいます。


191 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:19:44 ]
それについて深く考えたことない事を始めに断っておくけど、
昔調べた記憶と今、ちょっとソース見た感じだと、少なくとも新しい独自のBlobStreamクラスと
それを返すようにADOならTCustomADODataSet,dbExpressならTCustomSQLDataSetの
CreateBlobStreamメソッドをオーバーライドして独自BlobStreamを返すようにしないと
厳しそうだな。

192 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:22:49 ]
まぁ、読み込むBlobの最大サイズは設定できるようだから、それを設定して、
一次停止したようになるのを避けることはできる。根本的な解決ではないが。
それが嫌なら上記の方法以外ぱっと思いつかない。


193 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:29:09 ]
d6perなんですがdialog.pasがC:\Program Files\Borland\Delphi6\Source\Vclに存在しません・・・
ちょっと修正したい箇所があるのですが誰かうpしていただけないでしょうか?

194 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:37:21 ]
そのためのプロ版だ。プロ買え。

195 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:49:51 ]
DBGrid1のOnDrawColumnCellで、DBGrid1の上にUpDownを描くやり方で、UpDownでフィールドの値を変えることにチャレンジしています。

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin

 // DBGridをFColorDBGrid1とFColorDBGrid2の縞々にする。
 if not (gdSelected in State) then
 begin
  if Table1.RecNo mod 2=0 then
  begin
   DBGrid1.Canvas.Brush.Color := FColorDBGrid1;
   DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end else
  begin
   DBGrid1.Canvas.Brush.Color := FColorDBGrid2;
   DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
  end;
 end;

196 名前:つづき@ mailto:sage [2008/03/31(月) 20:50:48 ]
 // UpDownの描画
 fView := False;
 if gdSelected in State then with DBGrid1 do
 if SelectedField is TIntegerField then
 with TIntegerField(SelectedField) do
 begin

 if Table1.Active then
  updownDBGridInt.Position := Table1.FieldByName('Int').AsInteger;
  fView := true;
 end;
 updownDBGridInt.Visible := fView;
 if updownDBGridInt.Visible then
 if not CompareMem(@oldRect, @Rect, Sizeof(Rect)) then
  with Rect do begin
  updownDBGridInt.Top := Top;
  updownDBGridInt.Left := Left;
  updownDBGridInt.Height := Bottom - Top;
 end;
end;

197 名前:つづきA mailto:sage [2008/03/31(月) 20:51:36 ]
// updownDBGridIntのOnChangingEx
procedure TForm1.updownDBGridIntChangingEx(Sender: TObject;
var AllowChange: Boolean; NewValue: Smallint;
Direction: TUpDownDirection);
begin

 if (Table1.Active=true) and (0<Table1.RecordCount) then
 begin
  if not fView then exit;
  AllowChange := DBGrid1.SelectedField.CanModify;
  if AllowChange then
  begin 
  with DBGrid1 do
   if SelectedField is TIntegerField then with TIntegerField(SelectedField) do
   begin

   //Table1.DisableControls;
   Table1.Edit;
   Table1.FieldByName('Int').AsInteger := updownDBGridInt.Position;
   Table1.Post;

   DBGrid1.Refresh;
   //Table1.EnableControls;

   end;
  end;
end;
end;

こうすると、Tableにフィルターをかけてないときは、値の増減ができ、うまくいくのですが、フィルターをかけた場合、UpDownを増減すると、カレントレコードが先頭にいったり、最後にいったり(updownDBGridIntもそれにあわせて移動します)増減できなくなってしまいます。
一般的な話でなくて申し訳ないですが、原因のわかる方いらっしゃいませんか?

198 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 13:03:38 ]
writelnで出力した文字列を
一段上に戻って再度上書きして
進行状況を表示したいんですがどうやればいいですか?

199 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 13:07:49 ]
戻るくらいなら最初から改行するなよ



200 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/04/01(火) 13:44:59 ]
Writelnの代わりにWriteで書いてバックスペース(#8)?


201 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:35:05 ]
dn.codegear.com/article/33747を参考に自分のソフトをVistaに対応させようと思ったのですが、
ShowModalのところで詰まってしまいました
FormのプロパティにPopupParentが存在しないのです
どうすればいいのでしょうか?

202 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 19:57:44 ]
>>201 TurboDelphi使え

203 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 20:50:47 ]
APIなどで代替出来ないのでしょうか

204 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 21:59:02 ]
TurboDelphi(ソース付き)をダウンロードしてPopupParentの実装を調べればいいんじゃね?

205 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 22:01:20 ]
>>195
無関係な行を全部削除してくれんかね。

206 名前:195 mailto:sage [2008/04/01(火) 23:52:21 ]
すみません。

// DBGridをFColorDBGrid1とFColorDBGrid2の縞々にする。

以下の1ブロックは必要ないですね。

削除したのを1から載せるとまたクドくなるのでこれで許してくれませんか?

207 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:43:01 ]
ぜんぜんわからんわ。
UpDownコントロールをDBGridのセルの上に置いて、値を変えられるようにしたいみたいだけど。
withで間違えているのかな。

208 名前:201 mailto:sage [2008/04/02(水) 06:22:50 ]
ddev.blog46.fc2.com/blog-entry-70.htmlをTFormの代わりに使ったら解決しました
こちらの検索不足で申し訳ありませんでした

209 名前:195 mailto:sage [2008/04/02(水) 09:05:58 ]
FilterをONにしなければ、いけるんですが、もう少しいじってみます。



210 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 20:25:55 ]
if a and b then

という場合必ずaから評価される保証はありますか?

211 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 21:09:24 ]
はいえ

マジレスすると完全評価にした場合のことは知らん

212 名前:195 mailto:sage [2008/04/03(木) 16:34:43 ]
StringList1: TStringList;

が持っている情報量をbyteで知るにはどうしたらいいんでしょうか?

213 名前: ◆XcB18Bks.Y mailto:sage [2008/04/03(木) 16:37:03 ]
言語ガイドの記述を読むと完全評価の場合は評価順序に関する記述はありませんね。

>>210
Delphiでは論理演算子andやorでつながった式については
デフォルトではショートサーキット評価といって
左から順に評価して式全体の値が確定した時点でそこで評価を打ち切ってしまいます。

> if a and b then
だとaの値がFalseなら式全体の値はbの値に関係なくFalseになりますからここで評価を打ち切ります。
つまりbの評価は行われません。

完全評価でコンパイルさせるとすべてを評価することが保証されますが
順序に関する記述が一切無いので記述と異なる順序で評価される可能性があります。


214 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:59:30 ]
>>212
Createの前後でメモリを空き容量を数えるww

215 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 18:14:12 ]
>>212
Length(StringList.Text) + StringList.InstanceSize とか

216 名前:212 mailto:sage [2008/04/03(木) 18:54:09 ]
ごめんなさい、説明不足でした。
もってるTextの情報量だけ欲しくて、だから、単にLength(StringList1.Text)+1でいいですよね?

217 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:21:46 ]
以前このスレで、画面の切り替えにPageControlを使うアイデアがありました。
ワタシ今までずっと、たくさんのフォームを作って画面切り替えをしてきたの
ですが、今回、PageControl方式でやってみました。最初は良かったのですが、
ページが増えるにつれメインフォームに無茶苦茶たくさんのコンポーネントと
そのイベントなどが集中してしまい、かなり混乱してきています。
皆様はどのように整理してやってるのでしょうか。

218 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:30:06 ]
まさにそのためにFrameが用意されている。
Panelのような感じでフォームに貼り付けられて
設計時には個々の独立したフォームのように扱えるから綺麗にコードがばらせる。
ListBox/ListViewなんかのわりに処理がたくさん入るようなコンポーネント単位で独立させていってもいいし。

219 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:48:07 ]
フレームは以前チャレンジしたことがありまして、ただそのときは設計時に
貼り付けた先を更新してしまってdfmファイルを直して戻したり、イベント
関連で不都合があったり、何やかやで結構痛いめにあった記憶がありまして
(すっかり忘れてますが…)避けてきたのですが、うまく使えば画面切り替え
には一番使えるモノなのかですか。あぁ結構アタマ混乱気味です。



220 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:55:57 ]
別フォームで設計しておいて、そのフォームに貼り付けたコンポーネントの
全部のオーナを変更してしまうとか

フォームのままManualDockで貼り付けてしまうとか

221 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:11:43 ]
>>219
そういえば設計時に埋め込むと
>ただそのときは設計時に
>貼り付けた先を更新してしまってdfmファイルを直して戻したり
に絡んだエラーだか警告だかのダイアログがでまくってたような。

なので自分は設計時には埋め込まずFormCreateで
Frame1 := TFrame1.Create(Panel1);
Frame1.Parent := Panel1;
Frame1.Align := alClient;
と動的に作るようにしてる。

あとFormのOnCreate/OnDestroy/OnShow/OnHide
に相当するイベントハンドラがないのも不便なので
TFrameを継承して
DoCreate/DoDestroy/DoShow/DoHide
といったイベントハンドラもどきのvirtual procedureを持ったTFrameExを作って
更に子にFrameExのインスタンスがあったらそのもどきのメソッドを
適切なタイミングで呼び出すをTFormExもつくって使ってる。

言われてみればだいぶクセのある機能ではあるなぁw
それでも他にいい代替案がないんでずっとこの方式。
動的にタブを生成廃棄するメモやブラウザタイプのアプリを作るときにもかなり自然に使えるしね。

自分的には他にイベント関連等目立った問題はあまりないと思う。

222 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:21:55 ]
十分めんどくさいなぁ、それ。しかし、そんな感じになるんだろうなぁ。

223 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 23:27:28 ]
>216
いいけど、いいのか?Textプロパティを参照するとStrings[]の内容をCR+LF付で連結した文字列が
一時的にだが生成されるんだけど。それにCR+LFの分が計算に入ってるけど?
それにStrings[]に同一内容同一起源のデータがあると同一の領域に格納されていてデータサイズとしては
1つ分しか消費していない、という状況をどう考えるか、とか。
要は無理ってことだが。

224 名前:デフォルトの名無しさん [2008/04/04(金) 07:20:49 ]
TBitmap.PixelFormat に pfDevice をセットしたら、自動的に HandleType は bmDDB になるのだろうか?
TBitmap.PixelFormat に pf24bit をセットしたら、自動的に HandleType は bmDIB になるのだろうか?
TBitmap.HandleType に bmDDB  をセットしたら、自動的に PixelFormat は pfDevice になるのだろうか?
TBitmap.HandleType に bmDIB  をセットしたら、自動的に PixelFormat は pf24bit になるのだろうか?

225 名前:最初のひとつだけYESみたいだが? mailto:sage [2008/04/04(金) 07:35:14 ]
ソース嫁。

226 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:03:46 ]


227 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 09:04:34 ]
ごめん>>220はオーナーじゃなくて親だった。

procedure SetParentFromForm(dst,src:TWinControl );
var i:Integer;
begin
for i:=src.ControlCount-1 Downto 0 do
src.Controls[i].Parent:=dst;
end;

という関数を作って、
SetParentFromForm(Panel1,Form2);
のように行う
切り替える時は、
SetParentFromForm(Form2,Panel1);
として戻してやる。

オーナーが切り替わってるだけだから、ボタン類は元のフォームのイベントとして呼ばれる


228 名前:デフォルトの名無しさん [2008/04/04(金) 14:44:17 ]
String型の''やポインタ型のnilに相当するChar型の表現ってありますか?

例えば、String型の変数であるstrに'ABC'という文字列が入っていたとして、
一文字削って'AB'としたい場合、

 str[3] := ''; // これではエラーになりますが…

のようにしたいです。

229 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 14:50:01 ]
SetLength(str, 2)
str := Copy(str, 1, 2)

str[3] := #0 or Chr(0)
が直接の回答だけどおそらく望んでいる動作とは異なり
'AB'#0
という3文字の文字列になってしまう。
PCharに渡すなら問題ないけど。



230 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 15:02:55 ]
その他
str := LeftStr(str, 2);
Delete(str, 3, 1);

231 名前:228 mailto:sage [2008/04/04(金) 15:03:14 ]
>>229
素早いご回答をありがとうございます。

実は、str[1]に空文字を代入して'ABC'→'BC'とするなど、
色々できたらと思ったのですが、
やはりString型として処理した方がよさそうですね。
(そもそもString型の中身について理解していないのが問題ですが...)

232 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 15:12:25 ]
それなら delete(str,1,1) でいいと思うけどな


c言語の文字列はゼロ値終端で扱われる。 
pascalの文字列は 構造体になっていて文字のサイズ情報を持っている。
だから値#0を含む文字も含む事が出来る。

DelphiはC言語との連携が楽なように、PCharとpascal文字列の型変換が出来るように工夫されている
たとえば s:=PChar(s); と書くと、sの中から#0までの長さに自動調整される。

だから delete(str,1,1)を str :=PChar(str)+1 ; と書くことも出来る

233 名前:228 mailto:sage [2008/04/04(金) 16:01:13 ]
>>232
delete関数、知りませんでした…。
その他もとても勉強になります。ありがとうございました。m(__)m

234 名前:デフォルトの名無しさん [2008/04/04(金) 16:13:39 ]
こんにちは、Delphiのインラインアセンブラについて質問があります。

Python for Delphi(P4D)のコンポーネントのソースを見ているのですが、

> mov eax, Self
> mov eax, [eax].DLL_PyArg_ParseTuple

の [eax].DLL_PyArg_ParseTuple とはどういう意味なのでしょうか?

eax + DLL_PyArg_ParseTuple
であってますでしょうか

235 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:11:10 ]
>>234
はいな

const hoge=3;
mov eax, [eax].hoge は mov eax, [eax+3] と同じ

そういう時は、実行して、そこで止めてCPU窓を開くと逆アセ表示するからわかるよ


236 名前:デフォルトの名無しさん [2008/04/04(金) 21:24:48 ]
StretchDrawで画像を縮小するとかなり画像が劣化するのですが、
たとえば、1/2とか特定の縮小率にすればいいとか何かいい方法は
ないでしょうか?
Tbitmapを印刷するのに、StretchDLBitsを使う方法はDelphi Tipsで見つけたの
ですが、画面上でも使えますか?

237 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:36:31 ]
縮小にはDHGL
ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/

238 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:53:45 ]
こんばんは、旧バージョンについて教えてください。
サンプルでDelPhi5のソース等をもらったのですが
DelPhi5 というのはもう手に入らないのでしょうか?
現在提供されている無償版が6で5とは互換性がないと
どこかに書いてあったのでDelPhi5を手に入れる方法を
ご存知なら情報をお願いします。


239 名前:デフォルトの名無しさん [2008/04/05(土) 00:25:14 ]
>>235
レスサンクス!

> そういう時は、実行して、そこで止めてCPU窓を開くと逆アセ表示するからわかるよ
おお!その手があったか



240 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:25:55 ]
>>236
DHGL
>237

Delphiな小技:画像の拡大と縮小(画質重視)
delphi.livedoor.biz/archives/50602241.html

Delphiな小技:バイキュービック(Bicubic)法による拡大と縮小
delphi.livedoor.biz/archives/50610022.html

きれいな拡大・縮小〜Bilinear法の解説〜
www.geocities.jp/asumaroyuumaro/program/tips/Bilinear.html

きれいな拡大・縮小その2〜Bicubic法の解説〜
www.geocities.jp/asumaroyuumaro/program/tips/BiCubic.html

Delphi(Graphics) : Resize 1. Bilinear
junki.lix.jp/delphigr/041Resize1.htm

Delphi(Graphics) : Resize 2. Bilinear vs Bicubic
junki.lix.jp/delphigr/042Resize2.htm

Delphi(Graphics) : Resize 3. Interpolations
junki.lix.jp/delphigr/044Resize3.htm

Delphi(Graphics) : [GDI+] Resizing Images
junki.lix.jp/gdiplus/005ResizeImages.htm

>>238
Delphiの無償版はDelphi6とTurbo Delphiしかないと思う。
Delphi6でコンパイルしてみて、警告やらエラーが出たらソースを修正すればよし。

241 名前:デフォルトの名無しさん [2008/04/05(土) 00:26:52 ]
>>238
Delphi5のソースは大体、上のバージョンで通るから大丈夫。
通らなかったら、ここに聞きに来な

242 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:52:42 ]
>>240-241
ありがとうございます。6でコンパイルしてみます。
エラーがどうしても解消できなかったら
また質問に来るのでよろしくお願いします。

243 名前:デフォルトの名無しさん [2008/04/05(土) 05:59:25 ]
> 237,240
ありがとうございました。さっそく、DHGLを試してみます。
Delphi Graphic Secretsはどこでも販売してなくて
Amazonでは中古を9800円で販売していましたが、今、みたら
4000円だったのでさっそく購入してみます。
もしDHGLがうまくいかなかったら、ご紹介いただいたGDI+も
挑戦してみたいと思います。
本当にありがとうございました。

244 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 06:13:45 ]
きれいに画像を縮小したいだけだったら、DHGLを使うのに本を買う必要はないです。

245 名前:デフォルトの名無しさん [2008/04/05(土) 15:18:51 ]
ボタンクリックで即休止状態にしたいです。

新規プロジェクト(VCL Formアプリケーション)のフォームに配置したボタンに

procedure TForm1.Button1Click(Sender: TObject);
begin
SetSystemPowerState(False,True)
end;

と書いてコンパイルしただけでは、実行してボタンクリックしても
見た目は無反応でした。何かコードが不足しているのでしょうか・・・?

Windows XP SP2です。
ご存じの方いらっしゃいましたら、
すみませんが、よろしくお願いいたします。

246 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:11:20 ]
>245
ttp://msdn2.microsoft.com/en-us/library/aa373206(VS.85).aspx

Remarks

The calling process must have the SE_SHUTDOWN_NAME privilege. To enable
the SE_SHUTDOWN_NAME privilege, use the AdjustTokenPrivileges function.
For more information, see Changing Privileges in a Token.



247 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:22:17 ]
>>243
ttp://hp.vector.co.jp/authors/VA015850/delphi/lib/
かなり出遅れたけど上記の nstretchf はどう?

248 名前:デフォルトの名無しさん [2008/04/05(土) 21:00:23 ]
delphi経験一週間の者です。

配列を2つ作って、
両者の要素をコピーし合いたいんですが、
上手くいきません。

値のコピーをしたいのですが、
アドレスがコピーされてる模様。

Delphi7で、配列の値をコピーする
方法をご教示ください。

249 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:02:26 ]
配列に値入れてコピーしたらアドレスになるってどういう事?意味がわからない



250 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:32:28 ]
なぜ、うまくいかないコードを示さないのだろう?


251 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:04:39 ]
>>248
b := a; // アドレスのコピー
b := Copy(a, 0, Length(a)); // 値のコピー
SetLength(b, Length(a)); Move(a[0], b[0], SizeOf({要素の型}) * Length(a)); // 値のコピー

文字列の場合は t := s; とすると、s の文字列をコピーした振りをしてくれる(COW: Copy-On-Write)。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<238KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef