1 :
デフォルトの名無しさん
2014/07/20(日) 00:17:43.17 ID:thSlzuP/
2 :
デフォルトの名無しさん
2014/07/20(日) 00:27:27.53 ID:thSlzuP/
3 :
デフォルトの名無しさん
2014/07/20(日) 00:37:55.56 ID:zmfssaKU
pythonスレとかブル紛らわしいタイトルつけてんじゃねえよ
4 :
デフォルトの名無しさん
2014/07/20(日) 06:07:27.34 ID:vlthEOg+
すみません、お願いします。
delphi5(古い)を使いはじめた者ですが、.dfmファイルの中に
object Image1:TImage
…
Picture.data={
文字列
}
というのがあるんですが、この文字列を動的に入れる方法はないんでしょうか?
Tpictureにdataというプロパティがないようなんですが…
5 :
デフォルトの名無しさん
2014/07/21(月) 11:18:26.18 ID:b3gMOU9m
pasではなくdfmで定義されてるってことだろ そりゃpasのほうでやりゃええやん
6 :
デフォルトの名無しさん
2014/07/21(月) 14:33:14.20 ID:NO0PZe+z
今、出先で開発環境がないんですが、object以下をpasのどこかにカット&ペーストする感じでいいんでしょうか?w
7 :
6
2014/07/21(月) 14:34:26.98 ID:NO0PZe+z
あっ、wがついちゃった…
ごめんなさい。
8 :
6
2014/07/21(月) 14:35:33.15 ID:NO0PZe+z
あっ、wがついちゃった…
ごめんなさい。
9 :
デフォルトの名無しさん
2014/07/22(火) 17:27:45.75 ID:Tf55TaAO
>>4 自分は7なのでもしかしたらバージョンによって違うかもしれませんが…。
'Picture.Data = {'以降の文字列は意味のなさそうな数字の羅列ですよね?
だとすればオブジェクトインスペクタのTImage.Pictureに当たる部分だと思い
ます。画像データが文字コードに変換されて格納されているのでは?
10 :
デフォルトの名無しさん
2014/07/22(火) 22:49:06.02 ID:Uj6EjqAH
dataのところはローダが解析して実際のイメージデータを作るために使うものだろ
フォームをロードする時だけ使われるものなので、動的に入れるなんて無意味
実行時にPictureの中身を差し替えたいって話なら、リソースくっつけといて
LoadFromResourceすればええ
11 :
4
2014/07/23(水) 13:04:31.88 ID:yjjGsXl2
まず連投になってたことをお許しください。新しいスマホが、戻る押したら投稿までしてしまうようで…
10さんの言われるようにbmp→bmpのようなのは何種か試してできたんですが、文字列→bmpみたいなのに面白さみつけたんですね。
テキストデータの中に画像データも埋め込められるかなと、
おそらくimage1:tpictureが保持してる画像を開発環境が文字列に変更したんでしょうけど、これをまた逆に画像に変更する関数をつくらなきゃならない、と思い至りました。StrToBmpみたいなやつですね。で、picture.bitmapに結びつけるみたいな。
どういうルールで文字列に変えたのか、調べることにしてみます。
12 :
デフォルトの名無しさん
2014/07/23(水) 16:32:35.26 ID:wcwRUD1m
何が目的なのかさっぱり分からん
「動的に」って言ってるんだから、実行時に
Image1の画像を変更するって理解でいいんだよな
だったら、
Image1.Picture.LoadFromFile('MyPicture.png'); // ファイルからImage1に読み込む
Bitmap.Canvas.Draw(0, 0, Image1.Picture.Graphic); // Image1の内容をBitmapにコピーする
Image1.Picture.Assign(Bitmap); // 既存のBitmapをImage1にコピーする
とかはダメなのか?
それとも、単に.dfmファイルの内容を解析したいとか?
13 :
11
2014/07/23(水) 18:33:44.61 ID:yjjGsXl2
目的は、別にないんです。
.xmbファイルだったと思うんだけど、文字の羅列が、IEであけてみたら画像で出てきたんで面白かったと。
で、dfmファイルのこの文字列も画像に戻せたら面白いだろうなって。
読み込んだ画像そのまま表示でなくて。
ただの遊びです。「あぶり出し」みたいでたのしかろうと。
14 :
デフォルトの名無しさん
2014/07/23(水) 18:46:42.29 ID:wcwRUD1m
>>13 picture.dataの内容は...
今実験してみたら、Delphiのバージョンによって違いがあるかもだけど
最初の20文字は不明だけど(たぶん画像の属性かも)、21文字目からは
オブジェクトインスペクタでImage1のPictureプロパティとして読み込んだ
ファイルそのまんまだ
もちろん、元はバイナリだから、それをHex文字列に置き換えてあるけど
15 :
13
2014/07/23(水) 19:28:44.59 ID:yjjGsXl2
最初の20字が不要ってよくわかりましたね…
じゃ、最初の20字カットしてHex文に変えたやつをコード上で代入したらできますかね?
もっとも試すのは先になりそうです。
実は学生で帰省してるんです…
16 :
デフォルトの名無しさん
2014/07/23(水) 20:15:33.19 ID:wcwRUD1m
>>15 代入って言っても、バイナリな画像ファイルイメージだからな
普通は1バイト分ずつ変換してストリームに加えていき
LoadFromStreamで一気に読み込む
17 :
13
2014/07/23(水) 21:18:17.65 ID:yjjGsXl2
むつかしそうですが、やってみましょう!
18 :
13
2014/07/23(水) 21:19:32.07 ID:yjjGsXl2
むつかしそうですが、やってみましょう!
19 :
デフォルトの名無しさん
2014/07/24(木) 09:59:43.09 ID:HGzRV8MP
TImage.Picture.Dataはプロパティとして特別扱いになっているので、もしソースがあるなら
デバッグ版DCUを使う設定にしておいてTImage.Createにブレークポイント置いてそこから
処理を追っかけてみるといろいろわかっていいんじゃないかな。
20 :
デフォルトの名無しさん
2014/07/28(月) 10:55:39.53 ID:hga3YgQr
Explore('c:\users');
とやるとc:\users以下のフォルダの構造そのままなコンテキストメニュー出してくれるサンプルやライブラリないですか
見た目はこんな感じ
http://www5f.biglobe.ne.jp/~mujaki/pctips/img/linkbar2.gif
21 :
デフォルトの名無しさん
2014/07/29(火) 10:13:19.52 ID:f75LKv/I
ファイル一覧のサンプルで十分だろ 一覧を取得しながらメニューを作るだけ アイコン描画が若干面倒かもしれないが
22 :
デフォルトの名無しさん
2014/07/29(火) 12:23:30.31 ID:NTwBO5u1
それを一発でやってくれるライブラリを作ってってことだろ
23 :
デフォルトの名無しさん
2014/07/29(火) 14:44:15.48 ID:sCotzjuV
プログラムが面倒ならプログラマなんてやめろよ
24 :
デフォルトの名無しさん
2014/07/30(水) 16:42:28.66 ID:afhfKsVm
D7とFB2.5で開発中なのですがDBEditで登録済みのレコードの日付を修正する時にnullに戻すにはどうしたらいいでしょうか
25 :
デフォルトの名無しさん
2014/07/30(水) 17:24:49.96 ID:vV8Gjhjf
>>24 DBEditのDataFieldプロパティに指定しているフィールドを
FieldByName('フィールド名').Clearとかでクリアすればいいんじゃない?
26 :
デフォルトの名無しさん
2014/07/31(木) 13:34:06.08 ID:O6epLksn
>>25 ありがとうございます
どのイベントに記述ればいいでしょうか
onchangeやonvalidateに書いてみたのですがうまくいきませんでした
やりたいことはレコードを読んでデータが入っている日付型のフィールドを
キー入力でクリアしたいのですが、Delキーで消して次のフィールドに移ろうとすると
「' / / 'は日付ではありません」というメッセージが出て先に進めなくなります
これを何とかしたいのです
27 :
デフォルトの名無しさん
2014/07/31(木) 14:30:55.13 ID:425EHz81
>>26 う〜ん。細かい原因はデバッグしてみないと分からないなあ。
メッセージを見る限りDBEditをクリアしてもデータセットには' / / 'をセット
しようとてるみたいだから、何故そうなるのかを追及しないと。
最終的には問題の日付型のフィールドのOnSetTextイベントでどうにかできるん
じゃないかな。
28 :
デフォルトの名無しさん
2014/07/31(木) 16:31:33.89 ID:tQBQzX5Z
データベースの主キーだからヌルにできないとか?
29 :
デフォルトの名無しさん
2014/07/31(木) 17:29:57.95 ID:O6epLksn
>>27-28 ありがとうございます
ネットをあさったところDBEditのonKeyDownにDelキーが押されたらフィールドをクリアするというのを見つけて
試してみたらうまくいきました
' / / 'が残るのはEditMaskの設定でそうなってます
30 :
デフォルトの名無しさん
2014/08/13(水) 06:46:21.86 ID:pVfQZsYk
31 :
デフォルトの名無しさん
2014/08/13(水) 13:45:41.93 ID:H1TSpU1k
32 :
デフォルトの名無しさん
2014/08/13(水) 17:55:48.08 ID:pVfQZsYk
>>31 ありがとうございます。
ソースに普通にCDとAUXって入ってました。
全然動かなかったのでパニクってました。
33 :
デフォルトの名無しさん
2014/08/13(水) 18:13:41.17 ID:pVfQZsYk
もう1つご教授いただけないでしょうか?
PS3用のリモコンを使ってアプリを操作したいと思っています。
コマンドとして"VK_MEDIA_PLAY_PAUSE"を送った場合には
イベントハンドラにはどう反映させたら良いのでしょうか?
34 :
デフォルトの名無しさん
2014/08/28(木) 16:05:00.43 ID:28V1k94b
D7でボタンをいくつか縦横に並べてカーソルキーを使ってフォーカスのあるボタンを移動したいのですが
どうもボタンにフォーカスがあるとキーボードイベントが発生しないようでうまくいきません
上下矢印キーを押したときは上下に、左右矢印キーを押したときは左右にフォーカスを移動させたいのですが
どのようにしたらいいでしょうか
フォームにパネルを置きその上にBitBtnを配置しています
フォームのkeypreviewはtrueにしてあります
35 :
デフォルトの名無しさん
2014/08/28(木) 18:10:15.44 ID:hW2yjl7Z
おれだったらTObjectの配列を用意して各ボタンを突っ込んでおく
それでメッセージループでキーボードイベントを受け取って、どこにフォーカスするか決める
10x10列とかボタンが規則性のある並び方ならできると思う
36 :
デフォルトの名無しさん
2014/08/28(木) 22:31:36.32 ID:pJPsVZs/
Bitbtnかよw
37 :
デフォルトの名無しさん
2014/08/29(金) 11:26:02.04 ID:AJ0Py05J
>>34 BitBtn自体のKeyPressイベントに書いたらいいんじやないの?
例えば左にBitBtn1、右にBitBtn2を並べてBitBtn1にフォーカスがある時に→が
押されたらBitBtn2にフォーカス移動したいならButton1KeyPressに
if Key = '27' then Button2.SetFocus;と書けばいい。
38 :
◆rW3tmvmDLc
2014/08/29(金) 16:36:09.72 ID:EE6o1/jo
Windows標準のコントロールの挙動で苦しめられるよりは自分で作ってしまった方が楽なことがあります。
全部作ると大変ですがグリッドコンポを使ってそれらしいものを作ってみました。イカソース(1/5)。
type
{ フォームにDrawGridを置き、AlignをalClientに、DefaultDrawingをFalseに、FixedColsとFixedRowsを0に。}
TForm1 = class(TForm)
DrawGrid1: TDrawGrid;
(※中略)
private
{ Private 宣言 }
FPushed: boolean; // ボタン凹み中
FPushedCol, FPushedRow: integer; // どのセルのボタンが凹んでいるか
procedure PushDown(ACol, ARow: integer);
procedure PushUp;
procedure InvalidateCell(ACol, ARow: Integer);
procedure DrawCell(ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure ButtonClicked(ACol, ARow: Integer);
procedure ResizeCells;
end;
(※中略)
// 偽ボタンクリック時の処理。
procedure TForm1.ButtonClicked(ACol, ARow: Integer);
var
msg: string;
begin
msg := format('[%d,%d]のボタンが押されたよ!', [ACol, ARow]);
Application.MessageBox(PChar(msg), 'ボタンが押されたよ!');
end;
39 :
(2/5) ◆rW3tmvmDLc
2014/08/29(金) 16:37:03.78 ID:EE6o1/jo
// 指定されたセルを描画します。
procedure TForm1.DrawCell(ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);
const
cPushedOffset = 2;
var
IsThisCellPushed: boolean;
uState: uint;
str: string;
begin
str := format('[%d, %d]', [ACol, ARow]);
// このボタンは押されている?
IsThisCellPushed := (FPushed and (ACol = FPushedCol) and (ARow = FPushedRow));
// ボタンそっくりの絵を描く。
uState := DFCS_BUTTONPUSH or DFCS_ADJUSTRECT;
if IsThisCellPushed then
uState := uState or DFCS_PUSHED;
Windows.DrawFrameControl(DrawGrid1.Canvas.Handle, Rect, DFC_BUTTON, uState);
// ボタン文字列の描画。
DrawGrid1.Canvas.Brush.Style := bsClear;
if IsThisCellPushed then
Windows.OffsetRect(Rect, cPushedOffset, cPushedOffset);
Windows.DrawText(DrawGrid1.Canvas.Handle, PChar(str), Length(Str), Rect, DT_NOPREFIX or DT_CENTER or DT_SINGLELINE or DT_VCENTER);
if IsThisCellPushed then
Windows.OffsetRect(Rect, -cPushedOffset, -cPushedOffset);
// 現在位置のボタンならフォーカスの点線枠を描く。
if gdFocused in State then
begin
DrawGrid1.Canvas.Brush.Style := bsSolid;
Windows.DrawFocusRect(DrawGrid1.Canvas.Handle, Rect);
end;
end;
40 :
(3/5) ◆rW3tmvmDLc
2014/08/29(金) 16:37:47.29 ID:EE6o1/jo
// グリッドのOnDrawCellイベントハンドラ
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
DrawCell(ACol, ARow, Rect, State);
end;
// グリッドのOnKeyDownイベントハンドラ
procedure TForm1.DrawGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_SPACE then
PushDown(DrawGrid1.Col, DrawGrid1.Row);
end;
// グリッドのOnKeyUpイベントハンドラ
procedure TForm1.DrawGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_SPACE then
PushUp;
end;
// グリッドのOnMouseDownイベントハンドラ
procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
MouseCol, MouseRow: integer;
begin
if Button = mbLeft then
begin
DrawGrid1.MouseToCell(X, Y, MouseCol, MouseRow);
PushDown(MouseCol, MouseRow);
end;
end;
41 :
(4/5) ◆rW3tmvmDLc
2014/08/29(金) 16:38:41.67 ID:EE6o1/jo
// グリッドのOnMouseUpイベントハンドラ
procedure TForm1.DrawGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
PushUp;
end;
// フォームのOnResizeイベントハンドラ
procedure TForm1.FormResize(Sender: TObject);
begin
ResizeCells;
end;
// 指定されたセルの再描画をWindowsにお願いする。
procedure TForm1.InvalidateCell(ACol, ARow: Integer);
var
aCellRect: TRect;
begin
aCellRect := DrawGrid1.CellRect(FPushedCol, FPushedRow);
InvalidateRect(DrawGrid1.Handle, @aCellRect, True);
end;
// ボタンを凹ます。
procedure TForm1.PushDown(ACol, ARow: integer);
begin
FPushed := True;
FPushedCol := ACol;
FPushedRow := ARow;
InvalidateCell(ACol, ARow);
end;
42 :
(5/5) ◆rW3tmvmDLc
2014/08/29(金) 16:43:51.55 ID:EE6o1/jo
// 凹ませたボタンを戻す。
procedure TForm1.PushUp;
begin
FPushed := False;
InvalidateCell(FPushedCol, FPushedRow);
ButtonClicked(FPushedCol, FPushedRow);
end;
// ボタン群のサイズ調整。
procedure TForm1.ResizeCells;
begin
with DrawGrid1 do
begin
DefaultColWidth := (ClientWidth - GridLineWidth * (ColCount - 1)) div ColCount;
DefaultRowHeight := (ClientHeight - GridLineWidth * (RowCount - 1)) div RowCount;
end;
end;
以上です。Turbo Delphi Explorer / Windows 7 (64bit)で作りましたが古いバージョン、古いOSでも動くと思います。
このサンプルではDrawGridを使っていますが
StringGridを使ってボタンのテキストをCellsプロパティに持たせてもよいでしょう。
43 :
デフォルトの名無しさん
2014/09/11(木) 06:14:07.67 ID:XTXbJyv5
以前書き込みした見当違いの質問をする初心者です。
wavやmp3ファイルの時間単位の長さ(5分12秒とか)や
現在の経過時間(1分16秒とか)を取得するには
どういう手続きがいるのでしょうか?
44 :
デフォルトの名無しさん
2014/09/11(木) 07:13:10.48 ID:xV32gnNe
まず、wavやmp3のファイル構造を調べます。
45 :
デフォルトの名無しさん
2014/09/11(木) 12:14:37.06 ID:76rNNHFD
長さはファイルに記録されているだろうし経過時間は再生開始時間との差を見ればいいけど、
それ用のコンポーネント任せにすれば簡単だろうね ビットレートとかタグとか知りたい情報あるだろうし
46 :
デフォルトの名無しさん
2014/09/12(金) 13:51:17.78 ID:K1E736hN
>>45 そんなに難しいとは思えないのですが、
いくら探しても情報が出てこないんです…。
47 :
デフォルトの名無しさん
2014/09/12(金) 14:14:35.61 ID:0pZgEsmB
何を使って再生してんのか、話はそこからだ
48 :
デフォルトの名無しさん
2014/09/12(金) 16:10:24.67 ID:TbB0cb10
で、wavやmp3のファイル構造を調べたの?
49 :
デフォルトの名無しさん
2014/09/12(金) 16:21:58.78 ID:TbB0cb10
無視されて腹が立ってるけど、
次は、Delphiでのファイルの取扱の作法を学びます。
いろいろありどれもよいものだが、個人的にはここでは TFileStreamあたりだろうか。
とりあえずここまで。
50 :
デフォルトの名無しさん
2014/09/13(土) 12:30:41.03 ID:UKVm+YOd
日記は他でやれ
51 :
デフォルトの名無しさん
2014/09/13(土) 16:02:13.29 ID:S4jvygID
>>49 すみません。
>>44さんとかの仰っている意味がしばらく分からず呆然としていました。
mp3は後回しにしてwavの構造なんかはフォーマットを見ながら確認しました。
wav構造で44.1kHz,16bitステレオなのでそこから計算していけば良いのでしょうか?
全然分かっていない感じですみません。
>>47 FileListBoxで選択したファイルをTMediaPlayerに丸投げするだけのソフトです。
52 :
デフォルトの名無しさん
2014/09/13(土) 16:52:06.75 ID:DZFfxEW9
TMediaPlayerクラスにない機能を追加したいってことだろ 継承して作ればいいじゃん
53 :
デフォルトの名無しさん
2014/09/14(日) 10:32:18.62 ID:phltxkIY
情報の取得にTMediaPlayerの何らかの機能が使えるわけでもないし、
わざわざ継承して作る意味を感じないんですが?
54 :
デフォルトの名無しさん
2014/09/15(月) 11:41:25.74 ID:axRzhYMC
>>52 実現できる知識があれば、困らないわけで…
コンポーネントですとか、解説しているサイトなどありましたら
教えていただけないでしょうか?
55 :
デフォルトの名無しさん
2014/09/15(月) 13:56:21.15 ID:bnu8+dqq
目の前の便利な箱で調べてみたら?
56 :
デフォルトの名無しさん
2014/09/15(月) 17:22:15.60 ID:axRzhYMC
しつこく探しましたが、見つからなくて困ってます。
57 :
デフォルトの名無しさん
2014/09/15(月) 17:31:25.57 ID:T4IYwvYx
TMediaPlayerはCurrentPositionや、Duration等の情報も公開しています
58 :
デフォルトの名無しさん
2014/09/15(月) 23:14:12.73 ID:BpGaqprp
59 :
デフォルトの名無しさん
2014/09/15(月) 23:15:10.91 ID:BpGaqprp
http://www.kobmov.sakura.ne.jp/DelphiTips/mciSendString.htm
ってNGワードなんだな
60 :
デフォルトの名無しさん
2014/09/16(火) 07:47:42.65 ID:+0yickAA
61 :
デフォルトの名無しさん
2014/09/16(火) 13:14:21.74 ID:0EMTofDd
検索のしかたを覚えるのが先だね
62 :
デフォルトの名無しさん
2014/09/16(火) 23:05:03.84 ID:M+eLRISc
>>60 >>58 の三つのアドレスは開いて読んでみた?
「読んでないけど」とは書いたけど一応ざくっと目は通してから書いたんだが
63 :
デフォルトの名無しさん
2014/09/17(水) 00:30:54.74 ID:eg8MiQop
64 :
デフォルトの名無しさん
2014/09/17(水) 09:24:33.12 ID:3UVYH3d1
英語が得意だと、delphiの英語の資産を調べていくらでも解決策が見つかる stackoverflowのフォーラムとか
意外とそんなところでつまづく人もいるのかな 日本語情報は英語情報の3割ぐらいしかないと感じる
65 :
デフォルトの名無しさん
2014/09/17(水) 21:42:58.98 ID:7I0bAJ2w
>>59 そこのレンタルサーバー関係がNGワードになってますね。
タラコ唇のあいつがそこを借りて大量アクセスしてましたから。
66 :
デフォルトの名無しさん
2014/09/18(木) 05:44:48.70 ID:tVlZqP6r
>>62 教えていただいたリンクについては、ソフトを作るときに最初に目を通しています。
手元に印刷して取ってありますが、DLLの取り扱いが必要なことと、
TMediaPlayerでMP3の再生ができるので、活用していませんでした。申し訳ありません。
>>63 まさしくその通りで、時間があるときにDelphiをいじっている感じです。
1年前から全く成長していないのは自覚しています。
未だに、wavとmp3でボリュームコントロール一本化できないのはなぜか分かっていません。
>>64 明らかに必要なタイトルが分かるページは目を通していますが、
フォーラムなんかだとほとんど分からないレベルです。
67 :
デフォルトの名無しさん
2014/09/18(木) 07:34:15.13 ID:8a9llVTL
68 :
デフォルトの名無しさん
2014/09/18(木) 12:18:12.10 ID:PZ+8bRLv
スタックオーバーフローか
最近ロシアと交流してたせいかロシアの固有名詞に見えたよ
69 :
デフォルトの名無しさん
2014/10/17(金) 10:38:35.56 ID:D5KoNnar
数年ぶりにソフト作りたくてこのスレ見ました。
Del7のことがレスされてますが、win7 64bit環境でDel7使うときの注意事項ってUnicode位なものでしょうか?
70 :
デフォルトの名無しさん
2014/10/17(金) 14:03:52.46 ID:AL6vF8S8
UAC
Unicodeは逆にあまり気にしてもしょうがない(できたプログラムはANSI=Shift_JISだから)
あと可能ならIDEはXPモード上で動かせ
71 :
デフォルトの名無しさん
2014/10/18(土) 01:22:33.78 ID:1zwgl9y1
BDE
72 :
デフォルトの名無しさん
2014/10/22(水) 21:35:22.57 ID:bu+U1qDd
Delphi7の RegisterClass API リソースリーク関連
unit Classes;
procedure DeallocateHWnd(Wnd: HWND);
var
Instance: Pointer;
TempClass: TWndClass;//Add
begin
・・・・
if Instance <> @DefWindowProc then FreeObjectInstance(Instance);
Windows.UnregisterClass(UtilWindowClass.lpszClassName, HInstance);//Add
unit Controls;
procedure TWinControl.DestroyWindowHandle;
var//Add
Params: TCreateParams;//Add
begin
CreateParams(Params);//Add
・・・・
finally
Exclude(FControlState, csDestroyingHandle);
Windows.UnregisterClass(Params.WinClassName, HInstance);//Add
end;
73 :
デフォルトの名無しさん
2014/10/22(水) 21:36:27.10 ID:bu+U1qDd
続き
destructor TWinControl.Destroy;
var
・・・・・
Params: TCreateParams;//Add
begin
CreateParams(Params);//Add
Destroying;
・・・
if FHandle <> 0 then DestroyWindowHandle;
Windows.UnregisterClass(Params.WinClassName, HInstance);//Add
unit Forms;
destructor TApplication.Destroy;
begin
・・・・・
DestroyWindow(FHandle);
end;
Windows.UnregisterClass(WindowClass.lpszClassName, HInstance);//Add
74 :
デフォルトの名無しさん
2014/10/25(土) 16:08:54.79 ID:wdoXsx3q
visual studioではなく、delphiを使う
利点を教えて下さい。delphiは使った事は無いのですが、visual studioと同じくらい完成度の高い統合開発環境ですか?
75 :
デフォルトの名無しさん
2014/10/25(土) 16:17:49.51 ID:CHKyg9/f
逆にVisual Studio使った事がないんだけどコンパイルが早いんで少しずつ作っては
試しで実行するのがストレスなく出来るとかかな?
76 :
デフォルトの名無しさん
2014/10/25(土) 16:24:00.15 ID:wdoXsx3q
どうしてvisual studioを使わないんですか? intelではなくAMDのパソコンを買う
ような感じですか?
77 :
デフォルトの名無しさん
2014/10/25(土) 16:36:17.58 ID:CHKyg9/f
会社で担当してるプロジェクトがDelphi製のシステムだからだよ。
趣味で両方使ってる人のほうが的確なコメントが出来るかもね。
78 :
デフォルトの名無しさん
2014/10/25(土) 16:39:15.14 ID:4eYSIn39
>>76 どっち使っても目的とする物ができたらいい
VSだろうがDelphiだろうが道具
必要十分であればそれでいい
79 :
デフォルトの名無しさん
2014/10/25(土) 16:39:55.76 ID:n8h91IfF
1.単体で動くexeが作れる
フレームワークの有無やバージョンに関わらず動作させられる
2.マルチプラットフォームで動作するアプリが作れる
特にアンドロイドかな?CPUはARMになるけど
3.さらにはWebサービスがほぼDelphiの知識のみで簡単に作れる
ざっとあげただけでもメリットは多いよ
80 :
デフォルトの名無しさん
2014/10/25(土) 16:50:04.27 ID:wdoXsx3q
>>79 >1.単体で動くexeが作れる
>フレームワークの有無やバージョンに関わらず動作させられる
本当ですか?frameworkいらないんですか?
驚き桃ノ木です。delphiに乗り換えようかなと本気で思いました。検討します。
81 :
デフォルトの名無しさん
2014/10/25(土) 16:59:56.63 ID:n8h91IfF
うーん、結局好みで選べばいいのかな?
自分にとってのメリットは他の人に当てはまるかどうかはわからんし…
>>80 実行環境にフレームワークは要らないですよ。
ただ今はデフォルトでフレームワークは入ってる時代だけどね
でもフレームワークのバージョンによっては動作しないアプリもあるしね
82 :
デフォルトの名無しさん
2014/10/25(土) 17:04:59.09 ID:wdoXsx3q
visual studioだとc#のアプリ作ったら簡単に逆コンパイル出来ますがdelphiだとどうなるんですか?frameworkいらないならc#でもネイティブなexeが出来るんですか?
83 :
デフォルトの名無しさん
2014/10/25(土) 17:11:14.43 ID:4eYSIn39
>>82 どんなコンパイラを通そうが動作するアプリケーションはすべてリバースエンジニアリングできる
出来上がりの可読性が高いか低いかは別問題だけどなー
84 :
デフォルトの名無しさん
2014/10/25(土) 17:27:05.50 ID:n8h91IfF
C#っていうか.netはJITでしょ?
単体で動く実行形式はできないと思われ
Delphiはリバースエンジニアリングについては普通のネィティブコンパイラと同じなのかな?
アセンブラレベルには戻せるだろうけど
やったことないからわかんないです。
あと.netは難読化しないとwwだからなぁ〜
85 :
デフォルトの名無しさん
2014/10/25(土) 21:08:15.86 ID:wdoXsx3q
>>83 vsのc#だと逆コンパイルするとほぼ完全にソースコードレベルまで復元出来ますが
delphiのc#でも同じですか?
86 :
デフォルトの名無しさん
2014/10/25(土) 21:17:18.72 ID:lUrFBeQ+
delphiのc#wwwww
87 :
デフォルトの名無しさん
2014/10/25(土) 22:07:31.93 ID:n8h91IfF
>>85 相当な勘違いしてる?
C#とDelphiでは利用するプログラミング言語自体が違うよ
DelphiはPascal系の拡張言語、対するC#はC/C++系の文法を踏襲してる
またDelphiはCPUネィティブなコンパイラなのに対して、C#は中間言語+実行環境
うーん難しい、、説明しきれない…
とりあえずDelphiの場合はマシン語レベルまで実行形式が翻訳されるから、高級言語のソースレベルまでリバースするのは困難かな?
88 :
デフォルトの名無しさん
2014/10/25(土) 23:05:38.90 ID:oOLuwoTk
Delphi7で範囲チェックが発生するのでFix
function SetFilePointerEx(hFile: THandle; liDistanceToMove: Int64;//Add
var lpNewFilePointer: Int64; dwMoveMethod: DWORD): Boolean; stdcall;
{$EXTERNALSYM SetFilePointerEx}
function SetFilePointerEx; external kernel32 name 'SetFilePointerEx';//Add
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64;
{$IFDEF MSWINDOWS}
{
begin
Result := Offset;
Int64Rec(Result).Lo := SetFilePointer(THandle(Handle), Int64Rec(Result).Lo,
@Int64Rec(Result).Hi, Origin);
end;
}
begin
if not(SetFilePointerEx(Handle, Offset , result, Origin)) then//Fix
Result:=-1;//Fix
end;
89 :
デフォルトの名無しさん
2014/10/25(土) 23:47:03.73 ID:btAdlciB
C#とDelphiを天秤にかけて何を迷う必要があるの?
今のC#ならJITコンパイラのおかげでC++よりも
パフォーマンスが上になる状況も多いのに
Delphiは最適化が糞だから遅いよ
90 :
デフォルトの名無しさん
2014/10/26(日) 06:50:48.69 ID:2UTZTipn
.net の呪縛から逃れられる利点は大きいと思う
91 :
デフォルトの名無しさん
2014/10/26(日) 07:49:44.68 ID:mAzIIl8o
C#www
92 :
デフォルトの名無しさん
2014/10/26(日) 15:36:27.93 ID:7WR2jb2b
マルチプラットフォーム対応のアプリを作るにはいい選択じゃないかな
xamarinとかでC#でもいけるみたいだけどMSはやはりWindows基準になるから、マルチプラットフォーム対応してもいつ潰されるかわからない
93 :
デフォルトの名無しさん
2014/10/26(日) 17:29:33.72 ID:Are6beU9
C#のがC++より速いってマジ?
vsのC#とDelphiXE6で簡単なテストプロ(XorShift乱数を発生)で比較したら、3.5倍以上Delphiのが速いんだけど…
94 :
デフォルトの名無しさん
2014/10/26(日) 20:16:52.61 ID:7WR2jb2b
コンパイラの実行速度比較はしちゃいけないんじゃなかった?
MSが言い出したんだっけ
なんだそりゃww
C#なんて所詮そんなもん
95 :
デフォルトの名無しさん
2014/10/26(日) 20:46:35.45 ID:aRtWDNP3
最適化具合や特定の処理によっては速いってだけでしょ
でもまぁC#をネイティブ化する「.NET Native」ってのも
予定されてるみたいだし、将来性は語るまでもないよね
サポート体制も段違いだし
普通の企業ならBMPの不具合も早々にパッチ出してるよね
あげく、ユーザーにソース修正させるとかないわ
96 :
デフォルトの名無しさん
2014/10/26(日) 21:36:58.87 ID:7WR2jb2b
>>95 .netの実行ファイルのネィティブ化って昔から言われてるけど未だに実現してないしなー
ってかネィティブ化したら.netなんて意味ない
(´`:)
あとマルチプラットフォーム開発を視点にするとVSにはまともな将来性などありません
スレ違いなんで落ちます(´V`)♪
97 :
デフォルトの名無しさん
2014/10/26(日) 22:02:20.54 ID:WNmzUV+S
>>95 上でStarter使用者はソースないからBMPの不具合を
修正できないって言ったものだけど、エンバカにメールしたら、
ソース提供はしない、金払ってアップグレードしてくれと言われた
普通の不具合だったら、百歩譲って、それもアリとも思うが
セキュリティに関連した不具合だからね
予想はしてたけど、さすがに呆れた...
98 :
デフォルトの名無しさん
2014/10/27(月) 01:16:09.35 ID:wXEzglFM
普通以下の体力しか無い企業としてはサポート切れの製品は新しいの買ってくれというのは仕方ない
天下のMSですらそんなもんだ
あっちは体力があって尚且つ政府レベルの圧力がある関係上、
サポートが10年単位とかアホみたいに長くて無償で何でもかんでもやってくれる印象があるんだろうけど、
普通にサポートが切れた製品は新しい製品に移行してくれと言ってる
最近パワポでBMPの比じゃない致命的な脆弱性が見つかったけど、XPはサポート外として非対応だし
99 :
デフォルトの名無しさん
2014/10/27(月) 01:17:10.26 ID:wXEzglFM
まあ正直Starterくらい買えよと思うが
自力で修正できるProユーザーはその分金払ってんだし
100 :
デフォルトの名無しさん
2014/10/27(月) 03:06:43.05 ID:o5rFt07R
Xpとdelphiを比較する?
Xpは10年以上前だし、XEシリーズなんか
バージョンアップが多いけど、出てまだ4年だし
自分は趣味でフリーソフト公開してるだけだけど
開発環境に金出すとか無理だし、Starterが限界
でも最近はさすがに他への乗り換えを考えてる
メインのソフトは2万行越えてるから移植は無理だけど
新規はdelphi使わない積もり
101 :
デフォルトの名無しさん
2014/10/27(月) 05:10:08.98 ID:OnEHOzGM
うだうだ言ってないで好きなの使えばいいんじゃね
102 :
デフォルトの名無しさん
2014/10/27(月) 07:36:17.41 ID:pFv79Jsf
選択者のセンスの問題。情報弱者が.netを選ぶ
103 :
デフォルトの名無しさん
2014/10/27(月) 11:20:15.97 ID:ey0BnD1s
ところでみんなどのバージョンのDelphi使ってるの?
104 :
デフォルトの名無しさん
2014/10/27(月) 11:31:24.75 ID:/BjGC8i3
105 :
デフォルトの名無しさん
2014/10/27(月) 12:14:55.39 ID:a6rDsGZI
>>100 未練タラタラのかまってちゃんはウザいので最近といわず今すぐ乗り換えてくれないですかねぇ
106 :
デフォルトの名無しさん
2014/10/27(月) 14:48:19.41 ID:mWyuhjq/
>>100が貧乏で開発環境に出す金すらないことは責めないであげて
悪いのは日本の政治だから…
107 :
デフォルトの名無しさん
2014/10/27(月) 19:18:19.97 ID:o5rFt07R
>>106 だって、昼飯代を引くと小遣い15kしか残らないんだよ
Proとか夢のまた夢...
108 :
デフォルトの名無しさん
2014/10/27(月) 19:30:31.92 ID:JWgy5v2k
おれはDelphiは軽自動車だと思ってる 最高速を出したいなら向かない
小回りは利いて便利なんだけど、速度面で不満は残る
たぶんメモリの使い方に難があって、関数のインライン展開ってXEではできるはずなんだけど効果が薄い
C系のコンパイラはインライン展開でメモリをドカ食いするけどその代わり速い
109 :
デフォルトの名無しさん
2014/10/27(月) 22:41:23.29 ID:Y3X66mFh
>>97 embarcaderoのホームページに記載されてるけどHotfixが出てる
Starter用のもある
95が言ってるパッチは既に出ている
>>95 >>97この人たちは何が言いたいんだろう?
110 :
デフォルトの名無しさん
2014/10/27(月) 23:29:35.41 ID:NojzEKgP
>>109 そのページどこよ
XE4以前のバージョンの対応が欲しいんだけど
メールでの告知も9/25にXE6についての1通来たきりなんだけど
新バージョン買えって言い分は分かるけど
いくらなんでもバージョンアップサイクル早くしすぎだろ
111 :
43
2014/10/28(火) 00:39:33.92 ID:Ci5+5iZ6
上の方で音声の再生のことで聞いた者です
112 :
43
2014/10/28(火) 00:50:29.53 ID:Ci5+5iZ6
流れちゃった…
再生ボタン@とFileListBoxに出ているファイルリストを1つずらすボタン(次の曲)A
のソフトを作っていていますが、notfyイベントが起きたときにAを押しますが
ボタン@でwavを流しているときに、Aボタンをおしてカーソルを移動した後
@の先頭から処理をさせるにはどうしたら良いんでしょうか?
分かりにくい文で済みません
113 :
デフォルトの名無しさん
2014/10/28(火) 01:17:46.12 ID:1GDpWJ1S
>>112 ホント分かりにくい
「@の先頭から」ってどういう意味?
@って再生ボタンじゃなかったっけ?
114 :
デフォルトの名無しさん
2014/10/28(火) 02:04:58.92 ID:fYcK8u5P
>>110 >>109じゃないからそのページについては知らないが、
別にTBitmap等のクラスを必ず使わないといけないわけじゃないし、
TSpeedButtonみたいにTBitmapがプロパティにあって使わざるを得ない場合も
TBitmapで直接読まずにWIC等を経由すればいいだけだからパッチが無くても回避方法はいくらでもある
115 :
43
2014/10/28(火) 10:07:45.11 ID:Ci5+5iZ6
>>113 済みません
省略しすぎでした。
まずはwavがまともに扱えられねばと言うことでやってます。
TMediaPlayerには再生に必要な手続きをとっています。
playボタンを押すとnotfyがfalseにセットします。
曲の再生終了でnotfy=TrueになりOnNotfyイベントで
FileListBoxを1つ移動させます(次曲ボタン処理)。
この時に次曲ボタンを押してPlayボタンのprocedureの頭からまた
再生するにはどうしたら良いのでしょうか?
BASICで言う所のgosub,return処理みたいなことを行いたいのです。
ソースを見ていただいた方が早いでしょうか?
よろしくお願いいたします。
皆さんは、delphiの知識というのは何から学ばれているのでしょうか?
116 :
デフォルトの名無しさん
2014/10/28(火) 10:41:30.72 ID:fYcK8u5P
お前さんはまずコミュニケーションの勉強から始めようか…
>>113は省略されて分からないとは言ってない。文章の意味そのものが分からないと言ってる
そして
>>115でも文章が破綻してる
お前さんが何をしたくて今どうしてるのかなんて誰にも分からないんだから、
もう少し他人に理解できるような文章を書いてくれ
117 :
デフォルトの名無しさん
2014/10/28(火) 14:33:54.00 ID:fy1+ZSke
関数Bから関数Aの処理を呼びたいって話なら簡単にできるけど?
まさかそんな単純なことでつまづいてんのか
118 :
デフォルトの名無しさん
2014/10/28(火) 16:29:18.62 ID:jchrdehB
なにがわからないのかわからない
119 :
デフォルトの名無しさん
2014/10/28(火) 17:26:48.45 ID:Vvkv7qAB
まさかbutton.onclickイベントかどっかで再生終わるまで
while true do begin
application.processmessages;
if 再生終了判定 then break;
end;
とかやってたりして。
120 :
デフォルトの名無しさん
2014/10/28(火) 17:27:33.67 ID:dHuJ1Kxm
ですなぁ。
>>112とか
>>115を自分で読んで、(前提なしの他人が読んでも)きちんと理解できる質問なのかを
まずは考え直してほしい。
121 :
デフォルトの名無しさん
2014/10/28(火) 19:40:18.36 ID:Ci5+5iZ6
すいません
本人がどう説明していいか分からなくて…
>>117のような感じで
Button1の処理の最中にButton2を呼び出して
Button1の処理を最初からやる感じなんですが。
122 :
デフォルトの名無しさん
2014/10/28(火) 20:18:23.07 ID:EpB8Qmcz
どう説明したらいいかわからない質問にどう答えたらいいの?ってこった。とにかく細切れ、省略、いいわけを
全てやめて、最初からきちんと質問をまとめ直したほうがいい。
>>121みたいな書き方は非常に答えにくい。
『...な感じで...感じなんですが』、だったらそういうコードを書けば?と思ってしまう。
123 :
デフォルトの名無しさん
2014/10/28(火) 20:26:10.73 ID:Vvkv7qAB
124 :
デフォルトの名無しさん
2014/10/28(火) 20:45:49.44 ID:Ci5+5iZ6
procedure TForm1.PlaybtnClick(Sender: TObject);
begin@
MediaPlayer1.filename:=filelistbox1.FileName;
MediaPlayer1.Notify := false;
MediaPlayer1.open;
MediaPlayer1.Rewind;
MediaPlayer1.Play;
MediaPlayer1.Notify := True;
//ここでNextBtnClickの処理をさせたい
//ここでbegin@に戻りたい
end;
procedure TForm1.NextBtnClick(Sender: TObject);
begin
if FileListBox1.ItemIndex=FileListBox1.Items.Count-1 then
FileListBox1.ItemIndex:=0 else FileListBox1.ItemIndex:=FileListBox1.ItemIndex+1;
end;
こんな感じです。イロハのイだと思いますが、
調べても分からず困っています。
125 :
デフォルトの名無しさん
2014/10/28(火) 20:56:03.42 ID:EH5iuY52
>>121 こんなことしたいのかねぇ?
procedure TMyForm.PlayButtonClick(s:TObject);
begin
// 再生を開始
end;
TMyForm.NextButtonClick(s:TObject);
begin
// 停止
// 次曲に進める
// 再生を開始
end;
126 :
デフォルトの名無しさん
2014/10/29(水) 00:04:44.37 ID:lgCi6cJO
こんな感じ?
procedure TForm1.NextButtonClick(Sender: TObject);
begin
if FileListBox1.Items.Count > 1 then begin
if FileListBox1.ItemIndex = FileListBox1.Items.Count - 1 then
FileListBox1.ItemIndex := 0 else FileListBox1.ItemIndex := FileListBox1.ItemIndex + 1;
PlayFile(FileListBox1.FileName);
end; end;
procedure TForm1.PlayButtonClick(Sender: TObject);
begin
if FileListBox1.FileName <> '' then PlayFile(FileListBox1.FileName);
end;
procedure TForm1.PlayFile(Filename: string);
begin
if FileExists(Filename) then begin
MediaPlayer1.FileName := Filename;
MediaPlayer1.Wait := true;
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
end;
procedure TForm1.StopButtonClick(Sender: TObject);
begin
MediaPlayer1.Stop;
end;
127 :
デフォルトの名無しさん
2014/10/29(水) 00:38:28.20 ID:+YO6JhW2
なんか前向きに
128 :
デフォルトの名無しさん
2014/10/29(水) 04:52:55.09 ID:W2zMeLsx
PlaybtnClick 内でNextBtnClick(Sender); って直接呼べる クリックイベントを起こさなくても
あと、BASICでいうgotoは、Delphiでもできる
var
label: LABEL1;
begin
LABEL1:
〜何かの処理〜
//関数の先頭に戻る
goto LABEL1;
ただし永久ループになってはいけないので注意が必要
129 :
デフォルトの名無しさん
2014/10/29(水) 11:35:25.52 ID:i2b2zXDr
こういうレベルの人にgoto教えるとかやめて…
130 :
デフォルトの名無しさん
2014/10/29(水) 12:54:04.30 ID:dVsMhWzu
131 :
デフォルトの名無しさん
2014/10/30(木) 03:41:42.35 ID:dOAr/3qr
>>126 ソフトのソースをいただけませんか?
色々勉強させていただきたいのです。
>>128 NextBtnClick(Sender);
の形で他のブロックに処理命令が出せるのを初めて知りました。
利用させていただきます。
レベルの低い質問で申し訳ありません
132 :
デフォルトの名無しさん
2014/10/30(木) 04:39:11.87 ID:jmlvAasm
>>131 ソースいただけませんか?ってソース丸々あるのに何を言ってるんだね君は。
133 :
デフォルトの名無しさん
2014/10/30(木) 07:06:41.30 ID:dOAr/3qr
>>132 ミュージックフィルターというのが使ったことが無いのと
全体的に指令を出しているのがどのコンポーネントなのかと
手元で動かしてデバッガーを使いながら勉強させていただきたいと思いました。
134 :
デフォルトの名無しさん
2014/10/30(木) 07:48:41.66 ID:dOAr/3qr
PlayFileでエラーが出ていまして、どういう定義を行っているのかと
確認したいと思っています。
135 :
デフォルトの名無しさん
2014/10/30(木) 08:56:07.73 ID:xiTB3i02
>>131 >>126だけど、ソースって言っても、ここに書いたものがすべてだよ
ただ、一曲の再生終了後に次の曲に移る部分だけは追加実装してみた
さらにTrackBarを追加しようと思ったけど何かヘン
TMediaPlayerの曲のLengthの値が異常に大きい
たぶんVBRなmp3だとそうなるのかも
検索すると、この問題を解決するにはmp3ファイルから直接
何らかの方法で曲の長さを取得する必要があるとか
気が向けば夜にでも追加部分を…
136 :
デフォルトの名無しさん
2014/10/30(木) 09:46:29.40 ID:BS91IZg0
>>134 エラーが出たならまずエラーの内容を書くのが当然でしょ…
誰がそちらのPCで出たエラーの内容を知っていてそれに答えられると思ってる?
というかメソッドのことをブロックと呼んでいたり、
今までの言動を見ても基礎的な知識が圧倒的に足りなさすぎるから、
レベルの低い質問を詫びるくらいなら最低限の知識は身につけて来なよ
137 :
デフォルトの名無しさん
2014/10/30(木) 13:29:37.54 ID:dOAr/3qr
138 :
デフォルトの名無しさん
2014/10/30(木) 13:40:19.32 ID:jmlvAasm
>>137 えー・・・ TForm1はPlayFileという名前のメンバを含んでいませんって
IDEさんがちゃんと教えてくれてるのになんでメンバを含ませようとしないの?
139 :
デフォルトの名無しさん
2014/10/30(木) 16:11:31.98 ID:dOAr/3qr
140 :
デフォルトの名無しさん
2014/10/30(木) 20:20:58.58 ID:xiTB3i02
>>139 朝言った追加と修正だよ
1曲終わったら次の曲に進むやつ
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if MediaPlayer1.Position = MediaPlayer1.Length then begin
NextButtonClick(nil);
end;
end;
procedure TForm1.PlayFile(Filename: string);
begin
if FileExists(Filename) then begin
MediaPlayer1.Close;
MediaPlayer1.FileName := Filename;
MediaPlayer1.Open;
MediaPlayer1.Play;
MediaPlayer1.Notify := true;
end;
end;
141 :
デフォルトの名無しさん
2014/10/31(金) 17:03:15.10 ID:YOYMICa1
>>140 改良までしていただきありがとうございます。
頂いたソースはどれも読みやすく勉強させていただきます。
今まで使い方が分からなかった手続きの処理など勉強になりました。
142 :
デフォルトの名無しさん
2014/11/02(日) 00:37:10.00 ID:Zees9Msj
>>137 ちょっと今気づいたけどDelphiのプロジェクトファイルを公開するとき
***.dpr、*.dfm、*.pasだけにしたほうがいいよ
他のプロジェクトファイルには意図せず個人情報が含まれてたりするから
(Windowsのユーザ名が個人名だったりするとね)
143 :
デフォルトの名無しさん
2014/11/02(日) 13:38:39.88 ID:2pOEVrbu
Delphi7のリーク修正
destructor TCustomForm.Destroy;
begin
if not (csDestroying in ComponentState) then GlobalNameSpace.BeginWrite;
try
if OldCreateOrder then DoDestroy;
MergeMenu(False);
if HandleAllocated then DestroyWindowHandle;
Screen.RemoveForm(Self);
FCanvas.Free;
FIcon.Free;
FreeAndNil(FActionLists);
if FClientInstance<> nil then//Add
Classes.FreeObjectInstance(FClientInstance);//Add
inherited Destroy;
finally
GlobalNameSpace.EndWrite;
end;
end;
144 :
デフォルトの名無しさん
2014/11/06(木) 19:28:03.31 ID:zgQWk53P
>>142 ありがとうございます。
ネットとかで.dprojファイルとかが無いのは、
プライバシーのためなんですね。
以後気をつけます。
145 :
デフォルトの名無しさん
2014/11/27(木) 00:37:38.26 ID:LnDUsV+c
Delphiで新規ユニットや新規フォームを作ったときの
デフォルトのusesを変更することって出来ますか?
generics.collections, types, math等を追加したいのですが
146 :
デフォルトの名無しさん
2014/11/27(木) 09:58:50.01 ID:QFsdnT0Z
どっかのIDE関係のbplだかjaだかに埋め込まれてるので、これを書き換えれば…ただし最近の
バージョンではbinの下に署名のない、あるいは無効なファイルがあると起動しない(アンチクラック)ので、
まぁ無理だと思ったほうがいい。リポジトリを使うしかないかな?
147 :
デフォルトの名無しさん
2014/11/30(日) 18:30:14.57 ID:hRb/WzXc
今無料で使えるのってトライアル版の30日試用しかありませんか?
ぐぐると出てくる6.0Personalの公開ってなくなったんですよね?
148 :
デフォルトの名無しさん
2014/12/01(月) 00:00:49.66 ID:O2cXVQEj
どっちも『はい』
あとはAppmethod(30日以降はC++Builder/Androidのみ)
149 :
デフォルトの名無しさん
2014/12/01(月) 07:57:49.38 ID:Bp9FhCWB
6.0Personal はCDさえあれば、今でもインストールして使用可能
150 :
デフォルトの名無しさん
2014/12/01(月) 18:58:46.70 ID:YkVzx9uN
無料にこだわる人はJava Eclipseにすればいいんじゃないの CだってVC ExpressとかBCCとかあるし
古いDELPHIは結局あちこち手を入れないと使えないので初心者向きじゃない
151 :
デフォルトの名無しさん
2014/12/02(火) 01:26:03.97 ID:YDJa1YVI
Delphi6の一番良いところは.NETを使わなくてすむところ
152 :
デフォルトの名無しさん
2014/12/02(火) 07:38:00.83 ID:mjJQN5Se
Lazarusでいいっしょ
153 :
デフォルトの名無しさん
2014/12/15(月) 23:13:59.90 ID:bNQzpkjQ
GExpertsの
implementation 以降の
{$IFDEF MSWINDOWS}
{$ENDIF}
{$IFDEF MSWINDOWS}
{$ENDIF}
がずれるのを修正
procedure TCodeFormatterFormatter.doExecute(_Tokens: TPascalTokenList);
rtCompEndif: begin
// pop and free the saved stack
if not FStackStack.IsEmpty then
begin//Add
FStackStack.Pop.Free;
if not FIsInInterfacePart then//追加
FLastPopResType:=FStack.Pop;//追加
end;//追加
end;
154 :
デフォルトの名無しさん
2014/12/27(土) 11:27:34.08 ID:pIbWeYNU
Delphiで「\u3042」であれば「あ」という文字に変換するようなコンポーネントなどありますか?
あれば教えて欲しいです。
155 :
デフォルトの名無しさん
2014/12/28(日) 08:33:49.17 ID:XpK6dXcL
んなもんぐらい作れよ。プログラミングが面倒ならプログラマなんてやめろ
156 :
デフォルトの名無しさん
2014/12/28(日) 08:50:07.05 ID:RZF+yyv+
>>154 コンポーネントっていうより、下のような関数じゃだめなの?
function UniCodeToStr(Code: string): string;
begin
if (Length(Code) = 6) and (Copy(Code, 1, 2) = '\u') then
result := Char(StrToInt('$' + Copy(Code, 3, 4)))
else
result := '';
end;
ShowMessage(UniCodeToStr('\u3042'));
それとも質問の意味を誤解してる?
157 :
デフォルトの名無しさん
2014/12/28(日) 14:04:33.80 ID:hVZ1HVRP
>>156 まさしくその通りです。
関数でも良かったので参考にさせていただきます。
素早い回答ありがとうございます。
158 :
デフォルトの名無しさん
2014/12/28(日) 14:47:55.95 ID:yxgWSmbn
参考にさせていただきます=ソース丸パクリさせていただきます
159 :
デフォルトの名無しさん
2014/12/28(日) 18:27:23.31 ID:Uhyg6v+A
プログラマ向いてない
160 :
デフォルトの名無しさん
2014/12/28(日) 18:30:02.82 ID:4xuT+Oww
宿題終わったんだろw
161 :
デフォルトの名無しさん
2014/12/29(月) 06:40:02.28 ID:ruOeSokU
おまいら
このスレのタイトルすら読めない阿呆なのか
162 :
デフォルトの名無しさん
2014/12/29(月) 10:10:55.01 ID:513DLKk2
知り合いに巻き込まれ、はじめてRAD Studioでプログラムを書くことになりました。
httpsなどでサーバに認証付きで接続してデータをやりとりするのですが、
認証のためのユーザ名やパスワードをどのようにプログラムに埋め込もうか悩んでいます?
そのまま埋め込んでビルドすると、stringsとかでさっくりユーザ名とパスワードが見えてしまってなんだかまずい感じです。
これらを暗号化してコードの中に…とは思うのですが、標準的(?)なやり方が分からず,我流でやっちゃうのも怖いなーと思っています。
どなたか一般的な方法など教えていただけないでしょうか。
163 :
デフォルトの名無しさん
2014/12/29(月) 10:46:57.92 ID:AfYg9JPv
認証用のユーザ名、パスワードをプログラムに埋め込むのはいかがなもんか、って気もするけど、それはともかく、
OSレベルでそういうのは用意されてんじゃね?WindowsならCrypt APIとか。ちなみにぼくのかんがえたさいきょうの
あんごうかを実装、は、ダメ。絶対。
164 :
デフォルトの名無しさん
2014/12/29(月) 10:56:17.96 ID:ejX6K8DG
>>162 ユーザー名とパスワードが固定なのか、使うユーザー毎に違うのかでも変わってくるけど、MD5とかのHash値比較でパスワードそのものはやり取りしない実装が多いんじゃないかなー。
165 :
デフォルトの名無しさん
2014/12/29(月) 12:13:04.51 ID:dqp7xwI8
だな。OSレベルで用意されてそうだけど。winなら資格情報なんたらってのなかったっけ?
166 :
デフォルトの名無しさん
2014/12/29(月) 13:01:47.97 ID:yXbF+Tmc
Encrypt.dllとか言うのを使うのはどうだろう?
167 :
162
2014/12/29(月) 13:01:53.82 ID:513DLKk2
>>163 使用するユーザごとのユーザ名とパスワードもあるのですが、
こちらは、saltを付けてハッシュ化したものをDBに突っ込んでいて、
https接続した後のやりとりで登録したり認証したりするようにしていて、
https接続自体は全員で同じユーザ名、パスワードを使おうと思っています。
(というか、恥ずかしながら今のところそういう風にしか考えられていません。)
で、プラットホームなのですが、Windows, Mac, andoroidを対象としたいと思っています。
これらプラットホームに依存しない方法で暗号化してやれればと思っているのですが、
その鍵をそのままコードに埋めてしまっては結局意味が無いのかなーと思っています。
>>164 おっしゃってることはhttps接続の上でユーザごとでやっているので、
いっそ、httpsの接続はパスワードを無しにして…とも思ってきましたが、
httpsを生で叩かれ放題というのもなんだか怖い気がしています。
ユーザのパスワードも「毎回入力したくない」などと言われると、
何かしら安全な形で保存しておかなければいけなさそうですし、
双方向な(ハッシュでない)暗号化と鍵の管理は考えなきゃいけないんだろうなとは思っています。
>>165 まずはdelphiで使いやすそうな双方向な(ハッシュでない)暗号化方式を探してみて、
その鍵を実行ファイルの何か(ハッシュ?)から生成するとかな方向で考えてみようと思います。
ダラダラと同じようなことばかり書いてしまい恐縮です。
引き続きご助言などいただければ幸いです。
168 :
デフォルトの名無しさん
2014/12/29(月) 14:08:31.71 ID:ejX6K8DG
>>167 IDとパスワードをサーバーに送る
サーバーにIDとパスワードを保存する
ランダムなキーファイルをクライアントに送ってキーをサーバーに保存する
クライアントはキーを暗号化して保存する
キーをキーをサーバーとクライアントでハッシュ化して付き合わせる
ユーザー名とパスワードでキーを再発行する
ではいかんのか?
169 :
デフォルトの名無しさん
2014/12/29(月) 16:12:54.73 ID:xzVgQVgc
そういう仕事を請け負ったってことでしょ なに質問スレで他人に頼ってんの 自力解決しろ
170 :
デフォルトの名無しさん
2014/12/29(月) 16:13:03.88 ID:JxUHWkxq
>>167 すみません、何か分かるような分からないような感じで、
実は理解できていません。
最初のIDとパスワードを送ってサーバに保存するところで、
他のアプリ(もしかするとブラウザからでも)ガンガン保存させられ放題な気がするのですが、
私の理解不足でしょうか?
171 :
デフォルトの名無しさん
2014/12/29(月) 16:13:49.80 ID:JxUHWkxq
仕事じゃないですー。
仕事でdelphi使ってないですー。
172 :
デフォルトの名無しさん
2014/12/29(月) 17:48:17.47 ID:dqp7xwI8
>>使用するユーザごとのユーザ名とパスワードもあるのですが、
>>こちらは、saltを付けてハッシュ化したものをDBに突っ込んでいて、
>>https接続した後のやりとりで登録したり認証したりするようにしていて、
https接続の後にユーザーごとに認証するならこれだけでいいだろ。
>>いっそ、httpsの接続はパスワードを無しにして…とも思ってきましたが、
>>httpsを生で叩かれ放題というのもなんだか怖い気がしています。
防ぎようないから。Twitterだって、公開してるAPIは叩かれる。
もちろん、https接続の後にユーザーごとに認証を通ってない
不正なアクセスは4xxの適切エラーのステータスコード返すようにして。
173 :
162
2014/12/29(月) 19:33:55.95 ID:60SvMH/8
>>172 ありがとうございます。
やっぱり何重にも難しく考えすぎていたんですね。
サーバ側のユーザ認証だけで守るように全体の設計を考えなおしてみます。
(恥ずかしながら、現状は設計がメタメタでこれだけでは守れない部分があるのです。)
とはいえ、いずれユーザのパスワードもクライアント側で安全に保存したりしたいので、
何かしらの方法で暗号化というか、そういうことをしてローカルに保存しなきゃいけなそうなのですが、
そういうのってどうするのが一般的なのでしょう?…って、これはもうdelphiの質問じゃないですね。
自分でちゃんとお勉強してみます。
>>169 171の書き込みも私自身なのですが、あまりにも説明がなさすぎて失礼かなとも思い、改めて状況だけ説明しておきます。
以下、経緯です。長いので興味のない方は読み飛ばしてください。
友人が趣味でアプリを作っていて、これまではそのアプリを動かした結果…
といいますかスコア的なものをローカルでしか保存していなかったのですが、
サーバ上に保存してランキングなど見られるようにしたいと言われまして、
「じゃ、私がプライベートで動かしているサーバを使っていいよ」と提案したのですが、
httpsでの通信方法が分からないと言われたので、私自身は不慣れなのですが、
友人が使っているDelphiでサンプルのプログラムを作って渡したんです。
そのサンプルが、https接続のためのユーザ名やパスワードをそのまま埋め込んだもので、
友人がそのサンプルをそのまま使ってしまいそうなので不安になり、
何とかしたいと考えてここで相談させていただきました。
174 :
デフォルトの名無しさん
2014/12/29(月) 20:54:21.28 ID:SG/XU+zj
175 :
デフォルトの名無しさん
2014/12/29(月) 21:23:50.87 ID:dqp7xwI8
>>とはいえ、いずれユーザのパスワードもクライアント側で安全に保存したりしたいので、
>>何かしらの方法で暗号化というか、そういうことをしてローカルに保存しなきゃいけなそうなのですが、
これも、OS毎に用意されてる方法で格納しとけばいいでしょ。Androidなら、アプリごとのプライベートな領域が
あるからそこに格納しとけば、暗号化しなくても、ルートとってない限り他の悪意あるアプリからは読めないし。
Windowsの場合は・・
176 :
デフォルトの名無しさん
2014/12/30(火) 08:38:36.13 ID:2eDh0lhO
タブを盗んだ奴に解析されて終わりじゃん
177 :
43
2014/12/30(火) 09:55:15.90 ID:Cvbz6uT6
おはようございます。
上の方で恥ずかしい質問をしていた者です。
やっとまともに動くソフトができました。
お時間がありましたらご評価頂けないでしょうか?
http://www1.axfc.net/u/3382478.rar DLkey:delphixe5
ご教授頂いた前スレ503さん126さんありがとうございました。
MCIを使おうとしましたが、TMediaPlayerで十分でした。
体験版は1時間過ぎると終了してしまうんですね。
プログラミングは40過ぎてから始めたので
いろんな意味でキツかったです。
178 :
デフォルトの名無しさん
2014/12/30(火) 11:16:21.30 ID:TONqKIA4
>>177 >>126を書いた者だけど、自分は50過ぎてプログラミングを趣味で始めて
今はもう60歳だよ
179 :
デフォルトの名無しさん
2014/12/30(火) 16:33:29.28 ID:4fPScOIH
>>177 興味があったのでダウンロードさせていただきました。
ソースは見てないので、使ってみて気付いた点をいくつか挙げます。
ちなみに使用環境はWin7 32bit環境です。
・「|<」 のボタンが押しても効かないような気がします。
「>|」ボタンはちゃんと動作しました。
・mp3ファイル演奏中に対応していないファイルを選択
→「MCIの初期化で・・・」のメッセージボックスがひたすら立ち上がります。
致命的です。
・画面右上の最大化ボタンを押したときに他のコントロールが拡大しない。
最大化ボタン無効にすべきだと思います。
とりあえずこんな所です。頑張ってください!
180 :
43
2014/12/30(火) 18:20:32.11 ID:Cvbz6uT6
>>178 更に先輩が…。
>>178を見たときに
>>177が失礼な物言いだったと反省しています。
MediaPlayerの使い方を教えて頂いたのに、
MCIを使おうとしたのは、現在経過時間を取得するためでしたが
>>126をみてMediaPlayer1.Lengthを見てMediaPlayer1.Positionを
ヘルプで発見してMCIを使う必要がなくなりました。
>>126のソースが非常にわかりやすかったため理解が進みました。
>>179 Win32環境下でメッセージボックスが出るエラーは先ほど私も確認しました。
OSそのものが停止してしまう事態が起きて他のソフトも巻き込んでしまっていたら
申し訳ありません。[|<]と最大化の問題は修正しました。
MCIエラーは拡張子フィルターを掛けて例外処理を施します。
前スレ50さんが仰っていたソース見た/見ていないと言っていたの真意と
フィルター掛けた/掛けていないことに確認されていたことに
今更ながら気づきました。
直接関係ない別の内容でも今でもあの時はこのことを指していたのかと思うことがあります。
完全に修正をした後に再度ご評価頂ければと思います。
181 :
デフォルトの名無しさん
2014/12/30(火) 18:26:23.81 ID:0ftKZTxB
>>177 俺も何度かレスしたけど
Delphi始めたのは三十後半だった
182 :
43
2014/12/30(火) 19:27:03.84 ID:Cvbz6uT6
サバ読んでいますね活きの良いのが。
S48なのでそれなりですが。
Delphi4だか6でやたら分厚い何かをボーランドから買った記憶はありますが
さすがにスレチになてきたので
183 :
43
2014/12/30(火) 19:40:29.64 ID:Cvbz6uT6
自分でスレチと言いましたが補足をすると、
それ以前からコンパイラは買っていましたが、
本が1冊10000円とかする時代だったので
手が出ませんでしたが、最近やっと買える値段になったので。
本は著作権などや資金的にクリアになったら
スキャン業者に依頼してもいいかもです。
国会図書館の方がいい気もしますが。
184 :
デフォルトの名無しさん
2014/12/30(火) 19:50:52.18 ID:TONqKIA4
>>177 [|<]ボタンに対応するイベントの内容がおかしいね
こうすればどうでしょうか?
procedure TForm1.RevBtnClick(Sender: TObject);
begin
if FileListBox1.Items.Count > 1 then begin
if FileListBox1.ItemIndex > 0 then begin
FileListBox1.ItemIndex := FileListBox1.ItemIndex - 1;
PlayFile(FileListBox1.FileName);
end;
end;
end;
185 :
43
2014/12/31(水) 08:32:00.30 ID:VKUyTWZx
>>184 おはようございます。
「I<}ボタンのイベントハンドラな内のメソッド(?)が間違えていました。
FileListBox1.Items.Count < 1
になっていたためです。
>>184さんのソースを解釈していたため遅くなりました。
ぱっと見全て治ってそうなものはできましたが、MCIエラーの
対処が完全ではないため後ほどロダにあげますので、
再度ご評価頂けないでしょうか。
よろしくお願いいたします。
MediaPlayerを使っていた副産物でmp4がサポートできているのを
確認しました。
186 :
43
2014/12/31(水) 10:56:10.21 ID:VKUyTWZx
187 :
デフォルトの名無しさん
2014/12/31(水) 13:52:41.68 ID:86KoP6xv
LV := Word((DWORD($FFFF * Pos)) div 100);
RV := Word((DWORD($FFFF * Pos)) div 100);
188 :
181
2014/12/31(水) 18:01:47.73 ID:N43Nkg2j
>>182 さば読んでるって俺のことかな?俺は三十八年生まれだよ
Delphi 1 から買って少しだけ(俺自身が)まともに使えるようになってきたのは3.1の頃
職業も普通のサービス業でDelphiが初めてのプログラミングだったから
本もいっぱい買ったし毎日Niftyの書き込みを理解できないまま読みまくってフリーウェア作家にいきなり質問メール出したり
ネットが普通に使えるようになってからはググりまくった
ほとんど夜勤だったので睡眠時間を削って勉強した
しまいにはメルマガを書くようになったよ自分の勉強も兼ねて
途切れ途切れで結局十年以上続いたよ
ココまで書くと特定されるかも知れないけど
189 :
デフォルトの名無しさん
2014/12/31(水) 18:10:21.13 ID:NnGydb4r
190 :
デフォルトの名無しさん
2014/12/31(水) 18:29:23.75 ID:N43Nkg2j
それはありがたいw
191 :
デフォルトの名無しさん
2014/12/31(水) 18:30:18.08 ID:j0o4knDn
>>186 ご苦労さんです。
プログラミング的には問題ないと思います。
ただ、アプリとして少々...
1. DirectoryListBox1に初期ディレクトリを設定したほうがいい
繰り返し使うと、起動直後が結構メンドクサイ。レジストリや
Iniファイルを使うのが理想的だけど、そこまでしなくても、
MyMusicフォルダを初期値とするとか(SHGetSpecialFolderPathを利用)
2. ボリュームコントロールが少しぎこちない
以下のサイトを参考にするのもいいかも
http://www.swissdelphicenter.ch/en/showcode.php?id=618 3. PlayFileメソッドの入り口で、最低でも拡張子のチェックをしたほうがいい
4. サウンドファイルの拡張子として *.wma もお忘れなく
192 :
43
2014/12/31(水) 18:45:16.10 ID:VKUyTWZx
>>188 サバを読んでいたのは私でした。
最初にこのスレに書き込んだのはRAD Studio2010を購入した頃でしたが(確か)、
勉強し始めて質問したのは2013年四月頃でしたので、当時は30後半でもアリ
今は40過ぎでもあり…。最近はIEの倍率が150%位で使っていますが。
私はWizard常連だった瑞輝智佳さんという方がPascalへの熱い思いを語ってるのを聞いて。
2000年頃4を購入した記憶が…。
知り合いにプログラミングを進められたときにRAD Studio2010を買って今に至ります。
>>187 waveOutSetVolumeと言うものがあるんですね。さっきまで調べていました。
ボリュームコントロールだけは分からないと決めつけて忌避していたので、
どうしたら良いのかは少々お時間をいただけないでしょうか。
ボリュームコントロールは私の手元ではノイズが乗ったりしています。
なぜなのが分からないのですが。
ディスプレイの調子が悪くて、デスクトップを乗っ取ってネットブックから書いているため
見難いためレスが荒いのをご容赦ください。
193 :
デフォルトの名無しさん
2014/12/31(水) 18:59:23.64 ID:j0o4knDn
ところで、
>>186について、どうでもいい感想...
同梱の実行ファイルって、こんな小さいなアプリなのに
11MBもあるけど、なんで?
自分の環境(XE)だと、普通にコンパイルして1MB程度だけど
XE5でコンパイルしてるみたいだけど、XE5の問題?
それとも作者がデバッグ情報とか、なんか途方もないものを
実行ファイルに含めてしまってる結果?
194 :
43
2014/12/31(水) 19:24:57.14 ID:VKUyTWZx
>>191 1は仰るとおりマイミュージックが無難だと思います。
元々関連づけの勉強するためでもあったので
後回し気味でした。
2は私の環境由来なのか分からなかったのと、教えて頂いた方法では
wavのボリュームコントロールができなかった気が…、
ただ単にあるべき場所似なかっただけかもしれないので
そちらについては追追試します。
1.2に時間がかかるかもしれません。
たとえば、今回だとStopBtnのProcedure〜bigin〜end;の間を
イベントハンドラと言って、MediaPlayer1.Stop;をメソッドで良いのでしょうか?
191を見ていて大きな間違えをしている気がしました。
195 :
デフォルトの名無しさん
2014/12/31(水) 20:54:06.19 ID:j0o4knDn
>>194 >wavのボリュームコントロールができなかった気が
確認した。Waveだとダメなんだね。
自分の環境だと、TrackBarを動かすと、イベントが発生しすぎて
再生がギクシャクしてしまう。で、以下のような変更するといい感じ
var
fVolume: DWORD = 0;
function VolumeChange(Pos: Integer):Boolean;
var
Volume:DWORD;
begin
// TrackBar1.Positionが100以上変化した場合のみ音量調整
if Abs(fVolume - Pos) > 100 then begin
Volume := ($FFFF * Pos) div 100;
Volume := MakeLong(Volume, Volume);
waveOutSetVolume(WaveDevID, Volume);
fVolume := Pos;
end;
end;
196 :
デフォルトの名無しさん
2015/01/01(木) 01:04:50.77 ID:tUgicYeE
>>193 なんの確認もせずに憶測で書くけど(186のリンク先すら見ずに)
実行時パッケージを使わずに作っているだけじゃね?
197 :
43
2015/01/01(木) 08:03:05.21 ID:KleUIheK
明けましておめでとうございます。
>>196 そうです。
チェックを入れたら、2MBくらいになりました。
ただ、今まで作ったものだと「エラーがあります」とだけでて
コンパイルできないので、新しく作り直したらMCIのエラーがでて
困っている状況です。
昨日のうちに解決する予定でしたが、ダメでした。
198 :
43
2015/01/01(木) 11:59:53.56 ID:KleUIheK
こんにちは
先ほどファイルをあげました
いつのアーカイブの中に2つのアーカイブが入っています。
1つが今までのものと大差はありません。
ファイルサイズを小さくするために実行時の〜に
チェックを入れ得コンパイルすると「エラーがあります」
とだけ表示されて止まってしまうもの。
もう一つは実行時〜にチェックを入れるために作り直した者です。
こちらはファイル静は小さいですが、MCIのエラーが出ます。
原因はFileListBox.Filename=''でMediaPlayerに渡しているためと
推測していますが。デバッガーで追う前に停止してしまう状態です。
194の後ずっといじっていましたが分かりませんでした。
お手間をおかけしますが、お知恵を頂けないでしょうか?
http://www1.axfc.net/u/3383878?key=delphixe5 です。
特殊フォルダの指定は、勉強に時間がかかるため積み残しています。
今は、紙に出力して赤ボールペンで理解している状態です。
よろしくお願いいたします。
199 :
デフォルトの名無しさん
2015/01/01(木) 12:21:14.52 ID:CiUnxHWA
すいませんここデバッグ依頼スレじゃないんで(^^;
200 :
43
2015/01/01(木) 14:17:40.87 ID:KleUIheK
そんなつもりはなかったのですが、
そう映ってしまったのでしたらスマンです。
201 :
デフォルトの名無しさん
2015/01/01(木) 15:38:20.06 ID:5hCvChV4
別にいいだろ。誰もいないんだし。
202 :
デフォルトの名無しさん
2015/01/01(木) 17:03:50.41 ID:bUNGYu+u
>>199の能力が低くて理解できなかっただけなのでお察し下さい
203 :
デフォルトの名無しさん
2015/01/01(木) 18:07:02.74 ID:tUgicYeE
>>198 実行時パッケージを使わないでコンパイルが通るならそれでいいんじゃね?
>原因はFileListBox.Filename=''でMediaPlayerに渡しているためと
>推測していますが。デバッガーで追う前に停止してしまう状態です。
・エラーが発生していると推測するコードの前後にブレークポイントを仕込む。
「前のブレークポイントは正常に停止、後ろのブレークポイントで止まらずエラーが出る」ならその間のコードに問題があると判断できる。
(エラー箇所を特定する)
・TButtonを適当にくっつけてOnClickイベントにエラーが起きていそうなコードと、それの実行に必要な最小限のコードを書いて実行してみる。
MediaPlayerにどういうデータを渡すとエラーになるのかを調べる
(エラーの理由を調べる)
→理由が分かったならそれを回避するコードを書く
で、Filenameが空でMediaPlayerに渡すとエラーになると思うなら、渡さないコードを書けばいいんじゃねーの?
(あとアップロードされたファイルはrarなんで見ていない。)
204 :
43
2015/01/01(木) 18:08:44.28 ID:KleUIheK
205 :
43
2015/01/01(木) 18:11:10.25 ID:KleUIheK
書き込みが…
rarはダメなんですか。rrつける癖が付いているので何も考えずに圧縮してました。
lzhとかの方が良いでしょうか?
206 :
デフォルトの名無しさん
2015/01/01(木) 18:31:44.35 ID:tUgicYeE
自分が解凍できない(解凍ソフトを入れる気が無い)だけでダメとかじゃないよ
207 :
43
2015/01/01(木) 18:55:51.91 ID:KleUIheK
こんばんは。
>>203 しつこくステップで1行ずつ動かしていましたり
try-except-end構文など試しましたが、渡す前というか、
フォーム作った瞬間にMCIオープンエラーが出ています。
あたらしく作ったものは履歴をとっていて
プロトタイプ(FilelistboxとplayBtnとNext<Stop,ediaPlayer)
のものだとエラーが出ていなかったので
ちゃんと調べると実力が付くかと思っています。
突然出始めたのではっきりとした理由が分かっていません。
208 :
デフォルトの名無しさん
2015/01/01(木) 21:30:27.29 ID:FNdBmO0/
209 :
43
2015/01/02(金) 07:20:31.60 ID:QEqgZHjs
>>208 おはようございます。
すごい…
ボリューコントロールのうちポインタを使う方法の例もありましたが
Cを諦めた理由の1つでもあったのでポインタを使う方法は避けていました。
後は
>>191と
>>187でした。
印刷して読んで他はついていけそうです。
今こそ、ちゃんとオフィシャルコースとかを読むべき時期が来たかと
>43さんのエラーの説明はよく分からない。ごめん。
エンジニアは技術を言葉に翻訳できないと話にならないのですが、
分からないところをが分からなかったので上手く説明できませんでした。
総じて40年生きていた人間の文章ではありませんでした。
大晦日から助けてくださった皆様ありがとうございました。
自分の力で何とかできるよう精進いたします。
210 :
デフォルトの名無しさん
2015/01/02(金) 11:24:12.89 ID:5UO7QPlf
>>209 これからコードを示す時は
>>208みたいにソースの状態でアップするか、
それができないならpastebinやgistみたいなサービス使った方がいいよ
圧縮ファイルになってるだけでブラウザ、アーカイバ、エディタと必要な手順が多くてそれだけで人を選ぶ
ブラウザだけで見れた方がまだ見てくれる人は多いと思う
211 :
43
2015/01/02(金) 14:23:37.93 ID:QEqgZHjs
212 :
43
2015/01/02(金) 14:33:47.90 ID:QEqgZHjs
>>210 >>203で
>>(あとアップロードされたファイルはrarなんで見ていない。)
で、アーカイバの形式のことをさしていたのかと
ボケをかましましたが、上野他の方は皆ソースを書き込んでいたのを思い出し
あとで、それがこのスレのお作法なのだと後で気づきました。
このスレだけでは無いとも思いますが。
プロジェクトファイルが必要なのは自分だけですし。
あのソースでも整形を掛けるとだいぶ見やすくなりましたが、
検討中の残骸を残すよりも、文章で書いてあった方が自分でも分かります。
たくさん勉強させていただきました。
213 :
デフォルトの名無しさん
2015/01/02(金) 15:25:11.92 ID:YfMEguvw
せめて圧縮するならWindowsのエクスプローラも標準で対応してるzipでいいと思うけど。rarとか実質1社しか圧縮ソフトだしてないようなフォーマットは俺も嫌いだわ。
214 :
デフォルトの名無しさん
2015/01/02(金) 18:01:04.64 ID:tVz4tZc7
203だけど・・・
>>212 >アーカイバの形式のことをさしていたのかと
>ボケをかましましたが、
自分を巻き込まないでくれwww
>>213も言っているが、自分は普通にアーカイバの形式のことをさしていたんだよ
XP以上ならzipは標準対応だしlzhならまだ利用者はいると思う
>あとで、それがこのスレのお作法なのだと後で気づきました。
単純にそのほうが早いからというだけ
ファイルをアップロードさせるのは面倒だし、
同時に相手方もダウンロードする(リンクを踏む)必要があって読まれない可能性が高い。
あとは丸々ソースコードアップするのは恥ずかしいwという人もいるwww
だが部分的なコードで説明するよりは全体を見てもらったほうが間違いを発見しやすい
どちらがいいかはケースバイケース
215 :
デフォルトの名無しさん
2015/01/02(金) 18:09:26.64 ID:DxMaNM7u
いろんな人がいますが
43の人がんばってください
216 :
43
2015/01/02(金) 22:44:02.66 ID:QEqgZHjs
>>208 午後まるまる掛けてソースを読んでいました。
学会的な質問できる箇所を探していましたが、
ポインタがらみの初心者的なことしなく…。
ただ、「このイベントの必要なのか」は、
本当はon ClickイベントでDirectoryListBoxで
シングルクリックでFileListBoxの内容が表示されるはずでした。
ポカで忘れてました。
217 :
デフォルトの名無しさん
2015/01/05(月) 23:30:25.59 ID:qGsDlbmF
array [0..1024] of char をstringにキャストするとヌルが切り詰められるのか
218 :
デフォルトの名無しさん
2015/01/06(火) 00:22:37.03 ID:xz5brL/O
>>217 Nullで終わるarray of charをstringにするのは
キャストするか単に代入するだけでいいと思ったけど?
「ヌルが切り詰められる」って、どういうこと?
文字配列の最初のヌル文字までが文字列にコピーされると思う
219 :
デフォルトの名無しさん
2015/01/06(火) 21:57:55.01 ID:1/BDcPAc
実体は、PChar型を引数に受けstringを返す関数(名前忘れた、System.pasにあるやつ)が呼ばれてるんだっけ?
配列があらかじめゼロクリアされてれば、最初のnull byte (\0) までで文字列化だったかな
220 :
デフォルトの名無しさん
2015/01/08(木) 03:25:37.20 ID:tyG0saF2
SetString
221 :
デフォルトの名無しさん
2015/01/08(木) 09:15:20.78 ID:Aj3Xuad4
>>220 SetStringってヌルで終わらない文字配列の文字列へのコピーって感じかな
ヌルで終わる文字配列の場合はStrPasが簡単だけど今は非推奨?
てかStrPasのソース見ると代入してるだけ
function StrPas(const Str: PChar): string; begin Result := Str; end;
要するにヌルで終わる文字配列の文字列化はコンパイラがやるから
代入なり型キャストするだけでいいよって感じ?
そもそもdelphiの文字列の実体ってヌルで終わる文字配列の前に
各種情報を加えただけだしね
222 :
43
2015/01/16(金) 00:52:54.05 ID:2sT6Trbs
また分かりにくい質問でスミマセン。
d:\music\1.wav〜10.wavで、5.wavをダブルクリックしたときに
ListBoxコンポーネントなどで、カレントフォルダ内のファイル
を確認した上で5.wavから再生する方法はどうしたら良いのでしょうか?
サイトを見ていますが、難しいように見えて困っています。
223 :
デフォルトの名無しさん
2015/01/16(金) 01:01:00.45 ID:l+MLYS0e
224 :
デフォルトの名無しさん
2015/01/16(金) 01:16:05.51 ID:2sT6Trbs
>>223 やっぱり書き方が悪かったようです。すいません
コマンドラインの引数としてバイナリに渡したいのです。
??.mp4をエクスプローラー上でダブルクリックすると
wmpが起動して再生が始まりますが、あんな事をしたいと考えています。
225 :
デフォルトの名無しさん
2015/01/16(金) 01:20:06.02 ID:l+MLYS0e
>>224 ShellExecuteじゃいかんの?
226 :
デフォルトの名無しさん
2015/01/16(金) 06:21:50.59 ID:unydFLdh
わかりにくいと思うならわかりやすく書け
227 :
デフォルトの名無しさん
2015/01/16(金) 07:44:06.42 ID:YUNboWcm
ParamStr(0)を解析する
228 :
デフォルトの名無しさん
2015/01/16(金) 09:43:34.42 ID:WlqGo9rc
229 :
◆rW3tmvmDLc
2015/01/16(金) 15:57:09.60 ID:Kw2ffNwT
>>222,224
残念ながらまだわかりません。
細々とした手段の話よりまず先に自分が何をやりたいか(目的)を伝える方が上手くいきやすいと思います。
あなたが作りたいものがWMPもどきのメディアプレイヤー(ぽいもの)で
エクスプローラー上で拡張子が.wavのファイルをダブルクリックすると
そのWMPもどきが起動してそのファイルを再生させたいのか、
それとも自作アプリのウィンドウに表示されている拡張子が.wavのファイル名を
ダブルクリックするとWMPを起動させてそのファイルを再生させたいのか、
あるいはこれらのどちらでも無いのか。
230 :
デフォルトの名無しさん
2015/01/16(金) 16:44:25.11 ID:2BjlVLjD
>>229 これまでの彼の発言を見てると明らかに前者だろうね
で、プログラムで拡張子の関連付けの変更はやめたほうがいい
レジストリを弄るから彼には危険すぎる
OSのツールを使った方がいい
後は
>>227の言ってるようにパラメータをチェックして
再生可能ファイルだったら再生するとか…
231 :
デフォルトの名無しさん
2015/01/17(土) 01:45:05.14 ID:AUdFKm9H
こんばんは
>>226 >>226 分からないところが分からないって感じで…。お手数をおかけします。
キーワードを知らないことが多いです。
>>228 どうもです。最初Mr.XrayさんのところのドキュメントNo.480,485辺りを読んでいて
分からないところだらけで途方に暮れました。今年の正月に怒濤の修正がだいぶ入ったことを経験したのである程度なら読めます。
>>229 遠雷さんという方が作ったmp3再生君が目標です。
ソフト見ながら解説して頂けると良い感じですが、そこまでは図々しいですね。
今後は
こんなソフト作りたい→今ここではまって増すみたいな方が良いですか?
がんばってきます
232 :
デフォルトの名無しさん
2015/01/17(土) 02:59:50.72 ID:4Lb0lwbg
>>231 このテンプ埋めるところからやろうぜ
・何がしたいか(最終目標)
・自分はどうやったのか
・何に躓いているのか
・エラーが出るならエラーの詳細
・必要な動作と違うなら何が違うのか
233 :
デフォルトの名無しさん
2015/01/17(土) 12:29:18.44 ID:21HK+xF0
まだやる気かいな
まずコテつけろ(相手にしたくないと思ってる人もいるはずなので)
手を抜かず説明をしろ(現在置かれている状況と、既にわかっていることと、そこからやりたいこと)
読んだ人が労力をかけずにわかるようにURLとかをちゃんと書け
つまりは自分勝手ではなく、同じことを他人から質問されたときに答えたくないと思うようなことをするなってことだ
234 :
デフォルトの名無しさん
2015/01/17(土) 13:42:00.60 ID:5xjQBKbi
>>231 漠然と分からないじゃ答えられないよ
具体的にコードを示して、ここの意味が分からないとかじゃないと
で、拡張子の関連付けとか、たぶんDelphiの問題ってより
Windowsの領域でしょ
基礎が理解できてなくてプログラミングとか無意味
235 :
43
2015/01/17(土) 13:50:28.45 ID:AUdFKm9H
236 :
デフォルトの名無しさん
2015/01/17(土) 14:08:43.27 ID:04tEzZEv
>>235 理解してもしなくてももう帰ってこなくていいよ
あんたの日記帳じゃないんだからさ
237 :
43
2015/01/17(土) 18:43:02.90 ID:AUdFKm9H
>>232 テンプレの内容を満足できるところまで考えて落とし込みます。
>>233 もう少し頑張らせてください。
読んで頂ける方への労力を考慮していませんでした。
>>234 >>基礎が理解できてなくてプログラミングとか無意味
はい
238 :
デフォルトの名無しさん
2015/01/18(日) 16:46:47.52 ID:emdSicrZ
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
239 :
◆rW3tmvmDLc
2015/01/19(月) 04:27:28.63 ID:5CoFZp7P
>>231 MP3再生君がどういうソフトなのかはサイトの説明で大体分かりました。
自作のMP3再生君もどきを自分で使うだけなら
拡張子.mp3と再生君もどきとの関連づけはプログラムを書かなくても
エクスプローラーで指定するだけでいいように思います。
> こんなソフト作りたい→今ここではまって増すみたいな方が良いですか?
はい、そうです。
自分がやりたいことの解決策だと思っていたことが間違っている場合もありますし
もっと良い解決策がある場合も多いです。
ちなみに伝えたいことを言葉にするのって自分の経験からすると難しいことだと思いますが
何度も何度もやってみていくうちにある程度は鍛えられると思います。
240 :
デフォルトの名無しさん
2015/01/19(月) 12:27:37.81 ID:C/c4zK1+
彼は去年からたびたびここに書いてるけど
表現力の点で進歩はないような…
最初のレスはいつも意味不明で
241 :
43
2015/01/19(月) 16:50:16.37 ID:55Bbi6Ar
コテをつけるようにと言われているので、つけています。
>>239 関連付けのお手本がmp3再生君なのと、具体的な解説ページが
分かったとの少し筒勉強しています。
中学生以来の体験ですが、分からないところが分からなかったため、
スレ住人の方にはご迷惑をおかけしました。
でも、もう帰ってくるなとか言わないでくださいね。かなりショックでした。
>>240 とりあえず、文系ではないよねと言われていますが、
技術を言葉に翻訳できないのはエンジニアとしてどうかと思っています。
今年の年末の進行のおかげで、ソースをある程度の内容であれば
頭の中で追えるようになりました。
242 :
デフォルトの名無しさん
2015/01/19(月) 19:57:05.26 ID:+tMUrZZM
ここに書き込む前に下書きして、次の日それを自分で読んでみるといいよ
時間を置くのは推敲の基本
まとまって無い状態でアウトプットされて、それを読まされる方の身にもなろうね
243 :
デフォルトの名無しさん
2015/01/19(月) 21:51:14.76 ID:c5aUr1nh
読みたくないやつは無視すりゃいいんで、気にすんな。そのためのコテハンだし。
244 :
デフォルトの名無しさん
2015/01/20(火) 00:53:13.19 ID:9eNrvNBv
245 :
43 ◆HdTBZ7DE26
2015/01/23(金) 06:48:34.00 ID:vL4LxJti
>>
246 :
デフォルトの名無しさん
2015/01/25(日) 20:53:55.82 ID:qa0tIS8x
ちょっと教えてください。
浮動小数点の内部表現の問題だと思うんですが、以下の例のように
その精度によってTruncの結果が異なるようです。
たぶん13が内部的に12.9999...となる場合があるのが原因だと思うんですが。
var s: single; d: double; e: extended;
s := 1.2; d := 1.2; e := 1.2;
ShowMessage(Format('1.2: single=%1.1f, double=%1.1f, extended=%1.1f', [Trunc(s*10)/10, Trunc(d*10)/10, Trunc(e*10)/10]));
// 結果1.2: single=1.2, double=1.1, extended=1.2
s := 1.3; d := 1.3; e := 1.3;
ShowMessage(Format('1.3: single=%1.1f, double=%1.1f, extended=%1.1f', [Trunc(s*10)/10, Trunc(d*10)/10, Trunc(e*10)/10]));
// 結果1.3: single=1.2, double=1.3, extended=1.3
s := 1.4; d := 1.4; e := 1.4;
ShowMessage(Format('1.4: single=%1.1f, double=%1.1f, extended=%1.1f', [Trunc(s*10)/10, Trunc(d*10)/10, Trunc(e*10)/10]));
// 結果1.4: single=1.3, double=1.3, extended=1.4
目的は実数を10倍して、小数点以下を「切り捨て」て整数として保存しておき、
必要に応じて10で割って元も実数に戻したいわけです。
どのようにしたらいいでしょうか?
環境はDelphi XEで作る32bitアプリです。extendedだと精度が高いせいか結果が正しいんですが
64bitアプリにすることも考えると、使いたくないと考えています。
よろしくお願いします。
247 :
デフォルトの名無しさん
2015/01/25(日) 22:24:21.51 ID:wrmvKfvK
> 実数を10倍して、小数点以下を「切り捨て」て整数として保存しておき、
もうわかっていると思うけど、このときに誤差が入る。切り捨てを前提とするなら、意図した値になるように
小さい値を足してあげればいい。
248 :
デフォルトの名無しさん
2015/01/25(日) 23:15:12.97 ID:ZEYzfSIs
>>247 なるほど...
小数点のあとに9がどのくらい続くの分からないけど
0.000...1とか足してからTruncすればいいんですね
ありがとうございました。
249 :
デフォルトの名無しさん
2015/01/26(月) 14:50:17.58 ID:Pa0ci83e
そういう場合は浮動小数じゃなくCurrencyとかTBcdを使った方がいいんじゃないの
なんでわざわざ誤差を作りこむようなアホらしい処理が必要なのかわからないけど、
本当は対症療法よりもっと根本的な部分で解決した方がいいと思う
250 :
◆rW3tmvmDLc
2015/01/26(月) 17:57:31.38 ID:m7Kr84jL
>>246 コンピューターでよく使われる浮動小数点形式では
なんと10進数の1/10(0.1)を正確に表現することが出来ません。
つまり1を10で割るだけで(切り捨てなくても)誤差が出てしまうのです。
これらの形式では数値は二進数として格納されていて、
10進数の0.1は二進数では無限小数になってしまうので有効桁数いっぱいで切り捨てられてしまい、
正しい値を表現できないのです。
ゆえに実数を10倍して10で割って元に戻したいならsingle, double, extended型は使ってはいけません。
ではどうすれば良いかというと
>>249さんの通りです。
精度が小数点第4位まででよろしければcurrency型を使って下さい。変数型をこれに変えるだけでOKです。
この数値型は値を10000倍して64ビット整数型として格納しているだけなので
たとえば1は10000として、0.1は1000として格納されるので1を10で割っても誤差が出ないのです。
TBcd型は私は使ったことがありませんがBCDは「二進化十進数」と訳されていて
4ビットごとに10進数の各桁の0〜9の値を格納してあくまで10進数として扱う方法です。
専用の手続きで計算しなければならないようでめんどくさそうではありますね。
あるいは10倍したり10で割るというやり方そのものを見直す必要があるかもしれません。
目的とのことですが私にはどうも手段のようにも見えます(本当に目的だったらごめんなさい)。
251 :
デフォルトの名無しさん
2015/01/26(月) 19:55:12.67 ID:q2qVRi4l
>>249 そうですね。よく考えたらCurrencyを使うべきケースですね。
Currencyが固定小数点変数だということは頭の中にあったんですが
なぜだか今回は思い浮かばなかったです。
Currencyを使う方向で修正しみます。
>>250 分かりやすい解説ありがとうございます。
実は0<=X<10(あくまでも例です)の実数値の大量のデータがあり、
10〜10000倍してByteやWord型としてファイルに保存し、
必要に応じて読み込んで元の実数に戻すってことをやってるところです。
252 :
43 ◆HdTBZ7DE26
2015/01/26(月) 20:51:38.21 ID:rN49mNrC
とりあえずトリップつけました。
>>243 このスレ見るのは結構怖いですよ。結構色々言われてましたし。
いわゆる荒しの方のいくら叩かれてもへこまない精神力というのはすごいなと思います。
253 :
デフォルトの名無しさん
2015/01/26(月) 21:01:53.92 ID:P42EVsRu
で?
Delphiの質問は何かな?
254 :
デフォルトの名無しさん
2015/01/26(月) 21:07:02.80 ID:BTweobmD
まぁあの質問じゃいろいろ書かれんのはしょうがない気がする。ただ書くな、来るなってのは(ここに限らず)
違うと思う。
>>43の書き込みが嫌なら見なきゃいいし、親切に回答してくれる人も何人かはいるんだから。
要するにめげずに質問する
>>43は書くな、来るなとか書くやつよりは遙かにマシってこった。
255 :
43 ◆HdTBZ7DE26
2015/01/26(月) 22:36:01.35 ID:rN49mNrC
>>253-254 連投規制だけじゃなくて花が咲いたとか出ていて書き込めませんでした。
年末にあげたものはMediaPlayer使いましたが、元々はMCIの勉強のために試作していたものでした。
256 :
デフォルトの名無しさん
2015/01/26(月) 22:47:23.41 ID:khqyHCqi
凄い自演を見た気分だぜ・・・
257 :
43 ◆HdTBZ7DE26
2015/01/26(月) 22:51:01.57 ID:rN49mNrC
さくらが咲いているとかでかきこめない
258 :
デフォルトの名無しさん
2015/01/27(火) 01:10:28.12 ID:L148k2+x
ちゃんと書き込めてるじゃん
259 :
デフォルトの名無しさん
2015/01/27(火) 10:25:00.88 ID:qFBg0/NV
ちゃんとした理由を書いた上で批判してる奴も全部荒らし扱いか
質問とは関係ない話でダラダラ伸ばすのが嫌いな奴も多いし、
馴れ合いがしたいならそういうのも気持ち悪いくらい相手してくれるMLに行けばいいのに
260 :
デフォルトの名無しさん
2015/01/27(火) 18:16:47.71 ID:J7FqiF9r
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
261 :
デフォルトの名無しさん
2015/01/27(火) 18:33:13.19 ID:6Jp0TBFU
コテハンとトリップ外して書き込まなくていいから
262 :
デフォルトの名無しさん
2015/01/27(火) 18:50:38.18 ID:BcCdpsTR
周りが全員敵に見えるようなら医者に見てもらったほうがいいぞ?
263 :
デフォルトの名無しさん
2015/01/27(火) 20:41:51.97 ID:iEDPvIyz
>>259のように指摘されるのが分かっているので
指摘されているのを怖いという趣旨の発言でしたが
上手く受け取っていただけない文章で申し訳ない。
荒らしというのは12/31から1/1の書き込んだ私の投稿をさして言っています。
264 :
デフォルトの名無しさん
2015/01/27(火) 20:59:37.56 ID:iEDPvIyz
さくら咲きまくり、どうしていいのか分からない、
世間話的なのはさくらが咲くルールが分からないから
265 :
デフォルトの名無しさん
2015/01/27(火) 21:06:24.59 ID:L148k2+x
もういいだろ
質問がないんだったら書き込むなよ
質問すれば答えがあるかもしれないし、ないかもしれない
ルールについての話は別の場所でやれ
266 :
デフォルトの名無しさん
2015/01/27(火) 21:22:44.74 ID:iEDPvIyz
delphi mciでググると最初に出てくるページの通りにすると
致命的なエラーが出ます。
267 :
デフォルトの名無しさん
2015/01/27(火) 21:24:49.31 ID:iEDPvIyz
自分のコードが悪いのか、お手本なのか切り分けができません。
他のサイトを見ながら修正しても、playでも音が出ません
音量ミキサーにもソフト自体が表示されません。
268 :
デフォルトの名無しさん
2015/01/27(火) 21:41:25.85 ID:iEDPvIyz
サクラとか規制のせいで説明しきれないのですが、良い方法はありますか?
269 :
デフォルトの名無しさん
2015/01/27(火) 21:47:11.98 ID:iEDPvIyz
{ Public 宣言 }
end;
var public
Form1: TForm1;
//implementationの前に以下関数をインポートする必要が有ります。
//mciSendString関数をインポートする
//mmSystemで無くDLL使うとPcha型キャスト不要
fnction mciSendString(lpstrCommand: string; lpSectorsPerCluster : string ; uReturnLength : Integer; hwndCallback : integer): integer;Stdcall;
external 'winmm.dll' Name 'mciSendStringA';
implementation
{$R *.DFM}
mciError := mciSendString('open "' + AFName +'" type MPEGVideo'+ ' alias '+FMCIEriasName, '', 0, 0) ;
mciSendString('window '+FMCIEriasName+' handle ' +
IntToStr(FMCIDsphandle),'',0,0);
など
ヒントなどいただけないでしょうか
270 :
デフォルトの名無しさん
2015/01/27(火) 21:49:38.12 ID:mRBjUfrP
Win32APIなのに引数にString型はねーだろ。PCharまたはconst PCharだ。
271 :
デフォルトの名無しさん
2015/01/27(火) 21:55:22.84 ID:mRBjUfrP
あー検索して最初にひっかかるサイトがダメなやつなのか。uses MMSystemを追加して、
fnction mciSendString...'mciSendStringA';は削除だ。
272 :
たぶんこれ以上の長さはダメ
2015/01/27(火) 21:59:04.24 ID:iEDPvIyz
これmciSendStringの使い方サイトものを丸写ししたものなんです…。
アドレス入れると咲いちゃうので
273 :
デフォルトの名無しさん
2015/01/27(火) 22:12:58.19 ID:mRBjUfrP
そのページが間違ってるってだけ
274 :
デフォルトの名無しさん
2015/01/28(水) 15:48:01.46 ID:OYeWpyUp
PCharとconst PCharは意味も生成されるコードも全然違うから「または」なんてことにはならないんだが
初心者が初心者に教えるとどんどん深みにはまっていくパターンだなこれ
275 :
デフォルトの名無しさん
2015/01/28(水) 15:53:08.04 ID:OYeWpyUp
ついでに書くと(Unicode化以前のDelphiでは)PCharとすべき場所をstringにしても通るということは
stringの構造を知っていれば分かるはず
>>269が通らないのはUnicode化以降のDelphiだったからというだけ
276 :
デフォルトの名無しさん
2015/01/28(水) 16:36:24.06 ID:XcTAyKZY
>>274 > PCharとconst PCharは意味も生成されるコードも全然違う
ちゃんと読め。Win32APIでC文字列を渡すときはchar *かconst char *でインタフェースされる、
という一般論を書いてあるだけだ。
277 :
デフォルトの名無しさん
2015/01/28(水) 18:42:07.55 ID:MinDNjr5
mciSendStringだけが提示されてるのにそれに対する答えじゃなく一般論であると取る方が難しいと思うんですが
それに指摘されてないけどvarやoutと違ってconstは必ず参照渡しになる保証がないから普通はPPCharのような形で使うのが正解
つまり二重の意味で間違ってるわけです
278 :
デフォルトの名無しさん
2015/01/28(水) 18:55:04.70 ID:nN2tq82z
279 :
デフォルトの名無しさん
2015/01/28(水) 20:06:38.32 ID:XcTAyKZY
>>277 > mciSendStringだけが提示されてるのにそれに対する答えじゃなく一般論であると取る方が難しいと思うんですが
そう書いておいて
> それに指摘されてないけどvarやoutと違ってconstは必ず参照渡しになる保証がないから
はおかしくね?関数のパラメータの*PChar*はconst修飾されていてもいなくても必ず文字列の先頭アドレスが
渡される(必ず参照渡し)。
280 :
デフォルトの名無しさん
2015/01/28(水) 21:13:56.52 ID:0Go/6T4a
今日ブックオフで
Delphiオブジェクト指向プログラミング
108円でゲット
たまにブックオフお宝がある
281 :
43 ◆HdTBZ7DE26
2015/01/28(水) 21:50:06.19 ID:y4RdShiz
>>278 今まであの系統のやり方では、まともに動かなかった理由が分かったのは僥倖。
それに、私のことは気にせずに、ガンガン議論をしてください。
でも、コテ酉外して書き込むなとか言わないで優しくしてくださいね。
282 :
デフォルトの名無しさん
2015/01/28(水) 22:46:22.40 ID:bGRWYwfK
283 :
デフォルトの名無しさん
2015/01/28(水) 23:15:11.18 ID:nN2tq82z
>>280 技術評論社のだったら、あれは名著だよな
自分もむかし古本屋で見つけて読んだよ
あれ読んで、自分でもやっとクラスを書けるようになった
Delphi初心者卒業のための必読書だと思う
284 :
デフォルトの名無しさん
2015/01/29(木) 00:56:25.45 ID:Gxt2qupv
>>264 ERROR:さくらが咲いてますよ。っていうのが「宣伝と見なされたURLを書き込もうとした」というやつなら
例えばアドレスを適当に置換してみる(頭の
http://は勿論外して )
ぴーす.2ch.net/てすと/read.cgi/tech/1405783063/
とか
p@e@a@
[email protected]@
[email protected]@e@t/test/read.cgi/tech/1405783063/
「@を抜いてください」とか
要はフィルター逃れのスパムメール方式
さくら云々は実際に規制にあった人間かググった人間にしかわからないので
質問がないんだったら書き込むな、世間話はよそでやれとなる
285 :
43 ◆HdTBZ7DE26
2015/01/29(木) 13:51:15.48 ID:kRCmaYR1
>>282 コテ酉外せって言われた時に一瞬外しただけ
文体見れば特定できるかと
286 :
43 ◆HdTBZ7DE26
2015/01/29(木) 14:00:12.33 ID:kRCmaYR1
>>284 レス サンクス
初めて見るメッセージだったから
連続投稿規制なのかと思ってた
mciについてかいてあるサイトのアドレスを書き込んだときだけ出ることに気付いてからアドレスいれるのを止めました
不快に感じた方スミマセンでした。
287 :
デフォルトの名無しさん
2015/01/29(木) 19:13:20.70 ID:8YMq1JsP
Delphi初心者どころか2ch初心者スレだな
288 :
デフォルトの名無しさん
2015/01/30(金) 08:36:37.46 ID:7mE87Nw8
UInt64型ってDelphi5やDelphi7あたりでも使えますか?
289 :
デフォルトの名無しさん
2015/01/30(金) 08:45:29.62 ID:lIZMzVi7
Int64がD6からでUInt64がD7からだったと思う
290 :
◆rW3tmvmDLc
2015/01/30(金) 12:59:10.42 ID:QETr1HFx
Turbo Delphi を使い始めてかなりたつのに uint64 型があるなんて知りませんでしたナサケナイ
>>264 とある有名レンタルサーバーが2chの攻撃に使われたので
2chではレスの中にそこのURLやそこのレンタルサーバーの名前が含まれると
そのエラーメッセージが出てきて投稿できないようになったようです。
しかも分からないから何度も投稿を試みるとしばらく投稿できなくなるペナルティを食らう。
酷い目に遭いました。
>>280 ほぼ全編コンソールプログラムでめちゃくちゃ地味な本ですがオブジェクト指向とはなんで、
なんのためにあるのか、何の利点があるのかをわかりやすく書いてあると思います。
構造化プログラミングの説明から丁寧に説明しているのは昔のBASICしか知らない世代の読者にも向いていると思います。
291 :
デフォルトの名無しさん
2015/01/31(土) 08:45:32.30 ID:9Sw5y4Z4
Int64をIntegerに変換するのに
i := Integer(i64);
が普通だと思うのですがエンディアンを考慮して変換してくれますか?
それとももっと良い方法ありますか?
292 :
デフォルトの名無しさん
2015/01/31(土) 11:03:20.83 ID:M2LL9XlJ
それで問題ないんじゃね
293 :
デフォルトの名無しさん
2015/02/01(日) 17:47:30.12 ID:uqagmzLG
and でマスクする手もある
294 :
デフォルトの名無しさん
2015/02/02(月) 02:58:18.34 ID:lWT8W9xp
外部のライブラリでもいいんですけどLuaのTableみたいなデータ構造ってないですか
Luaを組み込みたいというのではなく
要素に値やらハッシュやら配列やらテーブルやらを柔軟に突っ込めるような使い勝手のいいもの
295 :
デフォルトの名無しさん
2015/02/02(月) 03:50:13.55 ID:mlH0OzJX
296 :
デフォルトの名無しさん
2015/02/02(月) 07:40:03.50 ID:Oq53VM6i
Variant型を使うとよいよ
>>使い勝手のいいもの
十分探してもなければ自分でつくろう。その辺がスクリプト系とコンパイラ系の違い
297 :
デフォルトの名無しさん
2015/02/02(月) 17:41:43.39 ID:9ILguYJu
TObject の二次元配列でいいじゃん 何でも入る
298 :
43 ◆HdTBZ7DE26
2015/02/02(月) 19:40:17.34 ID:H5/e0XmI
>>290 そういった背景があったんですね。納得しました。
今後はそういったことが無いように気をつけます。
299 :
デフォルトの名無しさん
2015/02/03(火) 04:17:47.01 ID:klOliJ8F
300 :
デフォルトの名無しさん
2015/02/06(金) 11:26:05.13 ID:Ze1GhDpi
D7とFB2.5でIBXを使用してプログラムしてます
何らかの原因でFireBirdサーバーとクライアントアプリが切断されたとき
アプリ側でそれを検出してアプリを終了させたいのですが
DBにアクセスする箇所すべてでエラーハンドリングするしかないのでしょうか
どっか一か所にエラーチェックを書いておけばOKなら楽なんですが
301 :
デフォルトの名無しさん
2015/02/06(金) 11:34:59.85 ID:NEy+FoCf
D2010を使用しています
type
TForm1 = class(TForm)
const
AAAA : TSize = ( cx:0; cy:0 );
BBBB : PSize = @AAAA;
end;
例えばこういう定義をしてコンパイルすると、BBBBの定義の行で、undeclared identifier 'AAAA'といって怒られます。
原因がわからないのですが、色々試行錯誤した結果、
BBBB : PSize = @TForm1.AAAA;
に変更してコンパイルすると問題なく通りました。これはどういった理屈でこうなるんでしょうか?
なぜ、同じクラスの同じセクションなのに、そのままでは定義を見つけてくれないんでしょうか…。
302 :
デフォルトの名無しさん
2015/02/06(金) 19:05:32.65 ID:G3s6IjnD
前方にある定義は見つけないのが原則だよ。もちろん例外はあるけど
このケースはその例外ではないのだろうね。
303 :
デフォルトの名無しさん
2015/02/07(土) 00:00:43.77 ID:qy4YZ6zt
答えがあるわけじゃないけど、これってポインタ型のクラス内定数だよね
こんな場合、コンパイル時にはどんなアドレスが割り当てられるの?
通常のポインタ型変数だと、実行時に絶対アドレスを代入して使うけど
この場合、コンパイル時にはクラスの先頭からの相対アドレス(?)しか
分かってないよね
なんか頓珍漢なこと言ってゴメン
ふと疑問に思っただけ...
304 :
デフォルトの名無しさん
2015/02/07(土) 02:29:57.40 ID:LuwTBjfC
>>300 データベース関連のプログラミングは最近やったことないけど
公開してる自作ソフトじゃ、ほぼすべてのメソッドに例外処理入れてるよ
エラーログファイルに発生場所と内容を記録して、
ユーザに知らせてもらってる
プログラマは、アマチュアでも、このくらいの労力を惜しんじゃ
ダメだと思う
305 :
デフォルトの名無しさん
2015/02/07(土) 03:05:16.61 ID:RBwwmQ3J
>>300 サーバーとクライアントアプリが切断されたときなんらかの例外が発生するなら、
TApplicationEventsコンポーネントのOnExceptionイベントで処理すればいいだけ。
そうすりゃ1か所に書くだけですむ。たしかね・・
306 :
デフォルトの名無しさん
2015/02/09(月) 04:05:58.05 ID:WQVxGiHj
AAAAとBBBBの違いは? AAAAだってTSizeのポインタだよ
BBBBを用意すること自体が無駄 あとコンパイラから見るとAAAAをいつ実体化すべきかが曖昧
実体化する前にBBBBを定義しようとすればエラーになる
@TForm1.AAAAはTForm1が実体化された後って意味になるので通ったんだろう
307 :
◆rW3tmvmDLc
2015/02/09(月) 17:40:27.70 ID:oREJNtKI
>>301のコードを手持ちのTurbo Delphiでためしてみたらたしかにコンパイルエラーなのですが
グローバル定数やローカル定数として宣言した場合はコンパイルできました。
それぞれの結果が意味のあることなのか不具合なのかは分かりません。
308 :
301
2015/02/10(火) 15:48:43.82 ID:Oi+L91VC
皆さんレスありがとうございます。
同一要素が複数存在するような、物凄く大きな配列constがあるのですが、
サイズを減らすために共通なものは同じものを入れるよう、あんな宣言をしています。
>>306さんの言うように @TForm1.AAAA って実体化された後って意味になるんですかこれ?
初耳でした。単なる名前空間的な意味合いのものかと思ってました。不勉強ですね。
309 :
デフォルトの名無しさん
2015/02/10(火) 21:52:00.06 ID:30EZ7SI/
>>308 大半が0で、一部だけ有意の値があるような配列なら、インデックスをキーにしてその値を突っ込んだ、sparse map作ると空間効率を上げれるかもしれない。
定数ではなくなるけど。
マップは、System.Generics.Collections.Dictionaryを使うのが手軽。
時間効率は配列よりは劣るが、Hash関数が十分ばらついていれば、劇的に劣ることは無いはず。
310 :
デフォルトの名無しさん
2015/02/12(木) 18:41:46.02 ID:s9CIAIDL
今気づいたけどTListviewってvirtualモードだと
チェックボックスを表示できない?
何かやり方があるのかなぁ...
311 :
デフォルトの名無しさん
2015/02/13(金) 09:52:18.52 ID:PP9HwiyP
>>310 放射線の所にネタがあったけど、仮想モードではチェックボックスはサポートされない
クリックもチェックの描画も全部自分で面倒見ないといけない
312 :
デフォルトの名無しさん
2015/02/13(金) 13:34:07.77 ID:i4GiGe+E
313 :
43 ◆HdTBZ7DE26
2015/02/13(金) 21:16:46.14 ID:oat0xplW
ずっと色々試行錯誤していましたが、さっぱり解らず質問いたします。
上の方で出ていたmciSendStringはUnicode環境下では正常に動作しないと言う
書き込みがありました。
ならば、UnicodeからShift-JISかなんかにキャストすれば上手くいくのでは?
と思い色々試しましたが、全然動きません。
ただ、再生するだけならば、TMediaPlayerで構わないのですが、
PS3のBDリモコンを使った10ftGUIを実現したメディアプレイヤーを作りたいのと
再生速度を変更したいからです。
たとえば
uses
…,MMSystem;
procedure TForm1.Button1Click(Sender: TObject);
var
mciError: LongInt; //MCIの返り値
MusicName: String; //演奏ファイル名 openの前に名前を入れておきます。
begin
//演奏方法
//open命令でファイルを開いて、play命令で演奏を開始します。
mciError = mciSendString(PChar('open ' + MusicName + ' type sequencer alias midifile'), nil, 0, 0);
mciError = mciSendString(PChar('play midifile'), nil, 0, 0);
end;
海外のフォーラムでは、PansiCharが動とか、DSPackを使えとか書いてありましたが、
XE5でインストールできるのか?とか純粋に使い方が解らず前に進めていません。
ヒントなどありましたら、レスいただけないでしょうか。よろしくお願いいたします。
314 :
デフォルトの名無しさん
2015/02/13(金) 22:03:33.47 ID:Dy8w+V1n
>>313 下のコードで普通に再生されたけど?
ちなみにXE無印
procedure TForm1.Button1Click(Sender: TObject);
begin
if FileExists(Edit1.Text) then begin // Edit1.Textにmp3のファイル名
mciSendString(PChar('open "' + Edit1.Text + '" alias MusicFile'), nil, 0, 0);
mciSendString(PChar('play MusicFile'), nil, 0, 0);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString(PChar('stop MusicFile'), nil, 0, 0);
mciSendString('close MusicFile', 0,0,0);
end;
315 :
43 ◆HdTBZ7DE26
2015/02/13(金) 23:11:30.66 ID:oat0xplW
>>314 ありがとうございます。
あっさりと実現しました。
なぜ今まで上手くいかなかったのかが解りません…
ソフトの作成に戻りたいと思います。
316 :
デフォルトの名無しさん
2015/02/14(土) 00:28:27.72 ID:/eg9V7pC
>>315 それは良かった
ちなみにパスはダブルクォーテーションで囲うのが原則
"c:\music\aaa.wav"
それと、PCharによる型キャストは変数を含む場合のみでOK
「'」で囲ってる文字列定数だけ場合はPCharはなくてもいい
317 :
デフォルトの名無しさん
2015/02/14(土) 10:27:29.39 ID:5lKTUhyG
四月までにアップデートサブスクリプション付きでXE7買えば価格据置で四月頃?のXE8と九月頃?のXE9までは手に入る……かもってことでおk?(皮算用
318 :
43 ◆HdTBZ7DE26
2015/02/15(日) 08:51:17.61 ID:D+4J0HvO
>>316 文字列だけの場合はキャスト不要ですか。ありがとうございます。
Unicode環境下なら、API操作もUnicodeで大丈夫なんじゃないのか?
と思っていましたが、上手くいかないためキャストしなければならないのかもと混乱していました。
解説サイトのパスが長くなったときの対策のためにダブるクオテーションで
くくると書いてあって?だったのですがそのいみがわかいました。
319 :
デフォルトの名無しさん
2015/02/15(日) 13:14:54.22 ID:rl5iOHra
>>318 >パスが長くなったときの対策のために
ある意味あってるけどちょっと違う。
('open ' + Edit1.Text + ' alias MusicFile') ←
>>314さんのダブルクォーテーション無しVer
c:\music\aaa.wav というパスならいいけど c:\Personal music\aaa.wav というパスだったらどうなるか。
('open ' + 'c:\Personal music\aaa.wav' + ' alias MusicFile') → ('open c:\Personal music\aaa.wav alias MusicFile')
ってなるよね。
つまり本来のパス指定がスペースが区切りと見なされるせいで c:\Personal になってしまうので正常に動作しない。
ダブルクォーテーションで括っておくと
('open "' + 'c:\Personal music\aaa.wav' + '" alias MusicFile') → ('open "c:\Personal music\aaa.wav" alias MusicFile')
こうなってダブルクォーテーションから次のダブルクォーテーションをパスと認識してくれるようになるので正常にパスが渡せるようになる。
そのプログラムの利用者の環境は不明でパスに空白が含まれていることなんてしょっちゅうだから
パスの長さではなく 「パスをコマンドとして渡す場合は」 必ずダブルクォーテーションで括るってことが重要。
320 :
43 ◆HdTBZ7DE26
2015/02/15(日) 23:22:27.92 ID:gc6SQoFL
>>319 解説ありがとうございました。
私の理解では、ダブルクオテーションでくくってある場合は無条件でファイルのパスと見なし、
中身の全てを処理先に渡すと言うことでしょうか?
極端な例では"d:\春 唄\20. 春なのに .wav"なんていう場合には
ドライブレターから.wavまで文字列を加工せずに渡しちゃうという理解で良いでしょうか。
mciSendString(PChar('open "' + d:\春 唄\20. 春なのに .wav + '" alias MusicFile'), nil, 0, 0);
こんな具合だと理解しました。
321 :
43 ◆HdTBZ7DE26
2015/02/15(日) 23:49:18.90 ID:gc6SQoFL
追記
ダブルクオテーションでくくっておかないと
d:\春 で切れてしまうと言うことでしょうか。
勉強になります。
322 :
デフォルトの名無しさん
2015/02/15(日) 23:50:13.82 ID:tSavqwTW
>>320 >mciSendString(PChar('open "' + d:\春 唄\20. 春なのに .wav + '" alias MusicFile'), nil, 0, 0);
これってエラー出てコンパイルできないでしょ
この場合だと
mciSendString(PChar('open "d:\春 唄\20. 春なのに .wav" alias MusicFile'), nil, 0, 0);
また、普通はユーザ指定のファイルを取り扱うはずだから、こんな感じ
var
Filename: string;
Filename := 'd:\春 唄\20. 春なのに .wav';
mciSendString(PChar('open "' + Filename + '" alias MusicFile'), nil, 0, 0);
323 :
デフォルトの名無しさん
2015/02/16(月) 01:02:08.54 ID:IHVemS21
>>321 そんな感じ。
コマンドライン引数ってのは、基本的に空白区切りで分割し、アプリケーション側がそれを理解する。
何行目がどういう意味か、というのはアプリケーションやコマンドごとによって異なる。
今回はたまたま2行目がパス指定。
('open ' + Edit1.Text + ' alias MusicFile') で Edit1.Text が c:\Personal music\aaa.wav の場合
open
c:\Personal
music\aaa.wav
alias
MusicFile
という形で渡されてしまいコマンドライン上の2行目がパスとして処理するため c:\Personal としてしか見てもらえない。
ダブルクォーテーションで括っておくと
('open "' + Edit1.Text + '" alias MusicFile') で Edit1.Text が c:\Personal music\aaa.wav の場合
open
c:\Personal music\aaa.wav
alias
MusicFile
と渡されて正常に処理される。
この辺は自分で試してみたほうが理解しやすいかと。
Delphiだと(BCBでも)ParamStr(int)やParamCount(void) っていう関数があると思うからいろいろ試してみると良いよ。
324 :
デフォルトの名無しさん
2015/02/16(月) 23:31:00.72 ID:cBBViBET
バインド変数について質問させて下さい
(省略)
SQL.Add('項目A = :バインドA')
(省略) ← (1)
SQL.Add('項目A = :バインドA')
(省略) ← (2)
上記のように同一のバインド変数を使う場合
バインド変数の設定(ParamByName)を(1)だけで
行うというのはNGでしょうか
(2)で行った場合と比較し、(1)で行った場合はレスポンスが
遅い気がしたのですが、環境が悪かったのか
判断出来なかった為、質問させて頂きました
325 :
デフォルトの名無しさん
2015/02/24(火) 04:48:15.80 ID:SL3KxnjS
ちょっと教えてください。
XEでGifアニメを作る部分をやってるんですが
作ったアニメが終わりに達する前に最初に戻って
再び再生されることがあります。
このバグについては、検索の結果、原因も対処法も分かってます。
お聞きしたいのは、最新バージョンではフィックスされてるんでしょうか?
326 :
デフォルトの名無しさん
2015/02/24(火) 06:19:29.74 ID:HZ8QUUjx
何のバージョン?
327 :
デフォルトの名無しさん
2015/02/24(火) 08:54:22.34 ID:+ETHdUOD
具体的に書いてくれないと検証しようがない
328 :
325
2015/02/24(火) 11:29:44.76 ID:SL3KxnjS
329 :
デフォルトの名無しさん
2015/02/24(火) 11:56:07.95 ID:KDZHY7p6
それがメインならわざわざアップグレードしないで、
修正の方法書いてあるんだから、ソース修正すればいいじゃん・・
330 :
デフォルトの名無しさん
2015/02/24(火) 12:49:03.71 ID:0mvM0/L0
GIFImgは64bit対応くらいでほぼ何も変わって無いよ
331 :
325
2015/02/24(火) 14:26:51.66 ID:SL3KxnjS
332 :
325
2015/02/24(火) 14:37:31.76 ID:SL3KxnjS
333 :
デフォルトの名無しさん
2015/02/24(火) 15:27:15.20 ID:KDZHY7p6
gif作るなら、Windows Imaging Component使ってもいいんじゃね?XEにヘッダーのwincodec.pas用意されてるし。TWICImageもあるけど。
334 :
デフォルトの名無しさん
2015/02/24(火) 16:06:25.28 ID:SL3KxnjS
>>333 ありがとうございます。
ちょっと調べて検討してみます。
335 :
デフォルトの名無しさん
2015/02/25(水) 01:59:26.76 ID:nkkOzD8u
XE7のインストールに2時間以上かかった
死にたい
336 :
43 ◆HdTBZ7DE26
2015/02/26(木) 22:39:05.65 ID:zQE9jQ8j
昔、RADstudio2010の頃はヘルプ特にドキュメントエクスプローラのインストールにやたら時間がかかってたけど、
なぜかxe5でもなぜかたいしたもの入れてるわけじゃないのに数時間コース決定ですから…。めんどくせ
ふとTMediaplayer.pasをみていたら、コマンドの発行は全てmciSendCommand出行ってるみたいなので、
一部乗っ取ってプレイスピードをとぼけてmciSendCommandで発行したら、手間は最低限になるのでしょうか?
新しい2ちゃんのログ参照するように設定したらスレが全滅に近くなってます。
337 :
デフォルトの名無しさん
2015/02/26(木) 23:01:31.91 ID:9XPtYhIl
>>336 >コマンドの発行は全てmciSendCommand出行ってるみたい
当たり前でしょ。MCIをカプセル化したのがTMediaPlayerだから。
TMediaPlayerをメインで使って、不足するものがあったら
自分でmciSendCommandを使うのが普通だと思う。
てか、相変わらず表現が下手だなぁ。投稿する前に一度
文書の推敲くらいしたら?
他人が理解できるかどうかについて、
自分の文書を客観視できないとダメだと思う。
338 :
43 ◆HdTBZ7DE26
2015/02/26(木) 23:12:57.62 ID:zQE9jQ8j
>>337 この考え方に気づいたのが最近でして…^^;)
最初はmciSendStringで発行しているのだと思って
エイリアスが解ればそののまま流用しちゃえばいいやって言うことに気づきました。
>>323でsuggestionも頂きましたが、試してみたいと思います。
あと、プログレスバーの上にLabelコンポーネントをのせて表示させるというのは不可なんでしょうか?
試していますが、なかなか上手くいかなくて…。
色々抱えていますが、何か一つは完成させねばと思っています。
339 :
デフォルトの名無しさん
2015/02/26(木) 23:26:57.86 ID:sS6iJPkL
つ TStaticText
340 :
43 ◆HdTBZ7DE26
2015/02/27(金) 20:46:04.37 ID:FMgM/3Wm
>>337 >>338でさえもつける薬がないなという文章を書いてしまっています。
節と節の間に必要な語句がないので、解りにくいだと思いますが。
後は、技術について理解していないからかなとも思いますが。
少なくてもmciSendCommandにエイリアスはいらないはずですし。
ですが、mciSendCommandというキーワードを調べることで、
以前ずっと悩まされていたmp3で発生していたMCIがらみのエラーの由来
というのが、おぼろげながら分かりかけては来ました。
>>339 やっぱりあるのですね。手元にあるリファレンスガイドには記載が無く
(Delphi6&7と書いてあるので本が古いせいだとは思いますが)、
検索でも見つからなかったため途方にくれていました。
今ヘルプを見ながら、使い方については調査中です。
341 :
◆rW3tmvmDLc
2015/03/06(金) 18:48:53.91 ID:v1c8duLQ
亀ですがちょっと気になったので手元のTurbo Delphiで試してみました。
設計時にフォーム上のプログレスバーコンポの上にStaticTextコンポを載せようとすると
プログレスバーの子にはならず同格(フォームの子)になりますね。
子にならないということはプログレスバーが移動するとStaticTextコンポがズレるということです。
たとえば可変サイズのフォームでAlignやAnchorsでプログレスバーをフォーム下端に固定するような場合はだめということです。
(サイズ固定のフォームなら問題ない)
この場合はコードでStaticTextコンポの親コンポをプログレスバーに指定すれば
プログレスバーの子にすることが出来ます。
(※このとき、位置もコードで指定して下さい。しないと見えない位置になってしまい、焦りますw)
procedure TForm1.FormCreate(Sender: TObject);
begin
StaticText1.Parent := ProgressBar1;
StaticText1.Left := 0;
StaticText1.Top := 0;
end;
なおこの方法はラベルコンポでもできました。
#ちなみにTStaticText自体は結構古いです。Delphi 3あたりでOLEだかCOMだかのために実装されたと記憶しています。普段はTLabelで全く問題ありませんからね。
342 :
デフォルトの名無しさん
2015/03/06(金) 18:57:34.12 ID:p9CCtJP5
>>341 TPanelの子にTProgressBarのAlignをClientにして置いてその上に表示されるようにTPanelの子としてTLabel置いて、TPanelのAlignで管理したらいかんのか?
343 :
◆rW3tmvmDLc
2015/03/07(土) 10:45:05.04 ID:CMYCrN+x
>>342 それだとラベルがプログレスバーに隠れてしまいます。
しかしラベルの代わりにStaticTextを使えば大丈夫です。
私の案と違ってコードを1行も書かなくて良い(位置合わせも簡単)のは利点ですね。
344 :
デフォルトの名無しさん
2015/03/17(火) 18:22:47.29 ID:BUFERbSe
Delphi 2009
ジェネリック型をおしえて下さい
配列がうまくいかない
program test;
{$APPTYPE CONSOLE}
type
TTest2<T> = record
a : array [0..2] of T;
end;
procedure test2;
var
t2 : TTest2<Integer>;
begin
writeln( SizeOf(t2.a) ); // 3 と表示される
end;
begin
test2;
end.
Integer 型だからサイズは 12 になってほしいんだけど
3 になる
なんで?
345 :
デフォルトの名無しさん
2015/03/19(木) 01:28:19.32 ID:iCf5kD1a
XEから12
346 :
デフォルトの名無しさん
2015/03/19(木) 01:38:24.60 ID:mrbpdifw
ありがとう
すっきり
347 :
43 ◆HdTBZ7DE26
2015/03/21(土) 17:22:51.14 ID:nRQhEukI
こんにちは
mciSendStringの利用に取り組んでいます。
再生スピードを変えようとsetコマンドを使うと
エラーが出てコンパイルできません。
良い知恵があったら教えていただけないでしょうか。
procedure TForm1.Button3Click(Sender: TObject);
var
Speed : intger;
FMCISpeed : string;
begin
Speed := 500;
FMCISpeed := IntToStr(speed);
mciSendString(PChar(('set '+MusicFile+' speed + FMCISpeed'), '', 0, 0)) ;
よろしくお願いいたします。
end;
348 :
43 ◆HdTBZ7DE26
2015/03/21(土) 17:27:32.30 ID:nRQhEukI
該当箇所を書き出します。
procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString(PChar('stop MusicFile'), nil, 0, 0);
mciSendString('close MusicFile', 0,0,0);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
FMCISpeed:= IntToStr(speed+500);
mciSendString('set '+MusicFile+' speed '+ FMCISpeed);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
FMCISpeed:= IntToStr(speed-500);
mciSendString('set '+MusicFile+' speed '+ FMCISpeed);
end;
349 :
43 ◆HdTBZ7DE26
2015/03/21(土) 17:28:01.97 ID:nRQhEukI
続き
procedure TForm1.FileListBox1Change(Sender: TObject);
begin
if FileExists(FileListBox1.FileName) then
begin
end;
end;
procedure TForm1.PlayBtnClick(Sender: TObject);
begin
if FileExists(FileListBox1.FileName) then begin // Edit1.Textにmp3のファイル名
mciSendString(PChar('open "' + FileListBox1.FileName + '"type MpegVideo'+ 'alias MusicFile'), nil, 0, 0);
mciSendString(PChar('play MusicFile'), nil, 0, 0);
end;
end;
350 :
デフォルトの名無しさん
2015/03/22(日) 00:00:29.55 ID:gMlD4uUr
MCIのこと分からないけど、コンパイルエラーだったら
どの行で、どんなエラーが出たかくらいの情報は欲しい...
351 :
デフォルトの名無しさん
2015/03/22(日) 00:26:58.43 ID:gMlD4uUr
>>347 mciSendString(PChar(('set '+MusicFile+' speed + FMCISpeed'), '', 0, 0)) ;
これはこうじゃない?
mciSendString(PChar('set MusicFile speed ' + FMCISpeed), '', 0, 0) ;
MusicFileってDelphiの変数じゃなくてMCIのエイリアス名でしょ。
>>348-349 それと、ちょっと検索したけど書式がおかしくない?
これが基本でしょ
mciSendString('set MyMusic speed 500', nil, 0,0);
末尾の「, nil, 0,0」がない行があるから、構文チェックで
パラメータが足らないって怒られない?
352 :
デフォルトの名無しさん
2015/03/24(火) 10:29:28.64 ID:pvaPTVLu
>>347 エラーメッセージをコピーし、そのまんま提示するのが吉。
エラーダイアログの内容も Ctrl+C でコピーできる。
353 :
43 ◆HdTBZ7DE26
2015/03/25(水) 08:02:10.77 ID:KIDnYnaT
こんにちは
>>352
こんなコマンドがあるとは知りませんでした。
>>351
構文チェックでは、setコマンドでの括弧の位置がおかしいとだけ指摘されてました。
修正した後のsetコマンドを送る(?)と下記のエラーが出てます。
---------------------------
soundplayer_by_mci
---------------------------
モジュール 'winmm.dll' のアドレス 72606C7A でアドレス 004026F8 に対する書き込み違反がおきました。.
---------------------------
OK
---------------------------
354 :
デフォルトの名無しさん
2015/03/25(水) 10:46:31.42 ID:uXYW+wEG
>>353 プログラミングする人なら全角半角に気を遣えよ…。
アンカーすらまともに打てないようだと、誰も相手にしなくなるかもよ?
>こんなコマンドがあるとは知りませんでした。
CTRL+X 切り取り
CTRL+C コピー
CTRL+V 貼り付け
これらは特別な「コマンド」ではなく、Windows標準のキー操作だよ。
Delphiのエディタ画面を右クリックしたり、あらゆるアプリ(例えばブラウザ)の
メニューの「編集」をクリックすれば、ほぼ必ず表示されると思うが。
それがダイアログの内容のコピーにも適用できるってだけの話。
そのまんま提示とは言ったが、余計な線とかOKは要らない。
とりあえず、「修正した後のsetコマンド」とやらを出してみたらどうだ。
あと、コンパイルエラーで質問するときもエラーメッセージをコピーして提示、な。
355 :
43 ◆HdTBZ7DE26
2015/03/26(木) 07:19:18.89 ID:v+/zfRQ/
>>354 アンカーは、IME任せで入力してしまい…
全角だとアンカーと認識されないんだな。
と知りました。
修正したsetコマンドのイベントハンドラで良いのでしょうか?
状況としてはButton1でwavファイルの再生をしている時に
Button3でsetコマンドを送信すると
>>353のエラーダイアログが出ますが、
再生は継続されています。
procedure TForm1.Button1Click(Sender: TObject);
begin
if FileExists(FileListBox1.FileName) then begin // Edit1.Textにmp3のファイル名
mciSendString(PChar('open "' + FileListBox1.FileName + '" alias MusicFile'), nil, 0, 0);
mciSendString(PChar('play MusicFile'), nil, 0, 0);
end;
356 :
43 ◆HdTBZ7DE26
2015/03/26(木) 07:20:33.00 ID:v+/zfRQ/
procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString(PChar('stop MusicFile'), nil, 0, 0);
mciSendString('close MusicFile', 0,0,0);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
mciSendString(PChar('set MyMusic speed 500'), nil, 0,0);
end;
end.
嫌われることばかりやってすみません。
357 :
デフォルトの名無しさん
2015/03/26(木) 10:27:43.89 ID:N4Csq/GP
コピペ爆撃厨にしか見えないw
358 :
デフォルトの名無しさん
2015/03/26(木) 11:04:54.28 ID:46z+YGjF
>>356 mciSendString(PChar('set MyMusic speed 500'), nil, 0, 0);
・ エイリアス名をMusicFileに変えたら動作した。
・ wavファイルの再生速度は変更されず。mp3なら低速になった。
・ どうやってもエラーは出なかった。
という、つまらん結果になった。
359 :
43 ◆HdTBZ7DE26
2015/03/26(木) 17:19:45.67 ID:v+/zfRQ/
>>358 私の方でも確認できました。
エイリアス名を書き換え
mp3と(元々の目的だった)mp4での速度変更の確認。
mp4だと元が4:3でも無理矢理16:9にしてしまうため、
ちょっと考えなければなりません。
wavでも普通にテストしている分にはエラーは出ませんでした。
procedure TForm1.Button1Click(Sender: TObject);
begin
begin
if FileExists(FileListBox1.FileName) then begin // Edit1.Textにmp3のファイル名
mciSendString(PChar('open "' + FileListBox1.FileName + '" type MPEGVideo'+' alias MyMusic'), nil, 0, 0);// ^^^^^^^^^^^^^^^^^^
mciSendString(PChar('play MyMusic'), nil, 0, 0);
end;
end;
下線部を書き足したらwavでも速度が変えられるみたいです。
示唆いただきありがとうございます。
360 :
43 ◆HdTBZ7DE26
2015/03/26(木) 17:32:03.78 ID:v+/zfRQ/
下線が変なところに…
書き足したのは"type MPEGVideo"です。
361 :
デフォルトの名無しさん
2015/03/27(金) 00:42:52.93 ID:UaGaaA82
下線とか不要
使ってるブラウザもフォントも違うからね
それと行頭の半角スペースは削除されると思う
362 :
デフォルトの名無しさん
2015/03/28(土) 16:20:47.73 ID:dbqZrFSd
クラスの勉強しているのですが
←のところで(self)がないとコンパイルできません。なんで?
implementation
{$R *.dfm}
type
Tchild=class(TForm1)
procedure hello;
end;
procedure Tchild.hello;
begin
ShowMessage('こんにちは');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
child:Tchild;
begin
child:=Tchild.Create(self);←selfがないとコンパイルできない
child.hello;
child.Free;
end;
end.
363 :
デフォルトの名無しさん
2015/03/28(土) 17:32:03.78 ID:dlUU46an
nilはだめですか
364 :
デフォルトの名無しさん
2015/03/28(土) 19:26:17.45 ID:ZvFkOiGd
>>362 TChildの先祖に、TComponentがいて、そのコンストラクタ、
TComponent.Create(owner: TComponent)
をずっと引きずってる(overrideされてきてる)から。
根っこのTObject.Createが潰されるのはなんでだっけかな?
365 :
デフォルトの名無しさん
2015/03/28(土) 19:30:32.08 ID:ZvFkOiGd
>>362 クラスの勉強をしているのか、コンポーネント作成を勉強しているのか分からないけど、
前者なら、コンポーネント作成は奥(闇)が深いので、単純なTObjectを親とするところから始めてみるのがいいと思う。
366 :
デフォルトの名無しさん
2015/03/28(土) 19:33:34.18 ID:Uopx7b1x
>>362 そもそも引数無しのCreateは定義されているのかい?
それを調べればなぜコンパイルできないかも分かると思うが。
367 :
デフォルトの名無しさん
2015/03/28(土) 23:21:14.35 ID:UAf+f+N4
type
Tchild=class
procedure hello;
constructor Create;
end;
constructor Create;
begin
end;
これでもよい。
特別やることなければcreateの中身は空でOK。ていうかconstructor いらんね
派生元無指定の class だけの場合は自動的にTObject指定
368 :
デフォルトの名無しさん
2015/03/29(日) 12:39:38.93 ID:5dAN0hcT
>>364 自己レス
TObjectには、そもそもコンストラクタが用意されておらず、
派生クラスでコンストラクタを作らなかった場合にのみ、引数なしのデフォルトコンストラクタがクラスに挿入される。
一方、TComponentは明示的にコンストラクタを用意しているために、デフォルトコンストラクタが挿入されない。
結果、引数なしではコンパイルエラーになるでよかったっけ?
369 :
デフォルトの名無しさん
2015/03/29(日) 17:38:15.37 ID:iCrskoHj
挿入とかでなく、引数のないデフォルトコンストラクタがあるでOKでは。
370 :
デフォルトの名無しさん
2015/03/29(日) 22:35:40.84 ID:3UyS5t9C
>>369 うん、それだと、TObjectにはある引数なしのコンストラクタが、TFormやTComponentから呼べないのはなぜ?にうまく答えられてあげれない気がするんだよね。
まあ、デフォルトコンストラクタが理解できれば、そんな思いは杞憂なんだろうけど。
371 :
デフォルトの名無しさん
2015/03/30(月) 13:18:24.98 ID:HXP31/5p
ヒント: overload
372 :
デフォルトの名無しさん
2015/03/30(月) 18:07:58.09 ID:maH1BSmz
373 :
デフォルトの名無しさん
2015/03/30(月) 21:17:07.14 ID:5sUBtOXi
>>362 TChild=class(TComponent) にすれば通った
TForm1を継承すると循環参照になるんじゃないかな??
374 :
デフォルトの名無しさん
2015/03/30(月) 21:53:52.89 ID:j7Kw75Cl
>>372 TComponent.Create; で、コンパイルエラーになるのを、呼べないと書いてしまいました。
375 :
デフォルトの名無しさん
2015/03/30(月) 22:19:17.64 ID:dzNdyIAM
そもそもコンストラクタは継承されないはずじゃなかったか?
他にコンストラクタを持つTComponentにデフォルトコンストラクタはない。
TObject.Create; があったとしても、それは継承されない。
TComponent.Create; という呼び出しを実装したいなら明示的にオーバーライドする必要がある。
というだけなはず。
376 :
デフォルトの名無しさん
2015/03/30(月) 23:49:40.81 ID:4K7Cx04X
同じ名前の関数は存在できないので、上位のTComponentにCreate(owner: TComponent)が存在していることにより、TObjectから続くCreate;が握り潰されているのでは
377 :
43 ◆HdTBZ7DE26
2015/03/31(火) 05:53:57.63 ID:W8QOWemd
procedure TForm1.PlayBtnClick(Sender: TObject);
begin
begin
if FileExists(FileListBox1.FileName) then begin // Edit1.Textにmp3のファイル名
mciSendString(PChar('open "' + FileListBox1.FileName + '" type MPEGVideo'+' alias MyMusic'), nil, 0, 0);
Timer2.Enabled := True;
LengthBtnClick(Sender);
mciSendString(PChar('play MyMusic from 0 ' ), nil, 0, 0);
FileListBox1.FileName:='';
end;
end;
end;
378 :
43 ◆HdTBZ7DE26
2015/03/31(火) 05:57:44.46 ID:W8QOWemd
procedure TForm1.StopBtnClick(Sender: TObject);
begin
mciSendString(PChar('stop MyMusic'), nil, 0, 0);
mciSendString(PChar('close MusicFile'), 0,0,0);
end;
procedure TForm1.CurrentBtnClick(Sender: TObject);
const
Pos: Cardinal = 260; //元は'MAX_PATH';
var
Bufpos_widechar : array[0..260] of WideChar;//mciSendString1から文字を受けるバッファー
position_time :String;//曲の長さの整数型時間
begin
Bufpos_widechar := '';//初期化
//SetLength(Bufpos_widechar, Pos);
mciSendString(PChar('status MyMusic position'),Bufpos_widechar, Pos, 0) ;
position_time := WideCharToString(Bufpos_widechar);
pos_times_int := StrToInt(position_time);
ProgressBar1.Position := round(((pos_times_int/length_times)*100));
Label2.Caption := FormatDatetime('nn:ss', pos_times_int / 1000 / (24*60*60));
end;
379 :
43 ◆HdTBZ7DE26
2015/03/31(火) 06:15:24.44 ID:W8QOWemd
上の書き込みですが、FileListBox内のアイテムを適当に再生させても
一番前のファイルの曲を再生して、カーソルが動いても次の曲になっても最初の曲が再生しています。
良い方法はあるのでしょうか?よろしお願いいたします。
380 :
43 ◆HdTBZ7DE26
2015/04/01(水) 02:41:28.49 ID:yyotAm3f
見放されたんっですねー
自分で何とかしてみます…
381 :
デフォルトの名無しさん
2015/04/01(水) 07:50:42.93 ID:G1eOhXnt
みんな年度末で忙しい
382 :
43 ◆HdTBZ7DE26
2015/04/01(水) 17:11:49.73 ID:jaZmSQWx
自己解決しました。
>>381 そう言えば今日から新年度ですしね。
私は会計とかは経理に丸投げの、毎日季節感のない仕事をしているので
気がつきませんでした。
383 :
デフォルトの名無しさん
2015/04/01(水) 18:03:06.28 ID:L2meKWwv
>>382 たった二日で自己解決出来ることをわざわざ質問すんなよ
質問したら答えてくれるわーって自分で考えること放棄してるんちゃうんかと
384 :
デフォルトの名無しさん
2015/04/01(水) 20:10:54.56 ID:G1eOhXnt
超初心者スレだよここ
385 :
デフォルトの名無しさん
2015/04/01(水) 20:22:36.49 ID:hsSDKUP5
>>384 そうだよね超初心者スレだよね。
ちょっと考えたらわかる事を思考停止して他の誰かに丸投げして考えてもらうスレじゃないよね。
386 :
デフォルトの名無しさん
2015/04/01(水) 20:36:03.17 ID:yM+OD1Bv
正直MCIはもうお腹いっぱい
387 :
デフォルトの名無しさん
2015/04/02(木) 06:13:30.48 ID:GTnc/Q7j
糞な質問されて文句出るようならスレタイ変えなきゃあかんね
388 :
デフォルトの名無しさん
2015/04/02(木) 07:56:04.98 ID:ZWVc/ARE
過疎スレで喧嘩すんな
389 :
デフォルトの名無しさん
2015/04/02(木) 15:05:24.80 ID:IFDqoAfd
喧嘩なんか誰かしてた?
390 :
デフォルトの名無しさん
2015/04/02(木) 15:58:47.61 ID:eWn8lw0E
何とか団体作って、過疎化してるのでここで弱者を叩きのめして
九打巻きやろうがいるな
391 :
デフォルトの名無しさん
2015/04/02(木) 16:13:11.57 ID:QIA/lHy8
392 :
デフォルトの名無しさん
2015/04/02(木) 16:31:50.92 ID:eWn8lw0E
図星か
393 :
デフォルトの名無しさん
2015/04/02(木) 17:10:17.75 ID:QIA/lHy8
394 :
デフォルトの名無しさん
2015/04/02(木) 22:04:03.14 ID:wcLXQiws
整数の条件判定で以下の記述方法がありますが、どれが一番処理速度が
速いのでしょうか。
1.if (AAA = 1) or (AAA = 2) or (AAA = 3) then
2.if AAA in [1, 2, 3] then
3.case AAA of 1, 2, 3:
395 :
デフォルトの名無しさん
2015/04/03(金) 01:10:44.57 ID:Xs2RwIgm
>>394 forループで処理速度を計測してみたら?
その結果を俺も知りたい
396 :
43 ◆HdTBZ7DE26
2015/04/03(金) 07:00:43.00 ID:FReBraBj
>>383-385 おはようございます
いつも、質問した後も原因調査し続けていて
今回はたまたま翌日にわかっただけですよ。
>>351 基本のmciメソッドをを教えていただいてから
mciSendstringの理解が進みました。
なぜnilが必要なのかとかです。
397 :
デフォルトの名無しさん
2015/04/03(金) 08:53:19.09 ID:2ouk/v9L
mci君が書き込む
叩かれる
何故か擁護が湧く
ID変わった頃に本人登場して言い訳
パターン化されてきた
398 :
デフォルトの名無しさん
2015/04/03(金) 10:25:45.99 ID:KTi6SKfx
>>394 D2010だと
1.AAA=1だったら、AAA=2だったら、AAA=3だったら条件実行。と最大3回比較が行われている
2.と3.は同じで、AAA-4が0未満なら条件実行、という比較が1回。になっている(最適化の結果)
2または3が早いと思われますが、AAAの比較条件が1、2、3と連番になっているのと、なっていないのではまた話は変わってきます。
399 :
デフォルトの名無しさん
2015/04/03(金) 12:27:32.86 ID:Xs2RwIgm
>>397 ここがそうとは言わないが
これって典型的な自演のパターン
400 :
デフォルトの名無しさん
2015/04/03(金) 16:11:05.47 ID:G86uPmoQ
DelphiXe2Proってデータベースアプリの開発配布って出来ますか?
自分がデータベースに関して疎いので、ネットで機能一覧を見ても
使えるデータベースの種類は少なくても可能なのか、開発テストは出来ても
配布は出来ないのか、イマイチよく分からないのです。
401 :
394
2015/04/03(金) 21:14:29.93 ID:ABPa9A6J
>>398 連番だったのでうまく最適化されるケースだったのですね
書きやすい2.のやり方でコーディングして気になったら計測してみます
ありがとうございました
402 :
デフォルトの名無しさん
2015/04/03(金) 21:29:56.57 ID:KwHKk6em
>>400 オラクルやSQLServerならADO(ODBC)経由ならデータベース接続は可能だったと思うよ
ただ処理速度はネィティブ接続より相当に遅い
DBGoってやつ
403 :
デフォルトの名無しさん
2015/04/03(金) 21:32:15.80 ID:KwHKk6em
あ、忘れた。。
配布は可能なはず
ODBCドライバは各データベースベンダーのが使える
404 :
400
2015/04/03(金) 22:26:24.88 ID:G86uPmoQ
>>402 ありがとうございます。
もう少し教えてください。
配布先にオラクルとかのデータベースがあって、
そのODBCがあれば配布できるって事ですよね?
配布先にアプリと一緒に配布できるテータベースは
XE2PROには入っていないのでしょうか?
405 :
デフォルトの名無しさん
2015/04/04(土) 00:11:03.49 ID:Enr9y1oG
TIdHTTPでクッキーをファイルに保存したり
ファイルから読み込んだりするのって
いったいどうやるんだろ
クッキーマネージャのコレクションに
SaveToFileとかないよね
406 :
デフォルトの名無しさん
2015/04/04(土) 00:38:27.79 ID:kQcA28WQ
ループでまわしてコレクションアイテムごとに保存していけばいいんじゃないの
読み込み保存自体はTIniFileに任せるでも良いし
407 :
デフォルトの名無しさん
2015/04/04(土) 11:59:18.90 ID:75GIYKa0
>>404 いまいち状況がわかんないね。
クライアントサーバータイプのデータベース、OracleとかSQLServerなら独立した製品だから配布というより個別にサーバーに導入だよ
その際クライアント側には各メーカーから提供されてるODBCドライバをインストールして接続設定する。
クラサバといいつつ一台のPCでも環境構築は可能
ローカルデータベースを使う場合も基本同じ
いづれにしろデータベースは別導入と考えた方がいいよ
昔はBDEとネィティブデータベースのパラドックスなんかは一緒にインストール出来たみたいだけど今はサポート対象外みたいだね
408 :
デフォルトの名無しさん
2015/04/04(土) 12:06:58.08 ID:75GIYKa0
あと、SQLiteはローカルデータベースだけど実体はDLLなんで一緒に配布できるのかな?
ライセンス的にはOKなのかどうかわからないんでサイトとかで確認して
409 :
デフォルトの名無しさん
2015/04/04(土) 19:49:42.49 ID:f6JqcdGz
Firebied EmbeddedもSQLite同様、組み込みDBなので、dllの同梱で実現できる
クライアントライブラリには、公式にサポート保証はしてないけど、現時点ではImterbase Express(IBX)が同じように使える。XE2 Proに入ってるのか知らないけど。
ほかには、Unified Interbase(UIB)を使うというのもあり。
こっちは公式でFirebird保証してたはず。
http://sourceforge.net/projects/uib/ 410 :
デフォルトの名無しさん
2015/04/04(土) 20:51:24.25 ID:pjrHZjwp
>>406 ありがと
やっぱ自力で保存・読み取りする必要があるのか...
411 :
デフォルトの名無しさん
2015/04/04(土) 20:53:42.29 ID:uhcGsKJs
>>410 コレクション渡されたらStringlistにでも読み込ませる関数書いたらいいよ
412 :
デフォルトの名無しさん
2015/04/05(日) 07:00:29.17 ID:h23VmPfD
>>411 TIdCookieRFC2109の各パラメータを保存しておき
こんどはそれを読み込んでコレクションにaddするって感じですよね
413 :
デフォルトの名無しさん
2015/04/05(日) 07:01:29.05 ID:h23VmPfD
>>412 パラメータじゃなくプロパティだった...
414 :
デフォルトの名無しさん
2015/04/05(日) 16:18:55.67 ID:ekcWnL0a
415 :
デフォルトの名無しさん
2015/04/05(日) 21:02:19.33 ID:cnzR+ZdE
>>414 おお、ありがとう
もっとも自分の使ってるindyって
ちょっと前のバージョンだから
TIdCookieってクラスはないけど
基本は同じだね
ありがとう
416 :
43 ◆HdTBZ7DE26
2015/04/06(月) 06:50:11.26 ID:gRmrS1ZH
あれだけ上でたたかれましたが、いろいろ試しましたが、どうしてもわからず質問します。
mciでボリュームを変えたい時
MCISendString(PChar('setaudio MyMusic volume to 500'), nil, 0, 0);
だとボリュームが変化しますが、
VolumeValue :=500;
MCISendString(PChar('setaudio MyMusic volume to '+'VolumeValue'), nil, 0, 0);
だと微動だにしません。
変数から値を取り出して代入というのは可能でしょうか?
417 :
デフォルトの名無しさん
2015/04/06(月) 10:02:05.03 ID:rC9ScJGO
'VolumeValue' → IntToStr( VolumeValue )
でどうですか?
418 :
デフォルトの名無しさん
2015/04/06(月) 10:11:41.08 ID:ZFpgIKXI
コンパイルはエラーなしでできてるってことだよね?
1)実行時にLabelかなにかにVolumeValueの値を表示してみる
2)構文が正しいかチェックするために、+ 'VolumeValue'の代わりに
+ '500'として実行してみる
それと自分には最後の行の意味が分からない
419 :
デフォルトの名無しさん
2015/04/06(月) 10:18:22.31 ID:ZFpgIKXI
てか、よくよく見たら、VolumeValueは文字列変数だから
前後に ' ' は不要じゃん
MCISendString(PChar('setaudio MyMusic volume to '+VolumeValue), nil, 0, 0);
寝起きでオレもどうかしてた...
420 :
デフォルトの名無しさん
2015/04/06(月) 12:30:32.75 ID:lSFNduIb
43ってまったく進歩してないな
数ヶ月前の最初のmci関連レスでやったミスを
繰り返してるだけ
Delphi/プログラミングの基礎をまったく理解してなくて
単にサンプルを無分別に変更して
たまたま動けばOKって感じで
本当に理解してないのに次に進んじゃダメだよ
このスレの一部住人から非難されてるのも
実際にはその点だと思う
421 :
デフォルトの名無しさん
2015/04/06(月) 14:59:27.52 ID:G7TDUb11
NG機能のおかげでトリップNGですっきり
422 :
デフォルトの名無しさん
2015/04/07(火) 07:53:15.94 ID:1XnYWKxS
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
423 :
デフォルトの名無しさん
2015/04/07(火) 08:18:11.84 ID:EJA8ntnQ
>>422 43が叩かれる素振りがあるとこれ必ず書き込まれるけどなんで?
424 :
43 ◆HdTBZ7DE26
2015/04/07(火) 10:17:45.96 ID:WsoND/ym
>>418 volume to 500'などの数字を直接指定すれば、
エラーが出ないことがわかったので、
>>418の
レスで理由がわかり勉強させていただきました。
>>420 .プログラミングの教育を受けておらず、
経緯はどうであっても、安易に質問し続けたことに申し訳ないと思っています。
今の私の状態では、テーマを見つけてトライアンドエラーで習得して行くしかない
と考えます。
上の方で丸投げと書き込まれていましたが、自分で考えてそれでも分からず
その上での質問ですが、安易だったと反省しています。
>>423 私ではありませんが、自作自演といわれています。
>>422 何はともあれ、手にとってもらえるものを作りたいと考えています。
425 :
デフォルトの名無しさん
2015/04/07(火) 11:44:32.85 ID:40Mpx8Y8
>>394 これAndで一度にまとめて if (AAA and 3 > 0) でいいんじゃないの
判定の回数を減らせば高速だよ
>>398 引き算が余計 And演算のほうが速い DELPHIコンパイラはヘボイから最適化がたいしたことないな
426 :
デフォルトの名無しさん
2015/04/07(火) 12:17:26.75 ID:40Mpx8Y8
上位2ビットしか見てないから3ビット以上が立っているかどうかの判定も足して
if (AAA shr 2 = 0) and (AAA and 3 > 0) then
427 :
デフォルトの名無しさん
2015/04/07(火) 12:55:02.98 ID:aiFiYWCG
>>425 if (AAA and 3 > 0) としてしてる意図がよくわからないけど、
それだと例えば7でも成立しませんか?
そこまで単純化できないのではと思います
428 :
デフォルトの名無しさん
2015/04/07(火) 13:07:09.53 ID:bSy6anbX
独り言
そんな条件判定が膨大にあるならともかく
普通はどういう条件を判定してるのかが
一目瞭然な書き方にしたほうがいいと思うが
429 :
デフォルトの名無しさん
2015/04/07(火) 16:30:47.14 ID:F6dE5+8n
後で見て ぱっと見て何してるか意味がわかる書き方が一番いい
多少の速度向上なんて意味ない
430 :
◆rW3tmvmDLc
2015/04/13(月) 11:51:00.76 ID:PzCNlRdk
>>394-395 ためしてみたのですが100万回繰り返しても目に見える差は出ませんでした。
1億回繰り返すと1が1.5倍くらい処理時間がかかりました。
トリップ検索のように膨大な数の処理を繰り返すのでなければ多少の高速化すらなさそうです。
やはり
>>428,429のとおり、見やすいコードを書くことが大事だと思います。
431 :
デフォルトの名無しさん
2015/04/13(月) 12:08:55.84 ID:+5iwttzx
複雑なコードでもないしデバッグで実際にマシン語にどう変換されているか見たほうが早くね?
特に時間を計測して比べるつもりなら目的とするコードで試さないと本番で異なる結果になるかもしれない。
432 :
デフォルトの名無しさん
2015/04/13(月) 13:03:48.27 ID:S66WfWtB
昔でいうコンパイラ(コンパイル)で変わるってやつだな
433 :
デフォルトの名無しさん
2015/04/13(月) 23:11:53.77 ID:rGVwY7lP
privateなフィールドに対して単純に読み書きしかしないプロパティって
そのフィールドをpublicした場合と意味は同じですか
434 :
デフォルトの名無しさん
2015/04/14(火) 07:36:15.21 ID:X6HUYu7D
意味って?何が知りたいの?
435 :
デフォルトの名無しさん
2015/04/14(火) 09:34:43.47 ID:Clus2qjW
>>433 自分でいろいろ試してから聞けよ
いつも人に聞いてそれを信じてるお前を孫引キーラーと呼ぶことにするよ
436 :
デフォルトの名無しさん
2015/04/15(水) 04:51:04.77 ID:SgLp0OfW
XE7のWinapi.ActiveXでSystem.Variantsが無いと出たので
F1026
Winapi.ActiveXのimplementationの下に
uses
System.Variants;
追加したらコンパイルできるようになりました
これでいいですか
437 :
デフォルトの名無しさん
2015/04/15(水) 17:28:19.94 ID:5t5vNz48
(デフォルトの)ユニットの検索パスに System.Variants.dcu が
ない状態というのが解せません。
System.dcu、SysInit.dcu、System.Variants.dcu
は特殊なユニットで、他のすべてのユニットのコンパイルで必要となる前に
事前にユニット検索パスにコンパイルされた .dcu ファイルが存在していないと
場合によって、他の問題を引き起こすかもしれません。
438 :
mci ◆HdTBZ7DE26
2015/04/17(金) 10:33:37.16 ID:dxvaagwm
自分でいろいろと勉強して、メディアプレイヤーの形になりました。
再度ご評価いただけないでしょうか?
439 :
デフォルトの名無しさん
2015/04/17(金) 12:28:55.39 ID:upBJabKT
>>438 エラーなく動いて、不明な部分がないんだったら評価なんか不要じゃね?
440 :
デフォルトの名無しさん
2015/04/17(金) 14:19:52.70 ID:DDXYNTAP
すいませんメディアプレイヤーなんてFMX使えば5分でできるんで(^^;
441 :
mci ◆HdTBZ7DE26
2015/04/17(金) 18:06:17.54 ID:dxvaagwm
>>440 FMXって不安定な頃の記憶しかなかったので
使ったことがありませんでした。
>>439 とりあえず、エラーなく動作しています。
ありがとうございます。
442 :
デフォルトの名無しさん
2015/04/17(金) 18:23:01.66 ID:nzGEuq7K
mci君に不安定って言われちゃうFiremonkeyさんマジ不憫
443 :
デフォルトの名無しさん
2015/04/17(金) 21:25:46.64 ID:6syYZuA4
みんなちっさ過ぎるw
444 :
デフォルトの名無しさん
2015/04/18(土) 10:04:05.46 ID:xeEMK0y2
援護が来た…
いつもの流れになるのか?
445 :
デフォルトの名無しさん
2015/04/18(土) 21:50:25.80 ID:KX0HNTIW
446 :
デフォルトの名無しさん
2015/04/19(日) 01:01:30.03 ID:OhNsodyJ
Delphi MCI陰謀論者
監督 mci君
主演 mci君
脇役 mci君
Aとうりすがりの人 mci君
Bとうりすがりの人 mci君
Cとうりすがりの人 mci君
観客 mci君
447 :
デフォルトの名無しさん
2015/04/19(日) 07:47:52.31 ID:L3mIqSkx
Firemonkeyなんてゴミじゃん
448 :
デフォルトの名無しさん
2015/04/23(木) 13:07:59.00 ID:bVvcRfnP
FMXは正直言ってどうでもいいが、
そこまでFMXにこだわるなら何か作って見せてみーよ
449 :
デフォルトの名無しさん
2015/04/23(木) 14:32:10.43 ID:xl5rSuiX
FMXにl拘ってる人って、ここにいた?
450 :
デフォルトの名無しさん
2015/04/25(土) 11:07:16.33 ID:Aec5wqu/
ファイルの日付時刻取得について教えてください。
TSearchRecのtimeやftCreationTimeを使ってもコピーや移動で出来た日時になります。
ファイル自体が出来た日時を取得するにはどうすればいいでしょうか?
エクスプローラーの日付時刻が知りたいのです。
よろしくお願いします。
451 :
デフォルトの名無しさん
2015/04/25(土) 12:19:53.81 ID:W5yqqu6Y
>>450 検索
delphi ファイル タイムスタンプ 取得
452 :
450
2015/04/27(月) 09:23:29.41 ID:xLcJSjef
返事が遅くなってすみません。
ありがとうございました。
検索した結果、ファイルのタイムスタンプについて
色々間違って覚えていたのがわかりました。
助かりました。
453 :
デフォルトの名無しさん
2015/05/02(土) 16:20:01.94 ID:A9czwFhh
TTabControlのタブに×(閉じる)ボタンがついてるコンポーネント
どこかにありませんか?
454 :
デフォルトの名無しさん
2015/05/02(土) 16:56:15.14 ID:s7J78L5A
StringGridのパラメーターの保存に関して教えてください。
セルのデータ等はStringListで保存、読込すればいいと思いますが、
各列の幅や行の高さ等もforで回して記録していくしかないですか?
455 :
デフォルトの名無しさん
2015/05/03(日) 09:01:35.89 ID:hYIk5xuC
456 :
デフォルトの名無しさん
2015/05/06(水) 01:53:02.36 ID:9tmPT2HG
蒸気にぶっこんだらホカホカになってまうがな
457 :
デフォルトの名無しさん
2015/05/06(水) 17:13:57.97 ID:7r6cLTpV
「コンポーネントまん、はじめました」
458 :
デフォルトの名無しさん
2015/05/15(金) 19:59:50.81 ID:YZQ4UD+9
7月1日に「うるう秒」があるんだけど
Delphiの時間処理で何か問題が発生する可能性ある?
459 :
デフォルトの名無しさん
2015/05/15(金) 21:28:33.57 ID:cz0H31lb
1秒ずれるだけで問題なんてないだろ
自分が問題の起きるコードさえ書いていなければ
460 :
デフォルトの名無しさん
2015/05/16(土) 23:20:35.60 ID:w54HTy90
昔、造幣局の機械で使ってるプログラムの質問メールが来たことがある
医療機械とか不都合の出る場合もあるかも知れない
461 :
デフォルトの名無しさん
2015/05/17(日) 00:59:01.28 ID:Vu7kbuE1
>>459 うーん微妙
1秒毎にネットから日時がファイル名のデータを取得してるんだけど
第一の問題は相手側がそのファイルを用意してるかどうかだよね
その1秒をスキップするように修正しておいたほうが無難か...
第二の問題は、うるう秒後、PCのハード時計が1秒ズレているはずだから
アプリ内時計を用意して時間調整する必要があるかも
なんか面倒になってきた
462 :
デフォルトの名無しさん
2015/05/17(日) 10:39:37.03 ID:ikqo6Nig
なんでそんな仕様にしたんだよw
463 :
デフォルトの名無しさん
2015/05/17(日) 12:30:39.76 ID:x6inXplY
今の Delphi コンパイラは C で書かれているそうですが、
いつ頃からそうなったんでしょうか?
昔は Delphi は Delphi で書かれているのが売りでしたよね?
464 :
デフォルトの名無しさん
2015/05/17(日) 12:39:17.54 ID:SD4n3p/D
コンパイラはアセンブラで書かれて?
465 :
デフォルトの名無しさん
2015/05/17(日) 20:19:24.47 ID:zvjRQNBs
世の中にはちょっとしたことでも影響受けるわけわからんシステムが走ってるもんだなw
そんな繊細ならそもそも秒レベルのズレが生じたときの検出と対処くらい用意してしかるべきだが
466 :
デフォルトの名無しさん
2015/05/17(日) 20:27:59.88 ID:KEpTTaip
PCの時計ってそもそも不正確だから1秒なんてすぐずれるし、そんな影響受けるシステムなんて作ってるって話自体眉唾だけどな
467 :
デフォルトの名無しさん
2015/05/17(日) 22:29:09.82 ID:wBQtBRoi
>>463 >昔は Delphi は Delphi で書かれているのが売りでしたよね?
Delphiで作っていたのはIDEだけでは?
コンパイラやリンカーはアセンブラとPascalじゃなかったけ?
いまは知らんけど、DCC32.EXEとDCC64.EXEのバージョンを見ていれば。
468 :
デフォルトの名無しさん
2015/05/19(火) 12:35:59.90 ID:cxNDOXqM
>>465-466 時間関係については、1時間に1回NTPで時刻合わせをし
さらにサーバ側でファイルを準備するのに要する時間(タイムラグ)を
20分毎にチェックしてる
これで4年間24時間稼働で大きな問題が発生したことがなかったんだけど
唯一、不意に時計が1秒ズレることは想定してなかった
このままだと1秒未来のファイルを取得しようとして404が返され続け
受信待機モードに突入してしまう
まあ次のNTP時刻合わせかタイムラグのチェックで
アクセスが再開されるハズなんだけどね
何も対策しないか、または1秒スキップを実装するか思案中…
469 :
デフォルトの名無しさん
2015/05/19(火) 13:16:19.35 ID:3g7U5jk4
あほか
404返ったら1秒前のファイル取得しに行って成功するまで繰り返したらいいだけだろうが
空想上のシステムの話延々してんじゃねーよ
470 :
デフォルトの名無しさん
2015/05/19(火) 16:41:42.93 ID:cxNDOXqM
>>469 はいはい、これで終わりに
過疎ってたんで話題作りをしようとして失敗…
471 :
デフォルトの名無しさん
2015/05/19(火) 17:34:35.11 ID:dfXN5rKm
だから問題の検出と対処が甘いと言ってるのに
悪いのはシステムでも閏秒でもない、作った奴の頭だよ
472 :
デフォルトの名無しさん
2015/05/20(水) 19:50:21.51 ID:cq+z8NSF
単純にファイルが無いと返ってきたら
エラーリスト作るようにして手動選択するようにしておく方が無難だと思う。
リトライなんか繰り返せばトラフィックの増大を招く
だいたい
>>468 インターネット経路の不具合まで考慮してないだろ
プロバイダのサーバーメンテナンス対処まで想定してない
473 :
デフォルトの名無しさん
2015/05/20(水) 20:36:27.77 ID:/QeGOjrc
ま、勝手にアクセスして取得してるんじゃなければ先方に最新ファイルのパス返すAPI用意してもらったら解決するんだけどな
1秒単位でうんたらかんたら滑稽で面白かったよ
474 :
デフォルトの名無しさん
2015/05/20(水) 23:35:06.50 ID:p+5MLCZz
>>473 >勝手にアクセスして取得してるんじゃなければ
あくまで仮想の話だけど、あるサイトでブラウザのスクリプトで
1秒ごとに更新されるライブ画像を勝手にDelphiで取得するって感じ
だから相手側の仕様は変更できない
ただ、うるう秒の画像が作成されるかどうかは問い合わせ中
(たぶん返事はないと思うけど...)
>>472 >手動選択するようにしておく
手動はちょっと,,,あくまでも自動で24時間稼動が目標
自動で取得して内容を解析して必要であればメールやTwitterで通知するてな感じ
アクセス関連のエラー処理は、連続すると一定時間の待機モードに入るくらい
あと経験上「エラー # 10054」でIndyコンポーネントの解放と再作成くらいかな
>リトライなんか繰り返せばトラフィックの増大を招く
そもそもサーバ側で画像作成のタイムラグにムラがあり404が頻繁に返ってきて
そのつどリトライしてる。あまりよくないかも
...というような空想上のお話でした
475 :
デフォルトの名無しさん
2015/05/27(水) 00:32:46.53 ID:2f3Xax6L
図書館相手にやって訴えられてた人が過去にいたような気がする
岡崎市中央図書館 DDoS でググレ
476 :
デフォルトの名無しさん
2015/05/27(水) 09:50:23.44 ID:CvkNf1si
これか
インターネット関連会社社長を偽計業務妨害容疑で逮捕
477 :
デフォルトの名無しさん
2015/05/27(水) 12:33:59.69 ID:1MKsBI6k
>>475 たぶんその点は大丈夫だと思う
基本的にサイトのJavaScriptがやってるのと同じことを
Delphiでやってるだけだから
一応UserAgentもブラウザのそれを偽装してるし
AccsessLogからは区別つかないんじゃないかと
まあ2ちゃんのレスをスクレイピングしてるのと同じになるけど
478 :
デフォルトの名無しさん
2015/05/27(水) 19:05:48.71 ID:KmILJd1c
で、犯罪自慢が超初心者スレに何の関係があるのかね
日記ならblogでも書いてて
479 :
デフォルトの名無しさん
2015/05/28(木) 08:56:12.29 ID:lTJ9ybFp
犯罪といえばスクレイピングを利用した2ちゃんブラウザは違法?
まだ完成してないけど、公開は無理っぽいな
480 :
デフォルトの名無しさん
2015/05/28(木) 09:33:52.18 ID:uibzkFZp
FireMonkey製?
481 :
デフォルトの名無しさん
2015/05/28(木) 15:27:49.39 ID:zmLLqKSm
>>478 超初心者スレって、Delphiにまだ初心者とかいるのかよ
いまからDelphi始めようってヤツがいるとは思えん
482 :
デフォルトの名無しさん
2015/05/28(木) 19:23:04.93 ID:J5HkuDss
初心者が居ない事とスレの私物化は別の話じゃね
483 :
デフォルトの名無しさん
2015/05/28(木) 19:36:50.75 ID:7UIURsa0
個人開発者はどんどん切り捨てられてる方向だもんな
いまさら他に移れないって既存ユーザーだけだよこんな言語使うの
俺とか
484 :
デフォルトの名無しさん
2015/05/28(木) 19:40:02.61 ID:zmLLqKSm
このスレッドは役目を終え自然消滅ってのが
Delphiらしくていいかもよ
485 :
デフォルトの名無しさん
2015/05/28(木) 20:28:31.42 ID:J5HkuDss
最近の人材と言うと期待の新人mci君くらいか
486 :
デフォルトの名無しさん
2015/05/29(金) 01:39:43.25 ID:WAdW4ckX
>>482 誰が私物してるかは君が決めるようなことではないし、もちろん俺が決めるようなことでもないよ
487 :
デフォルトの名無しさん
2015/05/29(金) 03:46:49.51 ID:L49W7SVG
>>486 じゃーなんでレスしてくるんだ
絡んでくるなうっとうしい
488 :
デフォルトの名無しさん
2015/05/29(金) 09:24:24.95 ID:afFe7JZE
初心者がいなくなって書き込みなく
今の状態になってるわけだし
もうDelphi雑談スレでいいんじゃね
489 :
デフォルトの名無しさん
2015/05/29(金) 20:29:05.74 ID:oG5YEpH7
賛成
490 :
デフォルトの名無しさん
2015/05/29(金) 20:40:27.88 ID:pze1A8wU
反対
491 :
デフォルトの名無しさん
2015/05/30(土) 12:15:47.57 ID:W+p1KcuV
賛成
492 :
デフォルトの名無しさん
2015/05/30(土) 14:36:38.59 ID:DFemmOMd
反対
493 :
デフォルトの名無しさん
2015/05/30(土) 19:19:38.15 ID:8Y+BDL/7
賛成
494 :
デフォルトの名無しさん
2015/05/30(土) 19:37:50.33 ID:t3OV6mY3
反対
495 :
デフォルトの名無しさん
2015/05/30(土) 19:56:26.76 ID:11GwlVd6
そろそろ天才バカボンが出てくる頃
496 :
デフォルトの名無しさん
2015/06/09(火) 14:41:19.86 ID:gxDOHbH5
Win32MinorVersionの値がおかしくない?
Win7で「1」が返るのは当然として
Win8.1で何で「2」が返るの?「3」でしょ?
Win10でも「4」でなくて「2」が返ってくるけど...
Win32MinorVersionの値は今じゃ使っちゃいけないの?
497 :
デフォルトの名無しさん
2015/06/09(火) 15:39:14.65 ID:GtxyERWs
Win8 -> 6.2
Win 8.1 -> 6.3
ただし manifest ファイルでターゲットが 8.1 になっていないと 6.2 を返す
といった OS側の仕様
498 :
デフォルトの名無しさん
2015/06/09(火) 17:10:47.59 ID:gxDOHbH5
すばやいレス、ありがとう
OSの仕様...Manifestファイル...やったことないよ
面倒だからレジストリのCurrentVersionを直接読もうとしたけど
Win10がWin8.1と同じ「6.3」だった...使えないね
499 :
デフォルトの名無しさん
2015/06/09(火) 18:11:34.07 ID:GtxyERWs
NTDLL.dll の RtlGetVersion API 使うとか?
500 :
デフォルトの名無しさん
2015/06/09(火) 20:21:36.25 ID:7gCw2o2W
501 :
デフォルトの名無しさん
2015/06/09(火) 23:28:07.95 ID:Pk6nZQeL
>>500 ウィルス対策ソフトって簡単なコードだと誤検知しやすいよなぁ
502 :
デフォルトの名無しさん
2015/06/09(火) 23:38:29.91 ID:7gCw2o2W
よくよく見ると、Win10のレジストリにはCurrentVersionだけじゃなく
CurrentMajorVersionとCurrentMinorVersionが新規追加されてた
CurrentVersionはWin8.1もWin10も「6.3」だけど、これで何とか
Win10を識別できる
お騒がせしました
503 :
デフォルトの名無しさん
2015/06/10(水) 00:59:03.32 ID:TSVZ1CSh
xe7がまだ買えるみたいだけど8とどっち買った方が良い?
今使ってるのはdelphi7
自営なんだけど趣味レベルで各種台帳をdelphiで作って使ってた
やっとPCが壊れてくれてWin8.1乗ったの買うことになったしこの際ソフトも新しくしようかと
504 :
デフォルトの名無しさん
2015/06/10(水) 02:50:34.12 ID:hEQsgYCI
505 :
デフォルトの名無しさん
2015/06/10(水) 03:31:53.51 ID:72crpT3h
506 :
デフォルトの名無しさん
2015/06/10(水) 05:29:04.66 ID:hLwt1ITz
関数一覧は、ヘルプからどんなkeywordで検索を掛けると取得できますか?
507 :
デフォルトの名無しさん
2015/06/10(水) 10:24:25.09 ID:hCjcWzb9
>>506 「言語ガイド」で検索して「標準ルーチンと入出力」とか?
508 :
デフォルトの名無しさん
2015/06/10(水) 15:18:42.17 ID:gD0ljluG
509 :
デフォルトの名無しさん
2015/06/16(火) 13:28:36.72 ID:anWK7IEN
(1) 関数が何もエクスポートされていない偽のUXTHEME.DLLを用意する。
↓
(2) Delphi7以降で作られたEXEと同じフォルダに(1)の偽DLLをコピーする。
↓
(3) Windowsの設定をクラシック表示(ビジュアルスタイル無効)にする。
↓
(4) (2)のEXEを起動すると偽DLLがロードされてエラーになる。
これはVCLの脆弱性なんだろうか?
510 :
デフォルトの名無しさん
2015/06/16(火) 17:56:11.01 ID:qOgIsb4N
511 :
デフォルトの名無しさん
2015/06/18(木) 20:11:23.19 ID:J7LjV+L7
Delphi2010のWebBrorkerで作ったCGIが
WindowsServer2012のIIS8.0で動きません。
エラー内容
HTTP Error 502.2 - Bad Gateway
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are "".
Windows8.1のIIS8.5では正常に動くのですが…。
Delphi2010はWindowsServer2012は対象外なので、
XE8でコンパイルすれば動くなら買おうかとも思うのですが、
同じく対象外のwindows8.1で動いているので他に原因があるのかと思いまして。
心当たりのある方は小さなことでも構いませんので情報くださいませんでしょうか。
よろしくお願いいたします。
512 :
デフォルトの名無しさん
2015/06/19(金) 02:43:29.92 ID:0SDkXTXK
513 :
デフォルトの名無しさん
2015/06/19(金) 03:27:49.83 ID:TZ3wG+/R
>>512 返信有難うございます。
今も悪戦苦闘しておりました。
明日やってみます!
514 :
511
2015/06/19(金) 12:45:07.75 ID:TZ3wG+/R
XE8のトライアル版でコンパイルしてみましたが症状変わりませんでした…。
IISの設定は
・ISAPIおよびCGIの制限
特定できないCGIモジュールを許可するにチェック
・「ハンドラーマッピング」
「要求パス」に*.exeを入力、「モジュール」でCgiModule
「要求の制限」のアクセスで実行にチェック
「機能のアクセス許可の編集」で読み取り、スクリプト、実行にチェック
これでwindows8.1の方は正常に動作するのですが、
WindowsServer2012の方だと502.2エラーが出ます。
WS2012でもphpは動いているので、動的コンテンツがブロックされてる訳ではなさそうです。
どなたか引き続きアドバイスをいただけないでしょうか。
よろしくお願いいたします。
515 :
514
2015/06/19(金) 16:46:32.00 ID:TZ3wG+/R
IISを入れ直したら正常に動作するようになりました。
原因は分からないままですがお騒がせいたしました。
ありがとうございました。
516 :
デフォルトの名無しさん
2015/06/20(土) 10:37:56.53 ID:tZA3acIo
>>515 ところで515さんのようなWebBrorkerを使う案件って
データベースはなにをつかってるんですか?
MS SQL ? Oracle?
517 :
デフォルトの名無しさん
2015/06/23(火) 00:12:41.31 ID:NML1KMn+
>>516 遅くなり申し訳ありません。
以前はSQL Serverを使ってましたが、今はMySQL使ってます。
518 :
デフォルトの名無しさん
2015/07/02(木) 14:43:56.34 ID:+/7j9h1j
Win7Pro 64bitにDelphiXE5ProをインストールしてIDEは普通に起動したんですが
ヘルプを開こうとすると
C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\Help\Doc\rad.HxS
が開けないというエラーが出てExplorerで確認するとDoc以下のフォルダ、ファイルが全く存在しません
インストール時に全てチェックを入れましたし、修復、変更等を行ってもヘルプがインストールされません
インストールはdelphi_xe5_upd2_esd.exeで行いました
XE2等は普通にヘルプが表示されてます
どうすればヘルプが表示されるようになるんでしょうか
519 :
デフォルトの名無しさん
2015/07/02(木) 20:43:35.59 ID:Kkxjwam2
同じ環境ですがヘルプ入ってます。
ただし、Cドライブではなく、ほかのドライブにいれましたが。
520 :
デフォルトの名無しさん
2015/07/09(木) 08:15:33.91 ID:GVeXrL7A
Vcl.MPlayer.TMediaPlayer.Back
なんですが、ヘルプでは
>現在ロードしているメディアのフレーム(フレーム数は Frames プロパティの値で指定)を逆向きに移動します。
>実行時にメディアプレーヤコントロールの[Back]ボタンをクリックすると Back メソッドが呼び出されます。
とありますが、TMediaPlayer.Backについて書いてあるサイトがなく
どうイベントハンドラを書いていいのか悩んでいます。
ヒントだけでもいただけないでしょうか。
521 :
デフォルトの名無しさん
2015/07/09(木) 16:52:50.74 ID:ZmUStMrf
>>520 イベントハンドラを書くって意味が分からないが、
これは Back(); というメンバ関数だよ。
Frames というプロパティがあると思うが、この値分だけバックさせる。
要するに、「メディアプレーヤコントロールの[Back]ボタンをクリックすると Back メソッドが呼び出されます。」というのは
すでに実装されている動作なので開発者がどうこうする必要はない。
また、ユーザによる操作以外のプログラムコードでフレームをバックさせたい場合に
メンバ関数として呼び出すというだけのもの。
522 :
デフォルトの名無しさん
2015/07/11(土) 10:43:06.67 ID:p7I2B+xK
>>521 メンバ関数でしたか!
てっきり、Backイベントが発生した時に適切な処理をイベントハンドラに記述しなければダメだと勘違いしていました。
今入院しているので、退院したもう少しいじってみます。
メソッドという言葉は使い慣れていないので、イベントハンドラと書きました。
523 :
デフォルトの名無しさん
2015/07/11(土) 12:58:55.83 ID:vLxccviD
何というか メソッドとイベントはまるで別物だよ
RADなプログラミングの三種の神器が「プロパティ・メソッド・イベント」
メソッドとイベントを混同するようじゃイカンよ
524 :
デフォルトの名無しさん
2015/07/11(土) 14:51:27.90 ID:p7I2B+xK
バックイベントが発生したときに、イベントハンドラ内に記述し処理するのですね。勘違い
525 :
デフォルトの名無しさん
2015/07/11(土) 15:44:21.79 ID:I/kwhZQl
???
526 :
デフォルトの名無しさん
2015/07/11(土) 17:09:01.36 ID:p7I2B+xK
いい表現が見つからず、申し訳ない。
仰っていることは、十分にわかります。
527 :
デフォルトの名無しさん
2015/07/11(土) 17:15:29.10 ID:k1mQb0bj
使いなれてないからって全く別物の事を自分の好きな単語使って説明してたらただ混乱するだけやで
528 :
デフォルトの名無しさん
2015/07/11(土) 18:14:51.18 ID:p7I2B+xK
エンバカデロのサイトでも、「メソッドいう」と記述がありました
気をつけます。
529 :
デフォルトの名無しさん
2015/07/12(日) 21:36:42.58 ID:9YJ3MVuw
もそっと基礎的なところを固めてから手を広げたほうがえんちゃうん
イベントハンドラの記述をメソッドで行う、のだから。 てかいて通じるのだろうか。
530 :
デフォルトの名無しさん
2015/07/13(月) 03:21:41.16 ID:8HcyD9OM
□begin
begin
begin
■
■からトップレベルのbeginの□までジャンプする方法ないですか
^beginで上方向に検索すればいいんだけど
ショートカットキー一発でやりたい
531 :
デフォルトの名無しさん
2015/07/13(月) 05:01:03.96 ID:BfkmwDKv
最初にprocedureからend;までをイベントハンドラだと、最初に刷り込まれたので、未だに使ってました。
多分、メソッド=イベントハンドラだと思っています。
正直、今現在ではDelphiの言葉についてはじしんがありません。
532 :
デフォルトの名無しさん
2015/07/13(月) 07:19:21.02 ID:R1CnMhyc
だから 自信とか、思うとか そういうのは要らないんですよ。
普通に勉強してくださいと。
533 :
デフォルトの名無しさん
2015/07/13(月) 08:33:26.64 ID:RKSec/An
私はみなさんがリンゴと言っている果物をみかんだと刷り込まれたからリンゴをみかんと言います。
正直果物について自信がありません。
あ、このみかんおいしいですね。
534 :
デフォルトの名無しさん
2015/07/13(月) 12:30:29.80 ID:vgiB2gQ6
mciとかTMediaPlayerとか使う人ってヘンなのが多いのか?
535 :
デフォルトの名無しさん
2015/07/13(月) 12:30:37.52 ID:0Wlkt6vP
>>530 >ショートカットキー一発でやりたい
一発じゃないけど[Shift]+[Ctrl]を押したまま、[↓]または[↑]を二回押すと”□begin”の下の行先頭になる。
536 :
デフォルトの名無しさん
2015/07/14(火) 05:36:17.32 ID:W3BcSDT+
537 :
デフォルトの名無しさん
2015/07/21(火) 18:54:26.14 ID:6X856uCF
ちょっと教えてください。
メインフォームの表示時には通常のアプリと同じだけど
最小化したら、タスクバーではなくタスクトレイに収まるような
アプリを考えています。
どうのようにしたらいいでしょうか?
ちなみに起動時にタスクトレイに常駐するようなアプリは
作ったことがあります。
よろしくお願いします。
538 :
デフォルトの名無しさん
2015/07/21(火) 19:38:28.07 ID:I1qcAsZo
539 :
デフォルトの名無しさん
2015/07/21(火) 20:54:02.04 ID:6X856uCF
>>538 ありがとうございます。
紹介されたリンク先は使えそうです。
ちょっと試してみます。
540 :
デフォルトの名無しさん
2015/07/26(日) 19:25:30.48 ID:UieBf7Yh
いまだにxpで20年近く前の3を使ってるのですが
(10年くらいのブランクがあります)
メインのフォームができて、
別のフォームも作って
メインから別のフォームを開けるようにしたところ
メインのフォームが表示されなくなってしまいました。
実行しようとしても、お互いのDCUファイルが見つからないと出て
2つのフォームのusesの部分を消して実行しようとすると
TF_Mainのリソースが見つかりませんと出て
Application.Runの部分で止まってしまいます。
新しいほうをプロジェクトから削除しても同様です。
どんな情報を提示すればよいのかもわかりませんが
どなたか助けてください。
541 :
デフォルトの名無しさん
2015/07/26(日) 19:33:47.77 ID:UieBf7Yh
追記です。
OS再起動でもだめです。
フォームのソースは開くことができます。
542 :
デフォルトの名無しさん
2015/07/27(月) 07:24:39.83 ID:oEi0vvdH
プロジェクトをつくりなおせばいいんじゃないの?
543 :
デフォルトの名無しさん
2015/07/27(月) 12:34:05.74 ID:YNtRszDc
>>542 そうですね。
丸1日の苦労が水の泡ですが
仕様をを考えたり、わからないことを調べたりしながらなので
作り直しは早くできるかもしれませんので作り直します。
ありがとうございました。
544 :
デフォルトの名無しさん
2015/07/27(月) 14:39:44.05 ID:oEi0vvdH
いやそうじゃなくて、プロジェクトだけ新しくして、フォームや.pasはそのままつかえばいんじゃないのって
545 :
デフォルトの名無しさん
2015/07/27(月) 16:07:35.87 ID:YNtRszDc
>>544 フォームはコードしか表示できないので保存もできないのです。
多分、意味がわかってないです。(~_~)
すでに半分以上復元できましたので、やり直しを続行します。
ありがとうございました。
546 :
デフォルトの名無しさん
2015/07/27(月) 18:08:18.79 ID:oEi0vvdH
意味わからん
547 :
デフォルトの名無しさん
2015/07/27(月) 18:10:36.61 ID:YNtRszDc
>>546 >多分、意味がわかってないです。(~_~)
意味がわかってないのは私ですので。
わかりにくくてすみませんでした。<(_ _)>
548 :
デフォルトの名無しさん
2015/07/27(月) 21:34:36.31 ID:BulrCbZv
「新規プロジェクトを作って丸1日かけてやっていたけど保存しようと思ったら保存できない」ってことやろね。
何かの拍子にIDE自体がハングアップしたりして保存もままならなくなることがあるから保存はこまめに。
549 :
デフォルトの名無しさん
2015/07/27(月) 21:36:07.41 ID:BulrCbZv
OS再起動って言ってるから違うか
550 :
デフォルトの名無しさん
2015/07/28(火) 10:26:08.32 ID:Vieow6Wz
OS再インストルからやり直せ
551 :
デフォルトの名無しさん
2015/08/02(日) 00:10:06.45 ID:zgjqHZO6
ここで聞く内容じゃないかもしれませんが...
標準の画像ビューアの開き方がWindows10で変わった?
以下の方法で表示されません。
ViewerdllPath := 'C:\Windows\system32\shimgvw.dll, ImageView_Fullscreen ';
ShellExecute(Handle, 'OPEN', 'Rundll32.exe', PChar(ViewerdllPath + Filename), nil, SW_SHOWNORMAL);
552 :
551
2015/08/02(日) 01:26:10.46 ID:ubDQk52n
自己レス
単にTiffしか表示しなくなったそうです
553 :
デフォルトの名無しさん
2015/08/07(金) 04:31:43.09 ID:LPv6s8tl
AssignFile/Reset/ReadlnがUTF8対応してないということなので
TFileSteamに変えようと思うんですが
TStringList.LoadFromFileのように一気に読まずに
1行ずつ読んでは捨てという処理を書くのはどうすればいいですか
1文字ずつ処理するといかにも遅そうなので
パフォーマンスと正しさを備えた現実的なサンプルがあったら教えて下さい
554 :
デフォルトの名無しさん
2015/08/07(金) 07:53:28.39 ID:xA/CH6uc
バッファ分だけ読み込んで
(ここのバッファサイズを大きくすればするほど処理速度は上がるはず)、
バッファ内を1文字ずつ走査して1行ずつ(つまり改行コード毎に)処理するだけ
555 :
デフォルトの名無しさん
2015/08/07(金) 11:22:36.40 ID:Rdnksvik
556 :
デフォルトの名無しさん
2015/08/11(火) 12:02:08.87 ID:dwTQlfLr
サブフォームで済みそうなことを回りくどくやってる感じ
557 :
デフォルトの名無しさん
2015/08/20(木) 06:03:04.02 ID:M1fmrvhA
age
558 :
デフォルトの名無しさん
2015/08/28(金) 02:12:55.44 ID:NiCC0xc7
XE8ってダウンロード販売しかないの?
探しても箱売りが見当たらない
559 :
デフォルトの名無しさん
2015/08/29(土) 00:51:46.43 ID:c2IEpnzt
/ ̄\
| |
\_/
|
/  ̄  ̄ \
/ \ / \
/ ⌒ ⌒ \
| (__人__)
\ ` ⌒´ / ☆
/ヽ、--ー、__,-‐´ \─/
/ > ヽ▼●▼<\ ||ー、.
/ ヽ、 \ i |。| |/ ヽ (ニ、`ヽ.
.l ヽ l |。| | r-、y `ニ ノ \
l | |ー─ |  ̄ l `~ヽ_ノ____
/ ̄ ̄ ̄ ̄ヽ-'ヽ--' / /|
.| ̄ ̄ ̄ ̄ ̄ ̄|/| | ̄ ̄ ̄ ̄ ̄ ̄|/| ______
/ ̄オプーナ/|  ̄|__」/_ /| ̄|__,」___ /|
| ̄ ̄ ̄ ̄ ̄|/  ̄/ ̄ ̄ ̄ ̄|/ オプーナ /| / .|
| ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/| /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
560 :
デフォルトの名無しさん
2015/08/30(日) 20:35:16.77 ID:BVBn4Tfo
D7でクイックレポートで帳票を作ってるのですが
合計行を太字にしようと思ってフォントのfsBoldをtrueにしたところ明細行と幅がずれて印刷されてしまいました
太字と細字で同じ幅に印刷するにはどうしたらよいでしょうか
フォントはMS明朝、サイズは9です
561 :
デフォルトの名無しさん
2015/08/31(月) 10:55:53.50 ID:uqC04SBE
その太くなっちゃうところのフォントを幅狭く指定すればいんじゃないの?
562 :
デフォルトの名無しさん
2015/08/31(月) 15:32:05.08 ID:bxTrnW8d
英字フォントだと、Arial とか選択肢はあるんだけどな。
563 :
デフォルトの名無しさん
2015/09/02(水) 11:52:09.27 ID:XqJtKxWs
564 :
デフォルトの名無しさん
2015/09/07(月) 22:17:41.05 ID:EMgF47Fi
XE7の初心者です。Delphiのユニットでは、
unit fForm1;
interface
uses
type
TfForm1 = class(TForm)
end;
var
implementation
のように続きますが、
function func1(); Integerl のような関数ってどこに書けばいいのですか?
function TfForm1.func1(); Integer のような関数ならできるのですが。
565 :
デフォルトの名無しさん
2015/09/07(月) 22:55:44.26 ID:+IqKUlTh
interfaceとimplementationの間のどこかに宣言書いて
implementationの下に実装を書くんだよ
そのユニット内だけでしか使わないのなら
implementationの下の実装だけでもいいけど
566 :
デフォルトの名無しさん
2015/09/09(水) 01:57:05.56 ID:ta87Z7Vf
>>565 ありがとうございます。そうやったつもりなのですがうまく行かなかったことがありました。
いずれにしてもいろいろとやってみます。
567 :
デフォルトの名無しさん
2015/09/23(水) 02:59:54.96 ID:36m/hxCH
#if 1
aaa
bbb
ccc
#else
xxx
yyy
zzz
#endif
に相当するコードってどう書いてますか?
{$define True}
{$ifdef True}
...
などとすれば一応は出来ますが
Trueと言った文字列を自分で定義するのはやや抵抗があります
568 :
デフォルトの名無しさん
2015/09/23(水) 06:52:59.60 ID:8t7tsdKD
{$IF TRUE}
でいいじゃん。
$IFDEF は識別子だけど、$IF はBoolean型の数式。
569 :
デフォルトの名無しさん
2015/09/30(水) 01:15:19.02 ID:OLzxb5Eh
http://stackoverflow.com/questions/25353684/delphi-inline-assembler-and-class-properties function TList.IndexOf(item: Pointer): Integer;
const
FItems = 4; //data offset of FItems
FCount = 8; //data offset of FCount
asm
mov ecx, [eax].FItems //ecx = @FItems
mov eax, [eax].FCount //eax = FCount
dec eax //test zero count!
js @Exit //if count was 0 then exit as -1
@Loop: //repeat
cmp Item, [ecx + eax * 4]
jz @Exit
dec eax
jns @Loop //until eax < 0 (actually -1)
@Exit:
end;
もう知ってると思うがこれやって見たら
3割早くなった
改造は自己責任で
570 :
mci
2015/10/05(月) 01:30:15.80 ID:OUPSZ45I
質問させていただきます。
時間があるときしかコンパイラを使えないので亀のような遅さですが、
TMediaPlayerを断続的にいじっています。
ソフトに早戻しを実装させたいと思っています。
しかしながら、ネットで見ると開始(00:00)から終了をひっくり返せば良いというような
記載が多いのですが、簡単なんでしょうか。
作りたいのは、ひっくり返したりせず、再生しているところから早戻しを実装したいのです。
ひっくり返すと言うことが、どうしてもわからず、制作が止まっています。
ごぞんじな方教えていただけないでしょうか。
571 :
デフォルトの名無しさん
2015/10/05(月) 07:51:10.30 ID:T5zOaBOX
エロAV見るのに必死ですな
572 :
◆rW3tmvmDLc
2015/10/07(水) 10:57:57.64 ID:oOPfl6lR
自分がやりたいことのためにプログラムを書くのは正しいことだと思います。
573 :
デフォルトの名無しさん
2015/10/07(水) 16:09:31.25 ID:4dDmJREv
早戻しなんていう定義のはっきりしない曖昧な言葉を使われてもなぁ
574 :
デフォルトの名無しさん
2015/10/08(木) 15:06:11.21 ID:7RyvGuYX
>>570 もしかしてTMediaPlayerとかMCIを以前からやってる人?
言ってることがイマイチ分からない
575 :
デフォルトの名無しさん
2015/10/08(木) 15:39:53.63 ID:LJMgqcx3
>>570 逆再生のことでしょ?
これは試してみた?
MCIWndPlayReverse
これに再生速度の指定をすれば「早戻し」になるかも
ただし圧縮ファイルとかは無理だと思うよ
576 :
デフォルトの名無しさん
2015/10/09(金) 04:25:22.42 ID:RDNinzJD
どうせ女子アナのパンチラシーンを何度も見たいとかいうしょーもない理由だろ
577 :
デフォルトの名無しさん
2015/10/09(金) 06:15:09.86 ID:Hx1MzhOe
エロを感じる事でアドレナリンを活発させ頭の回転をフルパワーにさせる
ほら、物事が簡単にうまくいく
エロを侮るな
578 :
デフォルトの名無しさん
2015/10/09(金) 07:50:39.26 ID:dfdMVtts
皇太子様はオナニーなどしないよ
579 :
デフォルトの名無しさん
2015/10/10(土) 00:41:48.89 ID:MleMYe9I
そりゃあ幼少の頃から選び放題お相手を用意されてるからな
580 :
デフォルトの名無しさん
2015/10/11(日) 14:59:50.47 ID:pxeswsgK
f
581 :
デフォルトの名無しさん
2015/10/15(木) 01:34:14.89 ID:DALYG89Z
Tを文字列に変換するのってどうやるんでしょうか?
TにはIngeger, String, record, enum, TObjectの派生型が指定される可能性があります
type
TMyData<T> = record
Value: T;
function ToString: String;
end;
{ TMyData<T> }
function TMyData<T>.ToString: String;
var
v: TValue;
begin
v := Value; // ここでエラー
Result := v.ToString;
end;
582 :
デフォルトの名無しさん
2015/10/15(木) 07:40:09.14 ID:rzS7Ss4i
>>581 v := TValue.From<T>(Value);
Result := v.AsString;
583 :
デフォルトの名無しさん(北海道文化放送)
2015/10/19(月) 10:47:01.82 ID:g1cP4j5U
アライグマ ●ascal
584 :
デフォルトの名無しさん
2015/10/20(火) 18:43:27.89 ID:7Xu/Hvmg
Result := Letter.From.Canada:
585 :
デフォルトの名無しさん
2015/10/28(水) 15:16:15.18 ID:NLh+4qfj
Builderスレにも書いたのですが、反応がないのでここにも書かせていただきます。
フリーカーソル無効化アドインのソースが欲しいのですが、HPは消えてしまっていて
移転先もないようです。
どなたか置いてある場所を知りませんでしょうか?
もしくは丸ごとアップロードしてくれる方いらっしゃいませんでしょうか?
586 :
デフォルトの名無しさん
2015/10/30(金) 05:57:39.47 ID:P7tK7Hyz
587 :
デフォルトの名無しさん
2015/10/30(金) 23:10:16.12 ID:fQLi/QkG
「Turbo Delphiではじめる Windowsプログラミング」を購入したので、これから少しやってみます。
毎度、記述方法に引っかかるけど、おもしろいね。
588 :
デフォルトの名無しさん
2015/11/02(月) 23:46:59.36 ID:5v3OQqoU
初心者は買った方がいい本合ったら教えて下さい。
589 :
デフォルトの名無しさん
2015/11/06(金) 12:49:53.04 ID:li/vHeqg
糞がちゃ!ぶつくんか
590 :
デフォルトの名無しさん
2015/11/14(土) 05:36:00.41 ID:FgiZmfcb
Delphiで質問です。
フォームの大きさに応じて、ボタンなどのサイズと上下左右の間隔を
自動で変更するにはどうしたらいいでしょうか。
[akTop,akLeft,akRight,akBottom]ではサイズのみが拡大されてしまします。
上下左右の間隔も合わせて変更する方法を教えて下さい。
やはり、プログラムで書くしかないのでしょうか。
見本があれば、一番助かるのですが。
591 :
デフォルトの名無しさん
2015/11/14(土) 10:26:24.67 ID:b5lzVFy/
どれくらいの比率でとか、いろいろ個別に考慮しないとそういうのはまともにならない。
だからがんばって自分で書いてください
592 :
デフォルトの名無しさん
2015/11/14(土) 10:29:36.37 ID:b5lzVFy/
それで、現実策としては、フォームの伸びに追随して動く部分は最小限にとどめ、
固定レイアウトのメニューバーみたいなものを作って操作系はそこにならべておく。
593 :
デフォルトの名無しさん
2015/11/14(土) 13:18:27.63 ID:FgiZmfcb
>>592 ありがとうございます。
ディスプレイの大きさに合わせて、フォームイメージのまま拡大させようとしましたが、
簡単にはいかないようですね。
サンプルがあれば、それを元に考えようと思いましたが見つかりませんでした。
勉強して出直してきます。
594 :
デフォルトの名無しさん
2015/11/14(土) 15:57:34.38 ID:I9gnSw1h
>>593 Firemonkeyを使うという力業な解決策もあるっちゃある
595 :
デフォルトの名無しさん
2015/11/15(日) 09:49:13.44 ID:XKGv/7w2
>>590 LazarusでいいならAnchorsプロパティでできるよ
596 :
デフォルトの名無しさん
2015/11/15(日) 14:08:44.84 ID:nFSJyDHN
>>595 フォームとボタンを1つずつ設置し、ボタンのAnchorsプロパティで
[akTop,akLeft,akRight,akBottom]を有効にする。
兄弟と書いてあるところを4カ所ともForm1にしたのですが、そのほかの設定がわかりませんでした。
ヒントもらえますでしょうか。
597 :
デフォルトの名無しさん
2015/11/25(水) 11:29:33.36 ID:m8VtSbKg
LabelやPanelの枠線の色を変更するにはどうしたらいいでしょうか。
簡単にできると思っていたのですが、プロパティが見つかりませんでした。
598 :
デフォルトの名無しさん
2015/11/25(水) 20:53:42.58 ID:AK2oaRSh
599 :
デフォルトの名無しさん
2015/11/25(水) 21:19:11.79 ID:ZV3hDDNJ
すみません。わかりました。
600 :
デフォルトの名無しさん
2015/11/26(木) 20:54:38.80 ID:srwkf128
何も配置されていないフォームに、OnCreateで配列からボタンやパネルを配置できましたが、直線だけはコンポーネントがなくできませんでした。
どうしたら良いでしょうか。
ボタンを押せば引くことはできますが、フォーム作成時に描く方法がわからないので教えて下さい。
601 :
デフォルトの名無しさん
2015/11/26(木) 21:21:36.37 ID:fVUJR++W
IDEから実行したのとexeを起動させたので挙動が違う場合があるの仕方ないのかなぁ
602 :
デフォルトの名無しさん
2015/11/26(木) 21:22:51.24 ID:fVUJR++W
>>600 OnCreateでbutton1click(button1)でも走らせたらいいんじゃないかな
603 :
デフォルトの名無しさん
2015/11/26(木) 22:03:07.72 ID:4z9QUoSK
幅1ピクセルのコンポーネントを置けば直線ぽくなる
604 :
デフォルトの名無しさん
2015/11/26(木) 23:00:48.65 ID:sZUWBxz2
>>600 Firemonkeyなら、直線とかもビジュアルコンポーネント化されてるけど、そうゆう話ではないわな。
605 :
デフォルトの名無しさん
2015/11/26(木) 23:35:58.79 ID:CLob+bju
OnPaintで描くのが普通じゃないの?
606 :
600
2015/11/27(金) 00:07:46.44 ID:KR8X/So2
皆様ありがとうございます。
http://mrxray.on.coocan.jp/Delphi/plSamples/160_CreateComponent.htm ↑のリスト4を参考にして、配列にしたデータを元に複数のButton、Shape、Panelを定位置に、FormのOnCreateで配置しました。
同じように直線を引こうとしたところ、コンポーネントがなく、Tpointが使えるかとも思いましたができませんでした。
仕方なく一本一本線を引こうとしたら表示せず、記述か間違っているのかと思いましたが、ボタンのクリックにコピーしたら表示しました。
それで悩んでいるところです。
>>602 他に方法がなければ、これしかありません。
>>603 後に線の色を変えるプログラムなので、コンポーネントが理想ですが、点はさすがに困ります。
>>605 onPaintは生成時のイベントのようです。少し勉強して試してみます。
Lazarusにも慣れてきたので、こちらでもいい方法があれば教えて下さい。
607 :
デフォルトの名無しさん
2015/11/27(金) 08:06:38.77 ID:+LjZnqHF
FormCreate で TPaintBox 作って、TPaintBox の OnPaint で複数線描画
608 :
デフォルトの名無しさん
2015/11/27(金) 08:22:05.22 ID:L3GOKyR7
>>606 OnPaintの認識は間違ってる。
Deliphiが〜以前に、Windowsはイベントドリブンという仕組みで動いている。
イベントというのは、ボタン押したとか、テキストボックスに文字入れたとか、ウインドウ移動させたとか、ウインドウ広げたとか、様々なあらゆる事象。
OnPaint(再描画)もイベントの一つ。
通常、イベントドリブンの世界では、ボタンを押したアクションの中で直接、線などを描画せず、再描画の依頼だけ行う。
そうするとWindowsは、ボタンアクション後に再描画のイベントを発行してくれる。
ので、そこで必要な描画処理を行う。
609 :
デフォルトの名無しさん
2015/11/27(金) 08:22:53.80 ID:L3GOKyR7
>>606 なんで、こんな面倒な作りになっているかといえば、再描画を一箇所に集中できるから。
ウインドウを広げれば、拡大箇所の再描画が必要だし、
覆いかぶせてた別ウインドウをどければ、露わになった所の再描画が必要と言った感じ。
ボタンなり、テキストなりがちゃんと描かれるのは、Delphiが再描画イベント拾ってく、適切な描画を肩代わりしてくれてるから。
ただの線や、点の描画を自動的に肩代わりしてくれるものはないため、自身でOnPaintなどの再描画イベント処理を用意してあげる必要がある。
610 :
デフォルトの名無しさん
2015/11/27(金) 16:19:46.84 ID:3D/pyAVF
Shape とか Bevelとか好きなの貼り付ければいいだけじゃないのかね
611 :
600
2015/11/27(金) 16:35:28.09 ID:KR8X/So2
TPaintBox の OnPaint で、起動時にMoveTo/LineToを使い一本一本線を引くことはできました。
ありがとうございます。
しかし、Tpointの配列から読み込んで線を引くことはできませんでした。自分の勉強不足です。
もうひとつ疑問ができました。
描いた直線を配列に入れ、色を変えたり、太さを変えたりしたいのですがどのように記述したらよいでしょうか。
612 :
デフォルトの名無しさん
2015/11/27(金) 16:38:19.02 ID:q2xZVuCF
>>611 Trecordで自作のレコード型つくってTListに入れてforで回す
613 :
デフォルトの名無しさん
2015/11/27(金) 16:54:19.16 ID:+LjZnqHF
>611
線を書く=オブジェクトを作るわけではないので、
OnPaintで毎回色や太さを指定して描画します。
なんらかのタイミングで色変更したいとき、
データを変更してから TPaintBox の Repaint メソッドを呼ぶと、
次に OnPaintに制御が渡ったときに新たなデータを元に再描画できます。
614 :
デフォルトの名無しさん
2015/11/27(金) 19:21:31.64 ID:KR8X/So2
615 :
デフォルトの名無しさん
2015/12/01(火) 21:11:10.79 ID:4PLnHXc6
よくある購入相談なんだけど、相談というか教えて下さい。
XE2までは購入して趣味でアプリ作っていました。
その後はXCODEでiPadとかのアプリを作っています。
XCODEを使っているのはiOSがバージョンアップした場合、Delphiが対応
してくれるまで何か不都合な事があっても、自分で対処できるスキルが
無いためです。(新しいインターフェイスは当然使えないだろうと言うのもあります。)
実際のところ作るアプリにもよるのは当然なのですが、iOSのバージョンアップがあっても
気にする事は無いでしょうか?
また、iOSに新しいインターフェイスが追加された場合の対応は早いですか?
よろしくお願いします。
616 :
デフォルトの名無しさん
2015/12/02(水) 08:16:06.73 ID:/YfDgiyq
保証なんてなにもないのだから
メリットとデメリットを比較するしかないですな
617 :
デフォルトの名無しさん
2015/12/04(金) 01:33:01.24 ID:bQCoatiO
1つのformにunit1とunit2があるとします。
unit1でボタンクリックしたとき、unit2に書いてある動作をさせたい場合、具体的にどのように書いたら良いのでしょうか。
uses部の記入とグローバル変数はわかったのですが、記述方法がわかりませんでした。
すみませんがよろしくお願いします。
618 :
デフォルトの名無しさん
2015/12/04(金) 01:37:22.91 ID:oYx9yC9o
619 :
デフォルトの名無しさん
2015/12/04(金) 02:28:12.31 ID:bQCoatiO
620 :
デフォルトの名無しさん
2015/12/09(水) 13:08:28.66 ID:xnYz4Woq
617です。
うまく動かなかったので教えてください。
unit1からunit2(Formなし)を呼び出すときの記述方法ですが、次のように書いたらコンパイルではじかれました。
procedure TForm1.Button1Click(Sender: TObject);
begin
Unit2.Tclass.MyProcedure;
end;
usesには登録済で、変数はまだ使っていません。
どのように書いたらいいのでしょうか。
621 :
デフォルトの名無しさん
2015/12/09(水) 13:25:35.42 ID:p41NtaXa
MyProcedureはクラスメソッドとして作ってあるの?
でなくて普通のメソッドならインスタンス参照しないとだめよ?
procedure TForm1.Button1Click(Sender: TObject);
var
AObject: Unit2.TMyClass;
begin
AObject := Unit2.TMyClass.Create;
AObject.MyProcedure;
AObject.Free;
end;
<代案>
・ クラス使うとめんどいからただの手続きを宣言して interface に出しておけばよろし
622 :
デフォルトの名無しさん
2015/12/09(水) 14:18:29.72 ID:1UD8Rg0m
>>617 覚えた単語だけ羅列して意味は全くわかっていないといった感じにしかみえないが・・
Unit1
interface
type
TForm1 = class(TForm)
button1: TButton;
procedure button1Click(Sender: TObject);
implementation
uses Unit2;
Procedure TForm1.Button1Click(Sender: TObject);
begin
MyProcedure;
end;
end.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Unit2
interface
Procedure MyProcedure;
implementation
Procedure MyProcedure;
begin
showmessage('わかっていません');
end;
でいかが?
end;.
623 :
デフォルトの名無しさん
2015/12/09(水) 15:16:35.45 ID:xnYz4Woq
やっと通りました。
ありがとうございました。
624 :
デフォルトの名無しさん
2015/12/09(水) 21:08:54.43 ID:1rD2HLq4
配列にある文字列xxxxから読み込んで
cntl_btn[i].OnClick := xxxx ;
としたいのですが、xxxxの部分を文字列から何に変更したらいいのでしょうか。
625 :
デフォルトの名無しさん
2015/12/09(水) 21:25:59.20 ID:p41NtaXa
イベントハンドラに文字列を代入して何をしたいのかわからないぞ。
ボタンのキャプションを変えたい?
ボタン押したときの動作を変えたい?
ちなみにOnClickという「変数」にはメソッドポインタというものが代入される。
626 :
デフォルトの名無しさん
2015/12/09(水) 23:24:43.96 ID:1rD2HLq4
FormCreateで複数のボタンを配置し、それぞれのOnClick時の動作を書こうと思っています。
配列に入っている文字列から変換して、サイズや位置やCaptionは変更できました。
ボタンごとのイベントを書くにはPrivateにProcedure xxxk(Sender : TObject); を書いておき
cntl_btn[i].OnClick := xxxx ;
とすればいいのかと思いましたが、違っていますか。
見よう見まねでやっているので、根本的に間違っていることが多いと思います。
627 :
デフォルトの名無しさん
2015/12/10(木) 01:30:11.75 ID:5guSwWl6
>>626 (cntl_btn[i] as TButton).OnClick := 関数名;
処理を外したい場合は
nilを代入しる
628 :
デフォルトの名無しさん
2015/12/10(木) 08:11:37.41 ID:kI62GoY6
質問の仕方が悪くて、すみません。
文字列を関数名にできませんか。
629 :
デフォルトの名無しさん
2015/12/10(木) 09:11:05.02 ID:wwtNApqI
if s = 'A' then
func := a
else if s = 'B' then
func := b
else
func:=nil;;
cntl_btn[i].OnClick := func;
もちろん工夫のしようはまだあるが
630 :
デフォルトの名無しさん
2015/12/10(木) 10:22:28.54 ID:kI62GoY6
ありがとうございます。
知識不足なので、少し勉強してやってみます。
631 :
デフォルトの名無しさん
2015/12/10(木) 10:44:25.28 ID:8zBDSjcH
>>626 まあ普通は
>>629 のやり方だろうな
626 は「コンパイラ言語」がどんなものか理解していないのか?
それとも 実行時型情報を使えばできますよね とか言いたいのか?
632 :
デフォルトの名無しさん
2015/12/10(木) 13:48:23.14 ID:XM5FZ8je
んだな もうちっと質問者は素性をさらしなさい。
現状、答えるほうは何をどこまで説明すべきか見当がつかない
633 :
デフォルトの名無しさん
2015/12/10(木) 16:29:29.48 ID:wwtNApqI
まあ関数名の文字列の配列てのを
関数ポインタの配列にするってのが
if で分けるよりオサレかな。
初心者にはやや難だと思うけど。
あとそもそも論として、全てのボタンのクリックを
1つの イベントメソッドで処理して
Sender で分けるという方法もあるよ。どちらかというとこっちが基本的な気がす
634 :
デフォルトの名無しさん
2015/12/17(木) 11:18:51.56 ID:NHJA6O4f
sender理解した時は自分が劇的にレベルアップしたように思えたなぁ
なんかソースがえらいスタイリッシュになったようにも感じた
635 :
デフォルトの名無しさん
2015/12/19(土) 15:35:23.14 ID:KQqEvdxg
いまさらですけど
>>626,628さんのやりたかったことって
ボタン情報の中に押したら何をするかも文字列で指定してあって
XXXXっていう文字列だったらNantokaButtonClickっていうイベントハンドラ、
YYYYならUntaraButtonClickっていうイベントハンドラ、
みたいなのをコンポのFindComponentメソッドみたいなので簡単に取得できないかって思ったのではないかな?
636 :
デフォルトの名無しさん
2015/12/19(土) 18:08:08.69 ID:5Vrldiy2
637 :
デフォルトの名無しさん
2015/12/21(月) 14:32:22.37 ID:LYk+yE40
今時のDelphiだとIntegerやStringの汎用自作ユーティリティ関数ってどうやって作るの?
例えば
function dbl(s: string): string;
begin
result := s + s;
end;
というルーチンを作ったとしたらmystrutilsユニットに関数としてベタ置き?
それとも
class function TMyStrUtil.dbl(s: string): string;
みたいにするんだろうか
638 :
デフォルトの名無しさん
2015/12/21(月) 20:10:04.28 ID:m2l68Wj1
>>637 ユーティリティのような状態を保持するものでなければ、クラスにせず、そのまま関数にすればいいんじゃないのかな
呼び出しは単に
dbl('abc');
でもいいけど、
個人的には文脈を明示したいので、
MyStrUtil.dbl('abc');
と、ユニット名を付けて呼んでる
639 :
デフォルトの名無しさん
2015/12/21(月) 20:15:29.51 ID:m2l68Wj1
>>637 今時だと、class helper (record helper)
ってのがあって、これ使えば
'abc'.dbl()
なことができるんだけど、
一つのクラス(or レコード)にひとつだけという謎の制限があって、そしてStringには標準で用意されてるから、どちらかの使用になってしまう。
知識はXE8レベルで止まってるので、今の最新版なら、もしかして制限なく使えるのかも(未確認)
640 :
デフォルトの名無しさん
2015/12/25(金) 17:56:32.59 ID:XhmFXx0V
TStringHelper を承継すればいいんでない
641 :
デフォルトの名無しさん
2015/12/26(土) 19:21:23.19 ID:KmANSDWN
初心者なので、初歩的な質問です。
A、B、Cの3つのボタンを配置しました。
Aを押下後タイマーで5秒間、BとCのボタンが有効になるプログラムを作成しました。
Aを押しBを続けて押したとき、BのプログラムがWhileでループになっているときは、5秒経っても有効な状態が続き、無効に戻りません。
どうしたらいいでしょうか。ヒントをお願いします。
642 :
デフォルトの名無しさん
2015/12/26(土) 19:33:04.72 ID:MqeDNb2X
whileループの間にApplication.ProcessMessagesして、メッセージキューの
メッセージを処理してやればいんじゃね。
643 :
デフォルトの名無しさん
2015/12/26(土) 19:39:03.90 ID:MqeDNb2X
とりあえず、それでごまかせるけど。、
whileループ内などで時間のかかる処理してそうだけど、
本来重い処理は、UIスレッド以外のスレッドでやるべきだが、
まぁ、初心者で1個ずつ勉強すると思うのでいいかな。
644 :
デフォルトの名無しさん
2015/12/26(土) 19:50:08.66 ID:KmANSDWN
645 :
デフォルトの名無しさん
2015/12/27(日) 08:36:54.18 ID:QBQnSzS+
思うようにできませんでした。
書く方が悪くてすみません。
Aボタンを押しBボタンを押した時のループはそのままで、Aボタンを押した時の有効のみを無効にするにはどうしたらいいでしょうか。
646 :
デフォルトの名無しさん
2015/12/27(日) 09:10:58.27 ID:jPhRiR5A
>>645 Aボタンを押した時の有効?
客観的に読んで意味が通るかどうか確認してから出直してください
647 :
デフォルトの名無しさん
2015/12/27(日) 10:18:08.33 ID:QBQnSzS+
A、B、Cのボタンを配置し、Aボタンを押してから5秒間はBとCのボタン有効となります。この間AボタンはTrueです。5秒経過したらFalseに戻ります。
Bボタンにはwhileのプログラムがあります。
Cボタンにはwhileから出るように書きました。
Aボタンを押し(True)、Bボタンを押しwhileでループ状態の時に、5秒経過した時AボタンがTrueのままでFalseになりません。
Bボタンのwhileのループそのままにしておきたいです。
どうしたらいいでしょうか。
648 :
デフォルトの名無しさん
2015/12/27(日) 10:51:52.71 ID:Z0Ljne1u
>>647 解A
>>642 で提示されたProcessMessagesを使う。
組み方によっては、まれに予期せぬタイミングでイベント処理が走ったりするので、個人的には使用していない。
解B
>>643 で提示されたTTheadによるマルチスレッドプログラミング。
今のプログラミングスキルでは、手が出ないと思うので、そうゆうものがあるんだということだけ知っておけばいい。
649 :
デフォルトの名無しさん
2015/12/27(日) 10:59:44.67 ID:Z0Ljne1u
解C
今の仕様と大体同じ動きになるよう、少し変える。
ボタンBではループを回すのではなく、別のTTimerを用意し、このタイマーを有効にする(だけ)。
このタイマーは、たとえば10msecごとに走るようにさせておく。
タイマーでは、ボタンBのwhileループ内の処理を実行させる。
ボタンCは、タイマーを無効にする。
仕様として書かれてないけど、ボタンAによる5sec有効にするのもTTimer使ってるんだよね?
650 :
デフォルトの名無しさん
2015/12/27(日) 11:17:05.97 ID:QBQnSzS+
わかりやすい解説ありがとうございます。
自分で調べた限りでは解Bしか見つからなかったのでお聞きしました。
解Aについては途中で止まるとキリが悪い場合が多いのでやめておきます。
TTimerを使っていますが、他に拾ったfunctionでも試しました。どちらも一緒でした。
解Cのタイマーをもう一つ使う方法でやってみたいと思います。
651 :
デフォルトの名無しさん
2015/12/28(月) 12:13:25.56 ID:JRVstwcs
Delphiのスレッドは激烈に簡単だから素直に使うのがよいよ。
アドバイスとしてはFreeOnTerminateはFalseにした方が解りやすい。
652 :
デフォルトの名無しさん
2015/12/28(月) 15:40:35.50 ID:EuCUuVkC
スレッドの使い方というより概念じゃね。
653 :
デフォルトの名無しさん
2015/12/28(月) 17:41:51.27 ID:HV8yB6/i
私は
>>647のAボタンがTrueだFalseだってなんだかわかりませんでした。
Enableなら逆ですから違うでしょうし。
654 :
デフォルトの名無しさん
2015/12/28(月) 18:27:50.72 ID:EkhIv31L
Application.Run;
WaitForSingleObject(hMutex, INFINITE);//Add
ReleaseMutex(hMutex);//Add
CloseHandle(hMutex);
ね
655 :
デフォルトの名無しさん
2015/12/28(月) 18:45:41.37 ID:5QfwlvfY
たぶん「Aボタンを押したよフラグ」じゃね?
656 :
デフォルトの名無しさん
2015/12/28(月) 23:52:55.43 ID:ohzvoXMA
古いdelphi使っているんですが、線を自由に扱えるコンポーネントってどこかにないでしょうか。
Tshapeの拡張のようなもので・・・
斜めに線を引いたりしたいのですが、手間だけならいいんだけどPaintはうまく扱えなくて。
657 :
デフォルトの名無しさん
2015/12/29(火) 00:59:21.79 ID:OiHqV0A4
よく分からない
TCanvasクラスのLineToメソッドを使うだけじゃダメなのか?
658 :
デフォルトの名無しさん
2015/12/29(火) 05:08:35.67 ID:Ze5OR/Vr
フォームにTPaintBoxを貼り付けて、OnPaintイベントで下記記述
これで斜めの線が引ける
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
ACanvas: TCanvas;
ABox: TPaintBox;
begin
ABox := TPaintBox(Sender);
ACanvas := ABox.Canvas;
ACanvas.MoveTo( 0, 0 );
ACanvas.LineTo( ABox.Width, ABox.Height );
end;
659 :
デフォルトの名無しさん
2015/12/29(火) 08:47:07.94 ID:syg3MIXg
>>657、658
ありがとうございます。
動かしたり、拡大したり、色を変えたりしようと思ったのでShapeになっていれば簡単でいいなと思ったのです。
新しいDelphiには画面を見る限りあるようでうらやましい。
660 :
デフォルトの名無しさん
2015/12/29(火) 11:38:56.28 ID:QWNCs/UP
>>655 なるほど!ありがとうございます。
自分が想像していた仕様で間違いなかったようです。
私はアクションオブジェクトを使って作ってみたのですが
ループにApplication.ProcessMessagesを入れてもアクションの更新をやってくれなくて(Sleep関数を挟んでも駄目)
仕方なくあまり推奨されていないらしいApplication.HandleMessageを使いましたが、
意外と難しい問題ですね。
661 :
デフォルトの名無しさん
2015/12/29(火) 12:24:32.77 ID:LJEXLuG5
>>659 イベント処理が激烈に簡単なDelphiでマウス操作に反応させるのは思うほど難しくないよ
662 :
デフォルトの名無しさん
2015/12/29(火) 18:22:31.20 ID:OiHqV0A4
>>660 抽象的だから難しく思えるだけで詳細が分かれば以外に簡単に実装できる問題かもよ
質問者の言っている「ボタンBのwhileループ」が何をしているのかさっぱりだし
663 :
デフォルトの名無しさん
2015/12/29(火) 22:47:24.26 ID:JQMybb+y
>>662 多分、ボタンBのイベントハンドラ内でwhilw文による無限ループさせている。
ボタンCを押した際のループ脱出(のためのフラグ更新)と、5sec後にタイマーが働いてボタンB、CのEnabledをfalseにしたいができないという事象だと思う。
なぜ上手くいかないかは、まずはイベントループがどうゆうものか理解する必要があるだろうねー。
664 :
デフォルトの名無しさん
2015/12/30(水) 01:17:21.54 ID:COQOhRKf
>>663 そういう話じゃなくてさ
whileループの中身次第ではマルチスレッドで簡単に問題が解決する事もあるし
逆にマルチスレッドにすることで面倒ごとが増える事もあるってこと
665 :
デフォルトの名無しさん
2015/12/30(水) 10:25:21.34 ID:ATnqSLca
ユーザーインターフェースのためにマルチスレッド使う必然性はまあないね
どうしても使いたくなったら、それは頭冷やして考え直すべし
666 :
デフォルトの名無しさん
2015/12/30(水) 13:01:38.38 ID:JlgYQswX
いや、長時間かかる処理をユーザーインターフェースの走っているメインスレッドから分離するために
スレッドを使うのは一般的だろう
そうじゃないと、定期的にメッセージループを回すとかいう変なことをしないといけなくなるし
そもそも、長時間ブロックする処理が外部ライブラリの物で自分で手を入れられない場合は
メッセージループを挟みこむことは出来ないしね
667 :
デフォルトの名無しさん
2015/12/30(水) 13:05:44.16 ID:JlgYQswX
長時間かかる処理が複数裏で走る状況まで考えると
スレッドじゃないと対応できないしね
668 :
デフォルトの名無しさん
2015/12/30(水) 13:32:11.47 ID:COQOhRKf
>>665はユーザインターフェースを操作するためにマルチスレッドを使うって勘違いしてるんじゃね?
あー「5sec後に」ってのをマルチスレッドからって意味ね
「5sec後にタイマー」はTTimerwいいんだけど
同期のためにSynchronizeメソッドを使うのかTEventを使うのかとか
もしかしたら同期の必要ないかもしれないし
whileループの中身を見ない事にはなんとも言えんのよね
あとあとのことを考えればTEventのような同期用のクラスなどを使うほうが良いのだけど
669 :
デフォルトの名無しさん
2015/12/30(水) 15:38:22.49 ID:0VbomsRq
>>666 だな。だから俺は
>>643でごまかしと書いたんだけど。
個人的にはメッセージループ回すとかこんなかっこ悪いことはしない。
670 :
デフォルトの名無しさん
2015/12/30(水) 18:32:38.42 ID:ATnqSLca
お、なんか俺変なこと書いたみたいだ。
長時間かかる処理(戻ってこない)ってのが、例えばTIdHttp.GETとかだと、
スレッド生成して中でコンポも生成して取りに行かせて自動破棄みたいなことはやるわね。
じゃないとUI待ちぼうけになるから。
671 :
デフォルトの名無しさん
2015/12/31(木) 17:39:19.71 ID:ln3GLloq
ボタンの有効無効を制御するだけだろ 逆に何が難しいの?
ループしてるところで5秒経過したかどうか見て、ボタンを変更して、
Application.ProcessMessages; でメインスレッド(UIスレッド)へ反映させるだけ。
別にワーカースレッドやタイマーを使わなくてもできる
672 :
デフォルトの名無しさん
2016/01/01(金) 19:57:00.05 ID:FI4s3RQJ
673 :
デフォルトの名無しさん
2016/01/03(日) 23:42:37.80 ID:t9viIWsz
>>574 そうですよー。
早戻しだの、巻き戻しとか逆再生なんていう方言が
あって困ってました。
やりたいことはMCISendStringを使った逆再生です。
>>575 MCIWndPlayReverse というモノを初めて知りました。
解説サイトの記事を読んでいますがまだ消化できていないです。
こんなメソッドを作りましたが、全く反応せず。
procedure TForm1.RevBtnClick(Sender: TObject);
begin
MCISendString(PChar('Play MyMusic from" + Time_Now_str + "to 0'), nil, 0, 0);
end;
なんていうメソッドを書いたけど、ぴくりとも動かない
674 :
デフォルトの名無しさん
2016/01/04(月) 06:10:08.58 ID:cT/GtyDD
>>673 MCIについては知らんが…、相変わらずトンチンカンなコードに見える。
'Play MyMusic from
675 :
デフォルトの名無しさん
2016/01/04(月) 06:14:31.33 ID:cT/GtyDD
>>673 なぜかレスがうまく書き込まれないな。
'Play MyMusic from" + Time_Now_str + "to 0'
って、
'Play MyMusic from ' + Time_Now_str + ' to 0'
と書くんじゃないの??
676 :
デフォルトの名無しさん
2016/01/04(月) 20:16:42.71 ID:oGVcsEOc
>>673 PChar()のカッコ内には文字列を指定するんだけど、今回のケースだと
文字列定数、文字列変数、文字列定数を連結してるわけだから
PChar('文字列定数' + ' ' + 文字列変数 + ' ' + '文字列定数') // ' ' はスペース
つまりPChar('文字列定数 ' + 文字列変数 + ' 文字列定数')となるね
もし文字列変数の内容が「100」だったら
'Play MyMusic from 100 to 0'となる
MCISendStringで使う前に、連結した文字列をEditBoxかなんかで確認したら?
677 :
デフォルトの名無しさん
2016/01/09(土) 20:26:33.66 ID:0Blsqsqy
>>575 いろいろ調べたところ、現在MCIで巻き戻しをするのは
MCIWndPlayReverse一択のようです。
ただ使いこなすには難しい…
>>674-676 文字列の連結は「'」ですね
基本的なことがわかっていないようです。
オフィシャルコースウエアーを回せるくらい勉強してから出直してきます。
程度の低い質問に親身に回答くださった皆様ありがとうございました。
678 :
デフォルトの名無しさん
2016/01/18(月) 18:54:00.45 ID:q568FwPB
まだあんまり分かってない悪寒...
679 :
デフォルトの名無しさん
2016/01/19(火) 22:53:03.86 ID:IcS/cevq
TWebBrowserにOnClickイベントを実装できます?
680 :
デフォルトの名無しさん
2016/01/19(火) 23:19:11.79 ID:xgzpw25o
>>679 タグのイベントのことか?
JSスクリプトで実装のことか
いろいろある
681 :
デフォルトの名無しさん
2016/01/19(火) 23:46:31.40 ID:IcS/cevq
>>680 とりあえず普通のコントロールみたいに、
TWebBrowserの任意の場所をクリックすると
発火するイベントを考えてるんだけど
やっぱ Application.OnMessageとかを使うのかな…
682 :
デフォルトの名無しさん
2016/02/05(金) 23:55:30.31 ID:4GwLuKx3
今のDelphiでローカルなデータベースアプリが作れるエディションって何?
683 :
デフォルトの名無しさん
2016/02/06(土) 12:10:10.87 ID:BlYk2woR
むしろデータベースも作れないような言語なんてクソかと
684 :
682
2016/02/06(土) 12:52:12.75 ID:G80761G7
>>683 ありがとう。
一番安いやつでもいいってこと?
昔、XE2でサンプルのフィッシュファクトリーが動かなかったから
高いやつじゃないといけないと思ってたわ。
設定とかインストールの不足とかそんなことだったのかな。
685 :
デフォルトの名無しさん
2016/02/07(日) 00:16:50.15 ID:nbXlpazC
サンプルプログラムが動かないのは昔から
686 :
デフォルトの名無しさん
2016/02/08(月) 07:49:43.51 ID:stcXIyTr
例えばファイヤーバードをフリーのコンポーネントから操作するのに
エディションとか関係なくね?
そのコンポーネントのリドミにエディションの制限ありますとか書いてるあるならともかく
687 :
682
2016/02/15(月) 17:11:05.73 ID:Ro0zGm/g
>>682です。
ネットで調べながらmysqlやinterbaseを使った簡単なプログラムを作ってみました。
今度は配布の方法に関してググって見たら、paradoxとかなら実行ファイルに組み込まれるので
実行ファイルを入れるだけで良いという記事を見ました。
しかし、今はparadoxは使えないような事が書かれていたと思います。
今のDelphiで実行ファイルだけ配ればいいデータベースを利用したソフトって出来るのでしょうか?
名前的にBDEexpressコンポーネントを使うのかなと思ったりしているのですが、
どなたか教えて下さい。
よろしくお願いします。
688 :
デフォルトの名無しさん
2016/02/15(月) 18:38:13.00 ID:thLB9bN/
689 :
デフォルトの名無しさん
2016/02/16(火) 07:54:11.29 ID:J/lYtu+3
sqliteはDLL必要じゃね?
ところでDLL配るのが嫌なのはなぜなの?
690 :
デフォルトの名無しさん
2016/02/16(火) 08:27:25.56 ID:WDTOiQP/
691 :
682
2016/02/16(火) 12:37:57.10 ID:HTyWWZ6v
>>689 レス、ありがとうございます。
DLLを配るのはいやでは無いです。
データベースとかの経験がそんなに無いので、配る時にデータベースの設定をどうすれば
良いのかが分かってないのです。
インストーラーを使った配布とかも経験が無いので、実行ファイルだけで何とかならないかなと
思いました。
DLLぐらいなら実行ファイルと同じところに置けば良いので配布に関してはちょっとホッとしています。
>>688,690
ありがとうございます。
環境をきちんと書いていなくて失礼しました。
取り敢えず、昔手に入れたXE2Proで試していました。
今の物はデータベースの取扱が楽になっているのですね。
iOSとかアンドロイドアプリとかも作ってみたいので、今のDelphiを買ってもらうように
交渉しようと思います。
692 :
デフォルトの名無しさん
2016/02/16(火) 21:38:14.69 ID:3EenvshT
>>691 簡単なものであれば、Lazarusでできるよ。
693 :
682
2016/02/18(木) 07:39:33.10 ID:HLdxN5GW
>>692 今のdelphiが買ってもらえない時には良い選択かもしれないですね。
面白そうなので調べてみます。
694 :
デフォルトの名無しさん
2016/02/18(木) 08:25:28.06 ID:tL26uhzz
LazarusのTDBFコンポーネントいいですね
695 :
682
2016/02/20(土) 09:10:45.00 ID:Rukm7JjZ
スレチかもですがSQLiteでの検索について教えて下さい。
SQLite3SDWという郵便番号を検索するサンプルプログラムを参考に勉強して
います。
例えば「北海道札幌市中央区」内の郵便番号を検索するために
「北海道札幌市中央」を検索すると検索結果が出てくるのですが、
「北海道札幌市中央区」を検索すると検索結果が0になってしまいます。
サンプルに付いていたexeファイルでは検索は正常に行われるみたいです。
私はXE2を使っているのですが、サンプルはDel7で作成されたと言う事が
原因なのか、検索文字列を作成するプログラムが以下のようになっているのですが、
procedure TForm1.LabeledEdit1Change(Sender: TObject);
begin
//WHERE区以降を引数にクエリする
Query('[ADDRESS] LIKE ' + AnsiQuotedStr(
'%' + UTF8Encode(LabeledEdit1.Text) + '%', ''''));
end;
文字化けするので
//WHERE区以降を引数にクエリする
Query('[ADDRESS] LIKE ' + '"%' + LabeledEdit1.Text + '%"');
と変更しました。
わかりにくい文章ですが、よろしくお願いします。
696 :
デフォルトの名無しさん
2016/02/20(土) 11:40:09.18 ID:pJLUzjZq
そのQuery関数の引数UTF16版のバグとか
697 :
デフォルトの名無しさん
2016/02/20(土) 11:45:57.24 ID:JGJupeT1
>>695 Query関数のコード張ると心優しいアニキが丁重に検分してくれるかも
698 :
デフォルトの名無しさん
2016/02/20(土) 15:02:48.58 ID:y5DkVsaD
>>695 サンプルのほうは末尾の 区 を除いて検索する仕組みになっているとかじゃないの?
699 :
682
2016/02/20(土) 22:02:59.83 ID:Rukm7JjZ
682です。
>>696,697,698さん、レスありがとうございます。
一応、検出する部分のプログラムを載せます。
郵便番号のデータファイルはCVS形式になっていて、データベースに読む込む時は各行の
郵便番号と住所の部分をそれぞれUTF8Encodeで文字コードを変換してからデータベースに
登録しています。
サンプルの作者さんはDel7で作成していて、サンプルに付属しているexeファイルの実行では
きちんと検出しているようなので、SQLiteの文字コードとXE2で扱っている文字コードの違い
かとも思ったのですが、私にその辺の知識が乏しいのでよく分からない現状です。
後、サンプルに元々付いていたSQLite3.dllとかSQLite3.pasとかは新しいものに
入れ替えてもやってみました。
検出する部分を貼り付けたら改行が多いと言われたので、次のレスに貼り付けます。
700 :
682
2016/02/20(土) 22:04:05.15 ID:Rukm7JjZ
データを検出する部分のプログラムです。
procedure TForm1.Query(Filter: string);
var
SQLIteTable: TSQLIteTable; p: PPostRec; sql: string; StartTime: Cardinal;
begin
sql := 'SELECT * FROM POST_TABLE';
//引数Filterが空文字以外の場合はWHERE句を追加
if Filter <> '' then sql := sql + ' WHERE ' + Filter;
SQLIteTable := SQLiteDB.GetTable(sql);
with SQLIteTable do begin
MoveFirst;
while not EOF do begin
New(p);
//カラム名からデータを取得(どちらの方法でも可)
p^.PostCode := FieldByName['POST_CODE'];
p^.Address := FieldByName['ADDRESS'];
VirtualList.Add(p);
Next;
end;
end;
SQLIteTable.Free;
Memo1.Lines.Add('クエリ時間 = ' +
IntToStr(GetTickCount - StartTime) + 'ms');
ListView1.Refresh;
end;
よろしくお願いします。
701 :
デフォルトの名無しさん
2016/02/21(日) 02:48:11.91 ID:SOC2rxum
UTF8EncodeしたものをAnsiQuotedStrに変換してるのが怪しい
Del7とXE2じゃ内部の文字コードが違うしサンプルはXE用のを使うべき
702 :
デフォルトの名無しさん
2016/02/22(月) 19:25:20.00 ID:vt3UepaW
最大化表示している時に、5秒ほど中央にメッセージを出して、自動で消すにはどうしたらいいでしょうか。
別のフォームを使わないで方法でお願いします。
703 :
デフォルトの名無しさん
2016/02/22(月) 19:56:55.04 ID:vt3UepaW
704 :
デフォルトの名無しさん
2016/02/22(月) 22:26:15.49 ID:tkDvxAgm
705 :
デフォルトの名無しさん
2016/02/22(月) 22:59:32.58 ID:vt3UepaW
>>704 同じフォームでラベルのコンポーネントを使えばいいかなあと思ったけど、
もっと良い方法ありますか。
タイマーは普通に使えます。
706 :
デフォルトの名無しさん
2016/02/23(火) 00:56:12.89 ID:kTjtRXGT
何故別フォームが不可なのかが知りたい
私は汎用のものを作って使い回してる
707 :
デフォルトの名無しさん
2016/02/23(火) 07:20:16.00 ID:c2hGYtyS
>>706 プログラムが出来上がったら、Lazarusに持って行ってandroidに移植するため。
最初からLazarusでもいいんだけど、delphiが使いやすいから。
少し前にLazarusでandroid用のプログラム作ったけど、フォーム2を出したら落ちたので使えないんだなあと理解して、その時はshowmessageで代用しました。
708 :
デフォルトの名無しさん
2016/02/23(火) 21:29:42.87 ID:kTjtRXGT
>>707 なるほどありがとう
ではAndroid前提で考えなくてはダメだね
709 :
デフォルトの名無しさん
2016/02/24(水) 08:11:32.11 ID:4eLJNqm5
TFrameがいいんじゃね、というかTFrame使いこなせると格が上がる
710 :
デフォルトの名無しさん
2016/02/28(日) 23:59:07.84 ID:InVmzmEV
すいませんまた戻ってきました。わかりにくいかもしれませんが、ご容赦ください。
今、Sent toを使ってあらかじめ用意してある(sound.wav)のPathの中のデータを
自アプリ(play.exe)のフォルダーの中の全*.wavをTListBoxに登録したいと思っています。
平たく言えば、sound.wavフォルダの全曲をTlistBoxに登録したいと思っています。
そのときにsound.wavのPathだけを取り出すにはどうしたら良いのでしょうか?
色々サンプルを見ましたが、今ひとつ理解できませんでした。
711 :
デフォルトの名無しさん
2016/02/29(月) 00:27:15.15 ID:p78yg5pZ
712 :
デフォルトの名無しさん
2016/02/29(月) 00:52:44.06 ID:V1sgFk5L
>>710 sound.wavが認識できてるんだったらextractfilepathでパス取得してファイルリスト作ったら?
713 :
デフォルトの名無しさん
2016/02/29(月) 22:24:14.35 ID:fJy+bu65
Memoコンポーネントにファイルから文字列を読み込むとき、
その読み込んだ文字列の文字エンコーディングを知る方法ってありますか?
指定したエンコーディングで読み込みするなら
LoadFromFileでTEncodingを使えばいいんだけど
TEncodingを使わずに読み込んだ場合どのエンコーディングで読み込まれた分からないので
714 :
デフォルトの名無しさん
2016/03/01(火) 00:48:26.01 ID:STXfPEF4
715 :
デフォルトの名無しさん
2016/03/01(火) 11:33:34.41 ID:qhPgejHD
D7のクイックレポートで質問です
DBを読んで文字列を加工してQRLabelで表示しているのですが
文字列が長くなるとWordWrapをFalseにしてもスペースが入っているとそこでワードラップしてしまうんですが
回避する方法は無いでしょうか
716 :
デフォルトの名無しさん
2016/03/01(火) 14:57:52.88 ID:kxTlYCaO
短い文字列に直す、切る
長い文字列が入るように幅を広げる
717 :
デフォルトの名無しさん
2016/03/01(火) 22:01:09.42 ID:JR+xocUM
>>714 やっぱりそうなのか、ありがとう
というかコンポーネント自体、BOM付きしか判定できないんだね
残念w
718 :
デフォルトの名無しさん
2016/03/09(水) 06:16:51.50 ID:GyhvYdaD
sqlのjoinってTableコンポーネントだとプロパティーで設定出来たと思うんだけど、
SQLコンポーネントでもプロパティーで出来る?
719 :
デフォルトの名無しさん
2016/03/09(水) 07:16:50.94 ID:GyhvYdaD
自己解決しました。
sqlの中のプロパティー項目にsql文を書くんですね
720 :
デフォルトの名無しさん
2016/03/11(金) 13:05:23.11 ID:LCMEr9N2
DBLookupComboBoxでプログラムから値を選択する方法を教えて下さい。
販売員テーブルとDBLookupComboBoxをつなげて、商品が売れた時に売った販売員
の名前を選んで売り上げテーブルに登録したいのですが、同じ販売員が続く時に
いちいち選ばず、前回の販売員を選んだ状態にしたいのですが、売り上げテーブルの
レコードには販売員のフィールドが未入力で記録されてしまいます。
新しいレコードをInsertする前にKeyValueを記録して於いて、その値を戻すプログラムを
書いたのですが、DBLookupComboBoxには同じ販売員が表示されるのですがPostしても
販売員のフィールドが記録されません。
よろしくお願いします。
721 :
デフォルトの名無しさん
2016/03/19(土) 12:07:09.74 ID:iBhvH1Di
722 :
デフォルトの名無しさん
2016/05/01(日) 11:33:42.30 ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
2
723 :
デフォルトの名無しさん
2016/05/05(木) 22:27:13.42 ID:36jmcY8o
すみません、どなかたわかる方いましたら教えて頂きたいのですが、
CopyFileの指定先がCドラ直下やその下のUsersディレクトリ、あるいはWindowsディレクトリだとうまくコピーできません。
おそらくアクセス権限の問題かとおもうのですが、これをプログラム側からうまく回避する方法はありませんでしょうか。
コード自体はネットで検索して拾ったものを使用しており、同一ディレクトリ内でのコピーは成功を確認しています。
よろしくお願いします。
procedure TForm1.Button1Click(Sender: TObject);
var
stSourceFileName,
stNewFileName: String;
bUwagaki: Boolean;
begin
stSourceFileName := 'project1.exe';
stNewFileName := 'project2.exe';
bUwagaki := True; //trueの場合上書き
//ファイル名がstringのままではまずいのでPCharにキャスト
CopyFile(PChar(stSourceFileName), PChar(stNewFileName), bUwagaki);
//B.TXTが新規作成されるもしくは上書きされる。
//bUwagaki := falseの場合は上書きされない
end;
724 :
デフォルトの名無しさん
2016/05/05(木) 22:27:59.53 ID:36jmcY8o
あれ
725 :
デフォルトの名無しさん
2016/05/06(金) 03:16:17.83 ID:h+mGutxw
>>723 無えよ
素直に管理者権限で実行するかUAC切れ。
726 :
デフォルトの名無しさん
2016/05/06(金) 04:28:05.85 ID:lRUCvSYd
>>723 管理者権限取得以外でそんな方法があったらウィルス作りまくれるね!
727 :
デフォルトの名無しさん
2016/05/06(金) 16:31:52.54 ID:usR1nMJy
手順
1. 管理者に電話をする。
2. 「Administrator のパスワードを教えてください」と言う。
3. 教えて貰う。
4. 教えてもらったパスワードで Administrator でログインする。
5. 終了。
728 :
デフォルトの名無しさん
2016/05/06(金) 18:28:45.62 ID:BaBl7bJ7
Administrator より上の権限が
マイクロソフト作ったよね
Win10アップデートアレ
729 :
デフォルトの名無しさん
2016/05/06(金) 19:42:46.76 ID:1wpbVe7a
まずは日本語を勉強してきてください
730 :
デフォルトの名無しさん
2016/05/07(土) 21:02:29.44 ID:716gPTT/
D&Dの練習してます。
731 :
デフォルトの名無しさん
2016/05/07(土) 21:05:21.25 ID:716gPTT/
再度
D&Dの練習してます。以下の例なんですが
procedure TForm1.FilesDropped(var Msg1:TWMDropFiles);
var
FNameSize: UINT;
Count : UINT;
FileName : array[0..255] of Char;
FileName1: string;
Filename2: TStringDynArray;
path : string;
ext : string;
SearchPattern: string;
Option: TSearchOption;
begin
FileName1 := '';
SearchPattern := '*.wav';
try
Count := DragQueryFile(Msg1.Drop, $FFFFFFFF, nil, 0 );// A
if Count > 1 then Abort; // B
FNameSize := DragQueryFile(Msg1.Drop, 0, nil, 0) + 1; // C
DragQueryFile(Msg1.Drop, 0, FileName, FNameSize); // D
Filename1 := StrPas(FileName); // E
finally
DragFinish(Msg1.Drop); // F
end;
if FileName1 = '' then Exit;
Label1.Caption := Filename1;
Label2.Caption := ExtractFileExt(FileName);//拡張子の抜き出し
732 :
その2
2016/05/07(土) 21:05:52.42 ID:716gPTT/
//以下3つUsesに[System.IOUtils]が必要
ext := TPath.GetFileName(FileName);//ファイル名+拡張し=ファイル名取得
Label4.Caption := TPath.GetFileNameWithoutExtension(FileName);//ファイルベース名取得
path := TPath.GetDirectoryName(Filename);//ファイルパスのみ
FileName2 := TDirectory.GetFiles(Path, SearchPattern, Option);
for FileName1 in FileName2 do
ListBox1.Items.Add(FileName);
{
//以下3つUsesに[System.IOUtils]が必要
Label3.Caption := TPath.GetFileName(FileName);//ファイル名+拡張し=ファイル名取得
Label4.Caption := TPath.GetFileNameWithoutExtension(FileName);//ファイルベース名取得
Label5.Caption := TPath.GetDirectoryName(Filename);//ファイルパスのみ
FileName2 := TDirectory.GetFiles(Path, SearchPattern, Option);
for FileName1 in FileName2 do
ListBox1.Items.Add(FileName);
}
end; 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
733 :
デフォルトの名無しさん
2016/05/08(日) 08:08:08.78 ID:+fH0DJNW
質問を書き出す前に力尽きたか・・・
734 :
デフォルトの名無しさん
2016/05/08(日) 09:10:26.96 ID:qyXQwLE2
ご冥福をお祈りいたします
735 :
その2
2016/05/09(月) 21:11:21.01 ID:Qo5Cc5Se
読みにくくてすみません。
今やっていることは、
1.D&Dのベースはできています。
2.試験的にターゲットファイルはD:\test\に01.wabから05..wavを用います。
3.例えば、D:\test\03.wavをアプリに送ったときに、D:\test\内のファイルをListBoxに列挙したいと考えています
4.で、03.wavから再生したいと考えています。
毎回Item数が変わりますが、例えば01.wavから05.wavをListboxに乗せるにはどうしたらいいでしょうか。
736 :
デフォルトの名無しさん
2016/05/10(火) 02:23:45.49 ID:PQdS7XQu
>>735 ExtractFilePathでPath取得してそのPathのファイルリスト作ってTListBoxの追加
簡単だね
737 :
デフォルトの名無しさん
2016/05/10(火) 07:39:58.07 ID:a3o7D6VB
ほらよ
var Canceled : boolean;
function GetFileList( const dir: string; const AList: TStrings ):Int64;
var SearchRec: TSearchRec; FName: string; ChildList: TStringList; i: integer;
begin
Result := 0; AList.BeginUpdate; ChildList := TStringList.Create;
try
if SysUtils.FindFirst( dir + '\*.*', faAnyFile, SearchRec) = 0 then begin
repeat Application.ProcessMessages;
FName := SearchRec.Name;
if(FName <> '..') and (FName <> '.')and ((SearchRec.Attr and faSysFile) = 0)then begin
if (SearchRec.Attr and faDirectory) <> 0 then begin
ChildList.Append( dir +'\'+ FName );
end else begin
AList.Append( dir +'\'+ FName ); // ファイル名の追加
Result := Result + SearchRec.Size; // ファイルサイズ積算
end;
end;
until Canceled or (SysUtils.FindNext(SearchRec) <> 0);
SysUtils.FindClose(SearchRec);
for i := 0 to ChildList.Count-1 do begin
Result := Result + GetFileList( ChildList[i], AList ); // 再帰呼び出し
end;
end;
finally
ChildList.Free; AList.EndUpdate;
end;
end;
738 :
デフォルトの名無しさん
2016/05/10(火) 11:57:29.37 ID:Us+jRb/i
739 :
デフォルトの名無しさん
2016/05/11(水) 07:56:21.85 ID:dFlNvgk/
簡単だけどカプセル化されすぎてて分かり難いな
740 :
デフォルトの名無しさん
2016/05/12(木) 19:09:02.19 ID:vLGiJkKo
D2010使用です。別に困っているとかではないんですが、
case i of
0:
{A}
else
{B}
end;
こういう構文がある時、{A}に複数行を書く時はbegin〜endで囲わないとコンパイルが通りませんが、{B}の場合はbegin〜endがなくても、複数行を実行してくれます。
手元にD6があったので、そっちでも見てみましたが、やはり同様でした。
なんか不思議な感じがします。これはこういう言語仕様なんですかね。
もしかするとbegin〜endを省略すると、あるいは思わぬ動作になったりするようなケースがあったりするんでしょうか。
741 :
デフォルトの名無しさん
2016/05/12(木) 20:36:34.99 ID:9jJznfEG
話せば長い。 ていうかそういうもんだ。
囲いが多すぎて損な事は無いから、迷ったら囲ってしまえばよろし。
742 :
デフォルトの名無しさん
2016/05/13(金) 12:04:23.39 ID:3dFGm1A8
postgresだとUnidacとfiredacどっちがオススメ?
743 :
デフォルトの名無しさん
2016/05/13(金) 16:25:56.01 ID:3whH8IBa
procedure Hoge;
begin
end;
procedure Hoge;
begin
begin
これでもエラーに生らない
end;
end;
無駄にbegin...end;つけてもOk 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
744 :
デフォルトの名無しさん
2016/05/18(水) 17:20:06.51 ID:TzWGaFrU
745 :
デフォルトの名無しさん
2016/05/18(水) 21:01:47.00 ID:vTiu5Aou
746 :
デフォルトの名無しさん
2016/05/18(水) 23:15:20.09 ID:cwN+DZm8
>>744 Meryが「鬼車は更新終わってる」っつって鬼雲に変更したよ
DelphiならSkRegExpが安心だと思うんだが
747 :
デフォルトの名無しさん
2016/05/19(木) 13:55:37.54 ID:872X0lK5
SkRegExpこちらはいまだにサポートしてるよ
俺はこれ
748 :
デフォルトの名無しさん
2016/05/19(木) 20:18:15.72 ID:SWOq2P4E
>>745 ありがとうございます
不正なコンパイル指令はカットするにしても
UInt64が7からなので6では動かないみたいですね
これInt64に置換しちゃっても大丈夫かなあ…?チェックは通ったけど
>>746-747 どうもありがとうございます
正規表現とは別にDLLを内包して呼ぶ処理自体にもちょっと興味あったので
749 :
デフォルトの名無しさん
2016/05/20(金) 08:11:46.02 ID:1+xmSaS4
750 :
デフォルトの名無しさん
2016/05/21(土) 20:19:28.92 ID:Fy3ocvuN
>>749 遅くなりましたがどうもありがとうございます
このverのBTMemoryModule.pasで完璧に期待通りの動作ができました
サンプルコードも大変参考になりました
751 :
デフォルトの名無しさん
2016/05/22(日) 12:56:05.54 ID:hixVeZgP
質問です。
任意のテキストファイルを原稿用紙換算して出力するソフトを造ろうと思っています。
原稿用紙換算する際、テキストファイルを一旦読み込んでから指定した行数、字数(ここでは20×20と仮定する)に併せて文章を整形する必要があるかと思います。
この文書整形はどのようにすればよろしいでしょうか。
また、この際に注意点として禁則処理がございます。
(行頭に。、」等の文字があれば前の行に挿入して換算)
どなたかわかる方、よろしくお願い致します。
752 :
デフォルトの名無しさん
2016/05/22(日) 12:59:52.63 ID:hixVeZgP
追記
更に、半角文字(いわゆる1バイト文字)は複数あればまとめて2字で2バイト文字を1文字扱い等の複雑な処理が相まってよくわかりません。。
よろしくお願いします。
753 :
デフォルトの名無しさん
2016/05/22(日) 18:12:04.08 ID:mZzaPIk+
>>751 Delphiのバージョンがわからないと答えられません
754 :
デフォルトの名無しさん
2016/05/22(日) 18:20:16.05 ID:hixVeZgP
>>753 失礼しました
Delphi 10 一番最新の奴です。
755 :
デフォルトの名無しさん
2016/05/22(日) 20:15:02.67 ID:mZzaPIk+
756 :
デフォルトの名無しさん
2016/05/22(日) 22:04:40.11 ID:hixVeZgP
>>755 確認しました。とてもお早い回答ありがとうございます!
また、おかげさまで私の頭の中で描いていた構想に誤りがあったことにも気づけました。
ご回答頂きましたように、行数さえ返ってくればあとは指定文字数(縦)で割ってやれば簡単に原稿用紙換算できるのですね。
これはこれで別途の処理を考えておりました。浅はかでした……。
助かりました。ありがとうございます。
757 :
デフォルトの名無しさん
2016/05/22(日) 22:42:33.27 ID:hixVeZgP
758 :
デフォルトの名無しさん
2016/05/23(月) 00:16:14.43 ID:hOhRC23v
>>757 サンプルコードは作ってくれてるんだから考え方はわかるでしょ
自分でちょっとは直す努力してみようよ
759 :
デフォルトの名無しさん
2016/05/23(月) 22:38:31.90 ID:3OTG5cqL
>>758 確かに、仰るとおりです。
が、今日一日やってみたのですが、そもそも何が原因でこうなっているのかすらわからない状況です。
入れるテキストを変えたらその度に発生箇所が変わってしまうもので……。
なんとか修正お願いできないでしょうか。
よろしくお願い致します……。
760 :
デフォルトの名無しさん
2016/05/24(火) 13:10:41.66 ID:G6gM/ppI
せっかく速攻でプログラム組んでくれた
>>755に不具合があるとか失礼ですよ。
そもそも後出ししてきた原稿用紙カウンターとやらに問題があるという事はないのですか?
(後出しせずに最初から原稿用紙カウンターと同じものが欲しいと言うべき)
Delphiの方は今は行数しか分からないので文字数も分かるようにしてから
文章を1行ずつ比較していけば解決するのではないでしょうか?
761 :
デフォルトの名無しさん
2016/05/24(火) 15:39:56.43 ID:/JuCEpgr
if (count > LineCount) then begin
を
if (count >= LineCount) then begin
に変更。
また、
for Line := 0 to Length(Source[i]) - 1 do begin
は
for Line := Low(Source[i]) to High(Source[i]) do begin
で、NEXTGENと非NEXTGENの両対応。
762 :
デフォルトの名無しさん
2016/05/24(火) 17:43:38.65 ID:LxCEVO/X
>>760 >>(後出しせずに最初から原稿用紙カウンターと同じものが欲しいと言うべき)
最初にそう言った方がコミュニケーションを取る上でより適切でした。申し訳ございません。
>>761 大変ありがとうございます。
一点、大変申し訳ないのですが判明したことがございまして、
for Line := Low(Source[i]) to High(Source[i]) do beginに変えるとのことでしたが、実際にやってみるとちょうど1行分(20字)を入力すると繰り上がって+1されて返されることがわかりました。
なので、
for Line := Low(Source[i]) to High(Source[i]) -1 do begin
に更なる変更をしたら解決しました。
とはいえ、解決に至ったのも
>>761のレスありきのことです。この度は大変ありがとうございました。
763 :
デフォルトの名無しさん
2016/05/24(火) 19:05:39.12 ID:bV3xzOZD
755だけど、次からはソースじゃなくて考え方だけレスするようにすんわ
764 :
デフォルトの名無しさん
2016/06/04(土) 12:30:04.01 ID:WtpsF5pD
アンドロイドアプリで、ハード本体のバックキーを押したときの処理を書き換えるのはどうすればいいでしょう?
delphi10の試用版を使っております。よろしくお願いします。
765 :
デフォルトの名無しさん
2016/06/04(土) 12:53:42.55 ID:FH4y2UEb
766 :
デフォルトの名無しさん
2016/06/04(土) 13:13:15.14 ID:WtpsF5pD
>>765 どうもハード側の(おおもとの?)バックキーイベント実行時に処理されるActivityの終了が優先されるようで、
そのコードをDelphiのFormKeyUpイベントに放り込んでもアプリケーションの終了が先に処理されてしまうのです・・
767 :
デフォルトの名無しさん
2016/06/04(土) 13:32:11.27 ID:WtpsF5pD
768 :
デフォルトの名無しさん
2016/06/04(土) 20:44:02.22 ID:D5zbfmAz
769 :
デフォルトの名無しさん
2016/06/04(土) 22:18:38.56 ID:/HBbRSC7
770 :
デフォルトの名無しさん
2016/06/15(水) 05:56:31.73 ID:o/oXAYFV
いまさらなんですけど
Delphi 7でコンポーネント登録でバグ発見
procedure Register; //これは大丈夫
procedure register; //これは不完全、コンポーネントパレットに表示されない
implementation
procedure Register;
begin
RegisterComponents('hogehoge', [Thogehoge]);
end;
「interfaceの側」
Registerを始めの文字Rを大文字後すべて小文字にするとこと
違反するとコンポーネントが登録できない
これで昨日一日潰れました
771 :
デフォルトの名無しさん
2016/06/15(水) 14:22:30.40 ID:42nP9Qvw
それ、ずっと前からだよ。ようは仕様?なんじゃ。
772 :
デフォルトの名無しさん
2016/06/15(水) 14:30:44.04 ID:PbA7IUpd
770 名前:デフォルトの名無しさん[sage] 投稿日:2016/06/15(水) 05:56:31.73 ID:o/oXAYFV
いまさらなんですけど
Delphi 7でコンポーネント登録でバグ発見
procedure Register; //これは大丈夫
procedure register; //これは不完全、コンポーネントパレットに表示されない
implementation
procedure Register;
begin
RegisterComponents('hogehoge', [Thogehoge]);
end;
「interfaceの側」
Registerを始めの文字Rを大文字後すべて小文字にするとこと
違反するとコンポーネントが登録できない
これで昨日一日潰れました
773 :
デフォルトの名無しさん
2016/06/15(水) 17:12:28.23 ID:kL+cXctC
RegisterComponentsなんちゃらは命令というよりは名詞だからでは?
774 :
デフォルトの名無しさん
2016/06/15(水) 20:37:11.95 ID:/NGH0hwJ
775 :
デフォルトの名無しさん
2016/06/16(木) 00:08:56.04 ID:i+cSVxUf
770です
みなさんありがとうございました
776 :
デフォルトの名無しさん
2016/06/20(月) 22:59:01.43 ID:KjBManTa
Windows7 Delphi7 で OpenDialog とかの InitialDir の効きが
悪いんだけどどーして?
777 :
デフォルトの名無しさん
2016/06/20(月) 23:13:55.29 ID:zCqa71v0
>>776 OpenDialog.Execute実行前にOpenDialog.Filename := ''で
FileNameをいったん空にしてあげればどう?
778 :
デフォルトの名無しさん
2016/06/21(火) 22:19:48.04 ID:jw3l7UCA
>>777 やってみたんだけどダメだった
手動で変更できるからイマイチやる気になれないんだけど
なんか気持ち悪い・・・
779 :
デフォルトの名無しさん
2016/06/21(火) 22:55:17.19 ID:eNphgVn8
Vistaあたりから挙動が変更されて、
アプリケーションごとにユーザが最後に選んだディレクトリを覚えてて
それを優先するような動きに変わったんじゃなかったっけ?
ここのlpstrInitialDirの説明に一応ルールが載ってるけど
なんかバージョンごとにコロコロ変えてて面倒くさいぞ
https://msdn.microsoft.com/en-us/library/ms646839 とりあえず現状ではInitialDirを空にして、
FileNameに初期ディレクトリを含むパスを設定しとけばいいのかね
780 :
デフォルトの名無しさん
2016/06/22(水) 05:41:23.25 ID:76a6dc6R
D6にIndy10を入れてコンポは使えるようになったのだけど、Helpが出てこない。
どうやったらF1押して出るhelpを使えるようになるのか、誰か教えてけれ〜
781 :
デフォルトの名無しさん
2016/06/22(水) 12:15:37.64 ID:nIvGsx6O
ヘルプ(H)→カスタマイズ(Z)...
F1は[リンク]タブだっけ
Personalの人はどうすんだっけ?
.ohc/.ohi/.ohl直接編集だっけ?
782 :
デフォルトの名無しさん
2016/06/22(水) 14:32:18.52 ID:76a6dc6R
D6のIndyは 標準添付の日本語ヘルプを生かしておけばそのまま使えちゃうんだけど
当然内容が古いので肝心なときに役立たず、Indy10の英語ヘルプを何とかして
使いたいんですわぁあ
783 :
デフォルトの名無しさん
2016/06/22(水) 22:31:12.91 ID:ss4OWnOA
>>779 情報センキュー
今日試したら FileName が最強みたいだったけど
ファイル名必須なのが難点だけど
適当に入れておkとしたw
784 :
デフォルトの名無しさん
2016/06/22(水) 23:06:28.27 ID:TTPiaDaE
適当と言うかマスク使えば? D:\path\*.ext
最初からすべてのファイル表示なら D:\path\*.* でもいけるし
こういう指定もできたはず D:\path\*.ext1;*.ext2
785 :
デフォルトの名無しさん
2016/06/23(木) 08:54:03.39 ID:DVqVDFIK
>>782 カスタマイズってところに INDY10.hlpをDnDできるんだが、中身はまともに表示されないし
F1も効かない。
D6のhelpと形式が違うのかね?
うーん
786 :
デフォルトの名無しさん
2016/06/23(木) 22:52:26.28 ID:97Cy3xic
>>784 ファイル名欄は空白にしたいんだけど
c:\timko\*.* としたらファイル名に *.* て出るんだけど
拡張子は別のプロパティで指定してる(なんか勘違いしてる?俺)
787 :
デフォルトの名無しさん
2016/06/23(木) 23:25:42.30 ID:euG2n2JI
>>786 >ファイル名欄は空白にしたいんだけど
それは無理
マスクが入ったファイル名だと選択(=開く)できないので(絞込み表示になるだけ)
適当なファイル名を入れるよりはいい(=誤爆防止)って理由
ファイル名(マスク)での拡張子の指定はプログラムでFilterIndexを指定しても
ファイル名(マスク)の拡張子が優先されちゃうので
目的の拡張子(FilterIndexで指定するフィルターと同じ)に合わせるって意味
788 :
デフォルトの名無しさん
2016/06/24(金) 22:44:25.53 ID:rWKZoQ/O
>>787 あーそういう意味か(なんとなく分かったでござる)
適当って書いたけど *.* 指定してた
(なんとなくそう指定しただけだけど別の意味で適当?)
789 :
デフォルトの名無しさん
2016/06/25(土) 19:21:02.20 ID:tsYLIeFm
ポップアップメニューの横セパレータは
キャプションに「-」を入れれば良いみたいですが、
縦セパレータはどうすればよいのでしょう?
790 :
デフォルトの名無しさん
2016/06/25(土) 20:50:48.38 ID:BF7Un0B0
>>789 TMenuItem(メニューの項目)にBreakってプロパティがあるはず
791 :
デフォルトの名無しさん
2016/06/30(木) 17:38:03.86 ID:14c6SgOI
質問です。
「TPanelの上にTStringGridが乗ったカスタムコンポーネント」を作りたいとします。
この場合、TPanelをメインのクラスにして、クラス内でTStringGridを生成する方法は上手くいったのですが、
これだとStringGridにアクセスしようとする時、いちいち
MyPanel1.MyStringGrid.Cells[1,1] := 〜〜〜
~~~~~~~~~
と記述する必要があります。
できれば「TStringGridの派生型コンポーネント」として、下記のように使いたいです。
MyStringGrid1.Cells[1,1] := 〜〜〜;// 通常のTStringGridと同じ使い方
MyStringGrid1.Label1.Caption := 〜〜〜;// パネルに乗せた任意のVCLの操作
そこで、TMyStringGridをメインのクラスとして、このクラス内でTPanelを生成する方法を試みたのですが、
おそらくParentの設定の関係で、実行はできても、最後にフォームを閉じる時にエラーとなってしまいます。
フォーム側のOnDestroyやOnCloseQueryで
MyStringGrid1.Free;
などとインスタンスを破棄する記述をすればエラーは出なくなるのですが、なんだかスッキリしないので、
FormのOnDestroyやOnCloseQueryではなく、TMyStringGridクラス内で何か良い記述があれば知りたいです。
ちなみに、MyStringGrid1.Parent := Form1;とした時にクラス内で生成したパネルに乗せたいので、SetParentをオーバーライドして、
procedure TMyStringGrid.SetParent(AParent: TWinControl);
begin
Self.MyPanel.Parent := AParent;
AParent := Self.MyPanel;
inherited;
end;
としています。よろしくお願いします。
792 :
デフォルトの名無しさん
2016/07/01(金) 08:41:10.57 ID:y+C8T8WM
まあいろいろやれば出来なくなくはないんだけど、お勧めは「新しいコンポは作らない」
だ。
すまんな。
793 :
デフォルトの名無しさん
2016/07/01(金) 16:47:21.32 ID:ZtgRnNdO
>>791 もしプログラムの中で文字列グリッドとラベルが1つずつしかないなら無理して一体化させる意味はないと思います。
いちいちタイプするのがいやならwith文を使うか、別な変数に格納してください。
◆with文の例1
with MyPanel1 do
begin
MyStringGrid.Cells[1, 1] := 'なんとか〜';
MyStringGrid.Cells[2, 1] := 'かんとか〜';
end;
◆with文の例2
with MyPanel1.MyStringGrid do
begin
Cells[1, 1] := 'なんとか〜';
Cells[2, 1] := 'かんとか〜';
end;
◆別な変数を使う例
var
もしそうでなければLabeledEditというラベルを舎弟にしているエディットコンポをまねて
ラベルを舎弟にした文字列グリッドクラスをよさそうですね。
グリッドとその見出しを表示させるラベルを
794 :
デフォルトの名無しさん
2016/07/01(金) 16:49:49.87 ID:ZtgRnNdO
むむ、編集中に間違って投稿してしまいました。
>>791 もしプログラムの中で文字列グリッドとラベルが1つずつしかないなら無理して一体化させる意味はないと思います。
いちいちタイプするのが嫌、またはいちいちそういう記述にするのが嫌ということでしたらwith文を使うか、別な変数に格納してください。
◆with文の例1
with MyPanel1 do
begin
MyStringGrid.Cells[1, 1] := 'なんとか〜';
MyStringGrid.Cells[2, 1] := 'かんとか〜';
end;
◆with文の例2
with MyPanel1.MyStringGrid do
begin
Cells[1, 1] := 'なんとか〜';
Cells[2, 1] := 'かんとか〜';
end;
◆別な変数を使う例
var
sg: TStringGrid;
(中略)
sg := MyPanel.StringGrid;
sg.Cells[1, 1] := 'なんとか〜';
sg.Cells[2, 1] := 'かんとか〜';
795 :
デフォルトの名無しさん
2016/07/01(金) 16:51:11.68 ID:ZtgRnNdO
LabeledEditみたいにラベルコンポを舎弟にするやり方もできますが
ちょっと長いのとVCLのソースコードのコピペになってしまうのでここには貼りません。
796 :
791
2016/07/02(土) 21:01:11.31 ID:3A9Y8wY1
>>792,793-795
やはり、簡単に、というわけにはいかないのですね。
ありがとうございました。
797 :
デフォルトの名無しさん
2016/07/06(水) 07:33:44.87 ID:/9bisM4Q
798 :
デフォルトの名無しさん
2016/07/06(水) 15:12:09.76 ID:+8tJoflb
>>797 調べてみましたがおそらくサンプルが間違っていて、 pTheme.Free がないのは正しいが
> pTheme := ThemeServices.Create;
が間違いだと思われます。これを
> pTheme := ThemeServices;
に変更すれば正しく動くと思います。
799 :
デフォルトの名無しさん
2016/07/07(木) 06:51:16.66 ID:QtYfsTMm
>>798 ということは直接
ThemeServices.GetElementDetails(BtnTheme);
とかでよさげですね。
ありがとうございました。
800 :
デフォルトの名無しさん
2016/07/07(木) 13:28:02.21 ID:X/9U6Swt
Delphi2009ですが、
procedure A;
procedure B;
begin
(略)
end;
begin
(略)
(無名メソッドC)
(略)
end
無名メソッドCから、procedure Bを呼び出そうとしても、
「E2555 シンボル 'B' を取得できません」というエラーメッセージが出て
コンパイルが通りません。
これは、そういうもんでしょうか?
801 :
デフォルトの名無しさん
2016/07/07(木) 15:02:19.35 ID:Ype5m4b4
こんなのはどう?
|type
| TProc = reference to procedure;
|procedure A;
|var
| X: TProc;
|begin
| X := procedure
| procedure B;
| begin
| end;
| begin
| B;
| end;
| X;
|end;
|end.
802 :
デフォルトの名無しさん
2016/07/07(木) 17:01:53.64 ID:X/9U6Swt
>>801 無名メソッドでもprocedure内procedureを設定できるんですね。
参考になりました。
今回の場合にはスコープを狭めつつ別の無名メソッド内でも再利用したいという意図もあったので、
下記のような発想で行けそうです。
|type
| TProc = reference to procedure;
|procedure A;
|var
| B: TProc;
|begin
| B := procedure
| begin
| (略)
| end;
| TProc(procedure
| begin
| (略)
| B
| (略)
| end)();
| (略)
|end;
|end.
803 :
デフォルトの名無しさん
2016/07/10(日) 00:43:50.17 ID:ncc1qFHs
n := GetIntValueProc(function begin Result := 300; end);
みたいに書ける標準の関数ないですか
804 :
名無しさん@そうだ選挙に行こう! Go to vote!
2016/07/10(日) 07:45:23.27 ID:0ExYO3lT
なにそのマクロもどきな見づらい記述
805 :
デフォルトの名無しさん
2016/07/20(水) 17:11:14.65 ID:9g/4vDie
Ethernet通信させるソフトをこれから作るのですが、
ハブを使って複数のPCと繋げた場合、データを送ってきた
のがどのPCか判断するのはどうしたら良いのでしょうか?
やりとりするPCの数だけIndyコンポーネントを置いて
あくまでも1対1の考えで作っていけば良いのでしょうか?
宜しくお願いします。
806 :
デフォルトの名無しさん
2016/07/20(水) 18:50:03.14 ID:qHb25wv+
807 :
デフォルトの名無しさん
2016/07/20(水) 19:30:54.75 ID:9g/4vDie
有難うございます。
tcpで考えています。
Indyのtcpサーバーを使ってデータの種類毎にポートを設定する
やり方もありでしょうか?
話が飛んだ感じになってすみません。
808 :
デフォルトの名無しさん
2016/07/21(木) 06:30:07.03 ID:YooQwmSO
教科書読んで、ある程度基礎知識仕入れてからのほうがいいぞ
809 :
デフォルトの名無しさん
2016/07/23(土) 17:00:18.74 ID:WLo5BqtT
Delphi6使ってます。
たまに、フォームの非クライアント領域が
Windows2000までの古いスタイルになっていることがあります。
再現性がないんですが、突然なってもらうと困ります。
FormのWM_MCPAINTを横取りして、
DefWindowProcに渡してやったら直ったんですが
こんな対処でいいんでしょうか?
810 :
デフォルトの名無しさん
2016/07/23(土) 18:50:07.95 ID:Ez75oQcC
>>809 それってフォームにスクロールバーが表示されるときじゃないか?
フォームのサイズ変更などでも領域外に子コントロールがはみ出ないようにする
他の話なら知らん
811 :
デフォルトの名無しさん
2016/07/24(日) 11:29:12.88 ID:92cDS7YJ
WM_NCPAINTね。
>>810 お前は何を言っているんだ。
WM_NCPAINTメッセージは非クライアント領域の描画要求メッセージだぞ。
そもそもクライアント領域にしかない子コントロールがどうのこうのは無理な話だ。
812 :
デフォルトの名無しさん
2016/07/24(日) 21:12:00.28 ID:0R4dTabH
>>811 だからフォームがクライアント領域にスクロールバーを表示させると
非クライアント領域の表示が変わってしまうんだよ
813 :
デフォルトの名無しさん
2016/07/24(日) 21:41:52.60 ID:0R4dTabH
具体的に言うとこんな感じ
1番目が普通で2番目なことをすると表示がおかしくなり3番目のように戻しても直らない
814 :
デフォルトの名無しさん
2016/07/24(日) 21:57:14.73 ID:sBVq1/CW
>>812 やっぱり絡まれているなw
>>809,811こんなバカは、まともに相手しない方がいいぞ。
年配のDelphi技術はたちが悪い。
815 :
デフォルトの名無しさん
2016/07/25(月) 08:41:26.08 ID:dH9d6h3Y
フォームのシステムメニューの描画に問題あり?
つかD6で最新WINDOWSに対応させようとするのが無理すぎる・・・せめてD7だろ
816 :
デフォルトの名無しさん
2016/07/25(月) 10:30:49.40 ID:DSFaAmN6
817 :
デフォルトの名無しさん
2016/07/25(月) 20:12:28.13 ID:XMQFoVRq
すみません。何も分かってなかったようで。
同じ問題のようです。
で、DefWindowProcはどうやらフォームの非クライアント領域を描画してくれるようです。
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145212(v=vs.85).aspx D7以降のソースがないので確認できませんが、
古いスタイルのcommctrlを使うと、FormのWindowProcが古いほうにリンクされるんだと思います。
VCLでは、CreateParamsで登録されているWindowProcを呼び出すので、古いものがなぜか呼ばれて詰む。
DefWindowProcは新しいcommctrlにリンクされているようなので
これで解決できるのかと。
全部DefWindowProcを呼び出せばいいかというと、今度はボタンなどのコントロールが表示できません(当たり前か)
TCustomFormのNCPAINTのみDefWindowProcに渡すようにしました。
818 :
デフォルトの名無しさん
2016/07/25(月) 20:24:52.78 ID:XMQFoVRq
ただ、描画できただけで、ボタンの配置とかが変わっているのが不思議です。
どういう仕組みになってるのかわかりません。
試してみたんですが、とりあえずクラシックスタイルの位置ではなく、
正しい位置に×ボタンなどはあるようです。
私の環境ではちょっと再現できなくなってしまったので、
できる方は試してみてください。
819 :
デフォルトの名無しさん
2016/07/25(月) 20:32:14.29 ID:XMQFoVRq
うわ、だめだ。描画されなかったorz
えー、どうやったら解消できるんだろう。
マニュフェストファイルを作る以外で。
820 :
デフォルトの名無しさん
2016/07/25(月) 20:41:43.04 ID:XMQFoVRq
コントロールがはみ出ると表示がおかしくなる問題は
TLabelなどのTControlでも発生しました。
ということは、WM_PAINTあたりがあやしい気がします。
Rgnをクリップしてるところが範囲外になるとまずいのかな・・・
ここから先はVCLにかなり手を入れて確認しないとわからなそうです。
821 :
デフォルトの名無しさん
2016/07/25(月) 20:43:58.75 ID:XMQFoVRq
ちなみにCanvasのテキストアウトでは問題ありません。
822 :
デフォルトの名無しさん
2016/07/25(月) 20:48:41.36 ID:XMQFoVRq
違いました。TWinControlのPaintControlsではないようです。
823 :
デフォルトの名無しさん
2016/07/25(月) 21:15:44.55 ID:0oIKCrX0
10.1ユーザーのワイ、高見の見物
824 :
デフォルトの名無しさん
2016/07/25(月) 21:30:42.25 ID:XMQFoVRq
TLabelXを作って、
WndProcをハックして、何も機能しなくさせても同様の症状が出ます。
また、WinCotrolのPaintHandlerをまったく機能させなくしても、症状は変わりません。
次はサイズ関連の機能を削除してみる予定です。
825 :
デフォルトの名無しさん
2016/07/25(月) 21:40:38.34 ID:XMQFoVRq
そういえば、VCLをVC++に移植してたんでした。
そっちで同様の症状が出ないか確認してみました。
同様の症状で死ぬことはありませんでした。
・・・DragDock系のインプリメントを省いただけですが・・・。
826 :
デフォルトの名無しさん
2016/07/25(月) 22:17:09.76 ID:XMQFoVRq
ごめん、研究されてたのね。
ScrollingWinControlの派生で、スクロールバーが表示されるから、
そこでおかしくなるのか。
ScrollBarをどこで切るのがベストなのか今検討中。
827 :
デフォルトの名無しさん
2016/07/25(月) 22:28:11.02 ID:XMQFoVRq
一番簡単な方法があった。
OnCreateで、AutoScrollをfalseにすればよい。
これで解決。
828 :
デフォルトの名無しさん
2016/07/25(月) 22:37:28.62 ID:XMQFoVRq
めんどくさい人は、TCustomFormのCreateNewの最後にAutoScroll := falseを追加しておけばよい。
後々面倒だから私はこれにします。
いろいろありがとうございました。
829 :
デフォルトの名無しさん
2016/07/25(月) 23:06:07.15 ID:XMQFoVRq
今回のまとめ
ウインドウの非クライアント領域がクラシックスタイルになってしまう
原因
TScrollingWinControlで使われるスクロールバーが、XPスタイルで使われる
コモンコントロールに該当し、マニフェストのないDelphi6ではクラシックスタイルが
利用される。その結果、スクロールバーを含むTFormのウィンドウそのものも
クラシックスタイルで描画されるようになる。
対策
スクロールバーを表示させないようにする。
簡単な方法としてはAutoScrollをfalseにする。
こんなところでしょうか。
まあ、なにかの役に立つといいですね。
830 :
デフォルトの名無しさん
2016/07/25(月) 23:44:44.96 ID:XMQFoVRq
皆様に感謝。
特に
>>813さんの図がなかったらここまでたどり着けてなかったと思います。
本当にありがとうございました。
831 :
デフォルトの名無しさん
2016/07/26(火) 09:06:51.91 ID:ecdDTNvx
日記帳かよ
832 :
デフォルトの名無しさん
2016/07/26(火) 15:20:28.08 ID:u8gThmM3
Delphi10.1を試用していてよく分からないうちに期限切らしてしまったんですが
iOSアプリを作るのにこのDelphiひとつで作れるんでしょうか
それともコンパイルや配布にMac機やXcodeが必要なのでしょうか
833 :
デフォルトの名無しさん
2016/07/27(水) 19:29:46.94 ID:Pf+6NSLq
必要だよ。
834 :
デフォルトの名無しさん
2016/07/27(水) 21:43:41.76 ID:nCBkgAV5
VCLガンガン追加しまくりで使ってるんだけど
Windows10にしても使えますか?
835 :
デフォルトの名無しさん
2016/07/28(木) 18:33:53.00 ID:Ysmcwn+H
出来上がりのexeは多分動く
でもDelphi自体はどうかね?
インストールさえ出来ない場合もあるよ
836 :
デフォルトの名無しさん
2016/07/29(金) 15:03:52.26 ID:HDRRE9bY
D6以降はOK確認済
837 :
デフォルトの名無しさん
2016/07/29(金) 22:33:30.48 ID:LgX9ecVv
思い切ってWindows10にアップデートしようとしたら
ビデオアダプタだかなんかが対応してないよってできなかったよ・・・
いいよ分かったよ
>>836さんありがとね・・・
838 :
デフォルトの名無しさん
2016/07/30(土) 20:54:04.51 ID:LFDKfL6o
10年ぶりくらいにDelphiでの開発案件が来たので最新版を購入予定です。
やることはスマフォ向けアプリとPC向けのスタンドアローンデータベースアプリです。
DelphiProにモバイルのオプションを追加すればいいのは分かったのですが、データベース機能はオプション追加の必要はあるでしょうか?
839 :
デフォルトの名無しさん
2016/07/30(土) 21:50:49.89 ID:+l1Pc4s1
840 :
デフォルトの名無しさん
2016/07/31(日) 09:28:49.48 ID:rlh/tjan
XE7でカーソル位置の行をエディタの中心に持ってくるショートカットキーないですか
841 :
838
2016/07/31(日) 10:09:26.36 ID:OANlvjgz
842 :
デフォルトの名無しさん
2016/08/01(月) 23:09:38.34 ID:rZFRBzUy
自社用の販売管理作んなきゃならないんですけど、
delphiで作るのとアクセスで作るのとどっちが楽ですか?
DB扱うのは初めてです。delphi自体は少し経験あります。
843 :
デフォルトの名無しさん
2016/08/02(火) 01:10:25.21 ID:DwZVXDeN
>>842 アクセス
Filemakerでも可
Delphiもいいぞ
(そのくらいの知識だとどれ使っても大差ない)
844 :
デフォルトの名無しさん
2016/08/02(火) 20:38:52.93 ID:IaLkKH2W
>>842 Access
何より資料が多い
ただAccessの場合クエリを多用したり、下手な組み方をすると、実用的なパフォーマンスが出ないことがあるんで気をつけて!
845 :
デフォルトの名無しさん
2016/08/02(火) 20:57:58.34 ID:xFstX8Qy
846 :
デフォルトの名無しさん
2016/08/02(火) 22:37:48.35 ID:PKc/5VkT
>>842 DelphiもAccessもやめておけ。
簡単に良いものが作りたかったら、C#が一番だ。
847 :
デフォルトの名無しさん
2016/08/02(火) 22:45:46.62 ID:74mA5HtN
アドバイスありがと
Delphiのが慣れてるしそれで作ってみたい気もあるけど
アクセスに挑戦してみます
848 :
デフォルトの名無しさん
2016/08/02(火) 22:57:42.30 ID:IaLkKH2W
>>847 DelphiやC#でもいいけど自社向けで開発環境に制約がないなら、やはりアクセスが一番手っ取り早いと思うよ
何よりノンコーディングでいける部分も多々あるからね。
幸運を祈る。頑張れ!
849 :
デフォルトの名無しさん
2016/08/04(木) 10:56:45.39 ID:kymbYTnk
要望は一切受け付けない!ッテスタンスならアクセスがいいと思う
そうでないなら地獄を見ることになる
850 :
デフォルトの名無しさん
2016/08/05(金) 15:26:53.39 ID:iTK34Lri
849 に一票。delphiでいいと思う。
851 :
デフォルトの名無しさん
2016/08/05(金) 16:24:32.56 ID:PBJDHOG3
自分用なら「面倒だからこの程度でいいか・・・」って
のが許されるからいいが、他人様用をアクセスなんかで作ってあげても
「こいつなんかに頼むんじゃなかった・・・」ってなるだけだよ。
852 :
デフォルトの名無しさん
2016/08/05(金) 21:29:39.30 ID:4GfCUldY
自社用の販売管理ならAccessで十分でしょ?
仕様上の問題なら社内調整とかで結構切り抜けられるだろうし。
ただ本当にヤバい部分はVBAでゴリゴリ書かざるを得ないだろうけどね…
何よりAccessのレポートツール、クエリは秀逸。
Wizardだけで相当なレベルの帳票が出来上がる。特に定型帳票なんてマウスのカチカチだけで作れたりもする。
クエリにしてもイン・アウトを連結させてビジュアルに構築できるしね。
でもあまり複雑にするとパフォーマンスとメンテが…
逆に業務設計やシステム設計だけど、これは開発環境関係に無く大変だよ。
だからせめて開発環境くらい簡単なモノを使った方がいいぞ、という感じでAccessを推奨!
853 :
デフォルトの名無しさん
2016/08/06(土) 21:27:19.39 ID:bEwahPAL
Excelと連携取りやすいAccessだな。
854 :
デフォルトの名無しさん
2016/08/06(土) 22:07:50.60 ID:fgfW3mQj
差し込み印刷に毛の生えたようなもんだけど
レポートがあるからな delphi だと結構手間かかるし
しかしフォームはマジクソですね TLabel 相当すらない
855 :
デフォルトの名無しさん
2016/08/06(土) 22:25:04.03 ID:fgfW3mQj
↑間違えた TPanel 相当
856 :
デフォルトの名無しさん
2016/08/09(火) 16:58:59.64 ID:L0SYxurI
勉強の為にPCを有線Lanで一対一で繋いでメッセージのやり取りをさせたいのですが、
indyのコンポーネントとしてはtcpcliantのみ?
それともtcpserverとtcpcliantを使って、serverで受け取りcliantで書き込みになるんでしょうか?
857 :
デフォルトの名無しさん
2016/08/10(水) 11:14:14.36 ID:k4C2b2gQ
もうちっとネットのこと調べたほうがいい。
読む書くは、サーバとクライアントで決まるわけじゃない。
どっちでもできる。
接続待ちをするのがサーバで、接続しにいくのがクライアント
858 :
デフォルトの名無しさん
2016/08/13(土) 08:54:08.85 ID:ezyY+vMd
Indy10で全角文字が文字化けするんでネットで調べてみたんだけど、TEncodingを使うやり方とかを見つけてまねしてみた。
結果変わらず全角文字が文字化けするんだけど皆さんはどうやって対処していますか?
DelphiXE2を使っています。
よろしくお願いします。
859 :
デフォルトの名無しさん
2016/08/13(土) 09:05:00.00 ID:/VSx8XDp
>>858 XE2に最初から入ってるindyは10.5.8だからコード変換は
自前でしないといけないケースが多かったと想う。
indy10.6以降にバージョンアップすればいいと想うよ。
860 :
デフォルトの名無しさん
2016/08/13(土) 16:18:05.15 ID:jMW/Xerd
レス有難うございます。
が、10.6はまだ無いから待っとけということでOK?
Indyのサイト行っても無いっぽいです。
861 :
デフォルトの名無しさん
2016/08/13(土) 17:10:42.03 ID:1SRVK7Pp
862 :
860
2016/08/13(土) 23:21:00.27 ID:ezyY+vMd
>>861 ありがとうございました。
ダウンロードできました。
申し訳ないのですが、dekoさんのサイトなどを見てインストールしようとしたのですが全くうまくいきません。
10.6のインストール方法のサイトなどをどなたか教えて頂けないでしょうか。
よろしくお願いします。
863 :
860
2016/08/14(日) 07:41:32.83 ID:ebrJpjvp
何度もすみません。
indysystem160.dpkをコンパイルすると rtlがありません。
と出ます。
これってrtlへのパスが通ってないということでしょうか?
864 :
デフォルトの名無しさん
2016/08/15(月) 18:02:11.56 ID:oSeEk0ra
>>863 たぶん旧バージョンファイルがまだ残っていると思われる。
パブリックドキュメントフォルダやDelphiのインストールフォルダ
にIdやindyで始まる bpl、dcp、dcuが残ってないか調べてみたら?
865 :
デフォルトの名無しさん
2016/08/16(火) 08:19:19.50 ID:qocSaw0Z
D6では、Controls.pasでRegisterWindowMessageをアプリ起動ごとにユニーク値で登録してるようなんだけど、今でも続いてるの?
RegisterWindowMessageは0xC000〜0xFFFFしか利用できなくて
登録解除はWindows終了までできないみたいなんだけど。
Windowsをスリープで延々起動しっぱなしになってきたので
ちょっと気になるんです。
たいしたことないんだろうか。
866 :
デフォルトの名無しさん
2016/08/16(火) 10:34:06.36 ID:UWaTc09Z
>>865 今でも同じはず
たいしたことはないと思うが
自分も似たような使い方だが過去に問題が起きたことはないよ
0xC000〜0xFFFF「しか」というが識別子は1万6千以上登録できる
使い方次第だろうけど使いきるのにどのくらい時間かかることやら
気になるならRegisterWindowMessageを呼び出して今の値を確認すればいいんじゃね?
んで0xFF00以上だったら再起動かけるとか
867 :
デフォルトの名無しさん
2016/08/16(火) 16:34:03.11 ID:Ria7Z+Xs
1分に1つDelphi製アプリを起動しても1年位持つね
868 :
860
2016/08/18(木) 20:52:49.11 ID:4v0QClZV
indyの文字化けで騒いでた者ですが、ベルリンのお試し版入れてテストしたけど文字化けしました。
なんかサンプルとか無いでしょうか。
osはwin10です。
869 :
デフォルトの名無しさん
2016/08/19(金) 08:53:19.62 ID:qw5oNUCY
>>868 前回質問していた
>>863については解決しましたか?
せっかくレス貰ってるんだし、解決したのであれば何が原因で
どのように解決したのか書いていただけるとありがたいです。
文字化けする事についてはindyで何をしたいのか、何をして文字化けしたのか
文章からはさっぱり読み取れません。
サンプルが欲しければ文字化けしたという実際のソースをどこかにアップしていただけませんか?
870 :
デフォルトの名無しさん
2016/08/19(金) 13:07:09.28 ID:Ix2lCrRv
オレXEでindyもそのままで、ネット関係のツールも結構公開してるけど
TEncoding使って文字化け経験ないなぁ
原因は他のところにあると思うよ
871 :
デフォルトの名無しさん
2016/08/23(火) 16:42:34.07 ID:xwqjQ6xp
procedure SetString(FileName: String; KeyName: String; s: String);
function GetString(FileName: String; KeyName: String; var s: String): Boolean; // 値が取れたかどうかを返す
ファイル名、キー名を指定して文字列を読み書きしたいんですが
どういうクラスを使えばいいんでしょうか
INIファイル、レジストリ、DBは使わずに
sに含まれる改行コードなどのエスケープは考えずに済むものがいいです
872 :
デフォルトの名無しさん
2016/08/23(火) 20:03:42.92 ID:Xl3QgtR7
873 :
デフォルトの名無しさん
2016/08/23(火) 20:45:54.80 ID:Wrmx2R55
TDictionary<String, String>でもいいんじゃね。
つか、永続化が必要かどうかしらんが。
874 :
デフォルトの名無しさん
2016/08/23(火) 21:58:43.61 ID:r/CpXWuk
Record型
875 :
デフォルトの名無しさん
2016/08/23(火) 22:50:16.24 ID:SeJBGa2W
すごい初心者です
デコンパイルしたいdllがあり
いろいろと調べていると
This program must be run under Win32
とあれば、RAD Studioで開けると言う情報を得てdllを開いてみると開けたのですが
16進数の状態で開かれてしまい、全く読めない状態でした。
これをソースコードで表示させたいと思うのですが、どうすれば言語で表示できるのでしょうか?
876 :
デフォルトの名無しさん
2016/08/24(水) 02:20:35.51 ID:vsIItYVk
877 :
デフォルトの名無しさん
2016/08/24(水) 02:29:08.36 ID:Sc8XDTBU
ま、日本語をドイツ語に機械翻訳して更にそのドイツ語を日本語に機械翻訳したようなもんだ
頑張って読め
878 :
デフォルトの名無しさん
2016/08/25(木) 11:19:55.69 ID:udEjBPPq
879 :
デフォルトの名無しさん
2016/08/25(木) 20:45:28.06 ID:KeEkgwfx
DLボタンがきかねーぞ
880 :
デフォルトの名無しさん
2016/08/26(金) 07:57:57.00 ID:eGCMuxPu
XE Starterを使ってる自分には朗報だな
ところで、既存のソースだと
変更する必要のある部分とかあるのかな
てか旧バージョンとの共存は可能だよね?
881 :
デフォルトの名無しさん
2016/08/26(金) 14:34:55.88 ID:KxIt1IxC
>>880 よかったな。
Pro使ってた俺にとっては、あくまで最新機能試すだけで、
実際は古いプロがメインだな。
882 :
デフォルトの名無しさん
2016/08/26(金) 19:33:11.02 ID:q/6osLR8
Delphi 10.1 だめだわ
既存のコンポーネントがコンパイルエラーでインストールできない
ネットで検索して修正しても次々エラーが出てくる
883 :
デフォルトの名無しさん
2016/08/26(金) 20:04:50.04 ID:srTr8wQU
>>882 既存のコンポーネントって具体的にどれ?
まさか10.1対応って正式に書いてないコンポーネント入れようとしてないよね?
884 :
デフォルトの名無しさん
2016/08/26(金) 20:26:10.36 ID:xT5IETmP
Delphiにあやまれ
885 :
デフォルトの名無しさん
2016/08/26(金) 22:07:30.04 ID:q/6osLR8
>>883 お気に入りのNewACっていう
DirectSoundを簡単に使えるコンポーネントを
インストールしたかったんだけど
そもそも最近のDelphiで動かそうと思うと
かなり修正が必要みたいだね
当分はまだまだXEで我慢する
886 :
デフォルトの名無しさん
2016/08/27(土) 00:23:53.08 ID:UHsGPSFj
GitにXE8対応ファイル上がってるけどこれじゃあかんのか
887 :
デフォルトの名無しさん
2016/08/27(土) 07:20:34.59 ID:RGRa3YNY
メールアドレスごとにダウンロードできるってことだよな
タブレットにもインストールしておこう
888 :
デフォルトの名無しさん
2016/08/27(土) 23:49:13.99 ID:9sh8Hs6g
Berlin StarterでDelphiとC++Builderの両方をインストール
しようとして失敗したりして気づいたこと
サイトから手動でダウンロードする実行ファイルは共通みたい
最初Delphiを手順通りにインストールすれば
C++Builderはインストールコードだけメールで送ってもらい
それをライセンスマネージャで登録する
Delphiでダウンロードした実行ファイルをもう一度実行すると
C++Builderがインストールできるようになる
889 :
デフォルトの名無しさん
2016/08/28(日) 00:21:34.84 ID:/3yp1MND
インストールするときにWindows10なんたらkitってのもインストールされるんだがこれって必要?
890 :
デフォルトの名無しさん
2016/08/28(日) 04:49:48.82 ID:JpHEs9fe
Delphi7のSystems.pasで
procedure UnsetExceptionHandler;のところで例外が発生
したので調査していましたらBugと思ったので投稿
procedure UnsetExceptionHandler;
asm
XOR EDX,EDX
MOV EAX,[EBX].InitContext.ExcFrame
TEST EAX,EAX
JZ @@exit
MOV ECX,FS:[EDX] { ECX := head of chain }
CMP EAX,ECX { simple case: our record is first }
JNE @@search
MOV EAX,[EAX] { head of chain := exRegRec.next }
MOV FS:[EDX],EAX
JMP @@exit
@@loop:
//MOV ECX,[ECX]
MOV ECX,FS:[ECX] //修正
DEC ECX //追加
@@search:
CMP ECX,-1 { at end of list? }
JE @@exit { yes - didn't find it }
//CMP [ECX],EAX { is it the next one on the list? }
CMP FS:[ECX],EAX //修正 { is it the next one on the list? }
JNE @@loop { no - look at next one on list }
@@unlink: { yes - unlink our record }
MOV EAX,[EAX] { get next record on list }
MOV [ECX],EAX { unlink our record }
@@exit:
end;
FSの記入忘れでAVになるのだと思うのですかどうでしょうか
891 :
デフォルトの名無しさん
2016/08/29(月) 08:20:06.48 ID:pGRksGF2
そもそもこれどういう条件でアクセス違反出るん?
892 :
デフォルトの名無しさん
2016/08/29(月) 16:40:11.84 ID:NKz4PvZo
スタートアップ処理くらいされてるやろ
893 :
デフォルトの名無しさん
2016/08/30(火) 00:15:39.32 ID:dH06C/Eq
875です
そもそも16進数を
文字列で表現する事は可能なのでしょうか?
BoolToStr
↑を使用すれば出来るのでしょうか?
解らなくて瞑想している…誰かおしえてくだせぇorz
894 :
デフォルトの名無しさん
2016/08/30(火) 00:20:12.61 ID:dH06C/Eq
連投すいません。
StrToInt は、文字列 S(10進数か16進数表記で、整数型数値を表す)を数値に変換します。
とあったのですが、
これをどこで使えば16進数を文字列に変換できるのでしょうか?
895 :
デフォルトの名無しさん
2016/08/30(火) 00:24:51.18 ID:/57UbVfe
瞑想してるならちゃんと落ち着けw
896 :
デフォルトの名無しさん
2016/08/30(火) 00:29:23.83 ID:dH06C/Eq
897 :
デフォルトの名無しさん
2016/08/30(火) 00:40:08.80 ID:/57UbVfe
HexToStrとかFormatじゃ駄目なん?
898 :
デフォルトの名無しさん
2016/08/30(火) 00:49:06.90 ID:dH06C/Eq
また明日やってみます!
しかし明日仕事なのでダウンなのですorz
知識のない自分には遠い道のりです
57UbVfe
さまありがとうございます
899 :
デフォルトの名無しさん
2016/08/30(火) 01:29:04.57 ID:oYSfNa2r
16進数を文字列にしてもあなたの考えるソースコードにはならないす
objconvとかOllyDbgとか使えばアセンブルコードで見れるけど
900 :
デフォルトの名無しさん
2016/08/30(火) 02:50:54.02 ID:odu+I4al
エクスプローラで画像のサムネイル表示あると思うんだけど
TImageListにTJepgImageの画像を追加していく方法がわかりません
いったん、TBitmapに描画してそれを追加かな?と思ったんだけど
サムネイル用に画像を小さくする方法が分かりませんでした
参考になりそうなサイト、もしくはだいたいこういう感じでやる、というようなのありましたら教えてください
901 :
デフォルトの名無しさん
2016/08/30(火) 07:19:43.58 ID:odu+I4al
>サムネイル用に画像を小さくする方法が分かりませんでした
これはStretchDrawで解決しました
902 :
デフォルトの名無しさん
2016/08/31(水) 15:01:08.29 ID:F7HhXiFj
>>898 > This program must be run under Win32
> とあれば、RAD Studioで開けると言う情報を得て
ってあるけど具体的にどこでそんな情報得たの?わりと気になる(色んな意味で
903 :
デフォルトの名無しさん
2016/08/31(水) 15:47:42.80 ID:tQ1nT1Q3
Delphiの実行ファイルやDLL(というかコンパイル済みバイナリ)は逆コンパイルしても出てくるのは機械語だけやで
C#とかはスクリプト自体はコンパイルしてない(というとちょっと語弊あるけど)から逆コンパイルするとスクリプトが取り出せる
904 :
デフォルトの名無しさん
2016/09/01(木) 15:54:59.93 ID:qkr8kCeA
重箱の隅だけどツッコミどころ多すぎる
EXEやDLLから機械語を取り出す行為は逆コンパイルじゃなくて逆アセンブル
C#はスクリプトじゃなくてソースコードな
C#の逆コンパイルはソースコードを取り出すんじゃなくてあくまでもバイトコードから元のコードを推測して変換してるだけ
だから技術的に難しいだけで理屈上はDelphiでも逆コンパイルしてソースコードを出力することは可能
905 :
デフォルトの名無しさん
2016/09/01(木) 15:59:12.95 ID:qkr8kCeA
元の誤用に引き摺られてこれはこれでツッコミどころがあるな (w
機械語はただのバイナリで、取り出すも何もEXEやDLLにそのまま入ってるから変換かける必要すらない
逆アセンブルでアセンブリとなりようやく文字列として読める形になる
906 :
デフォルトの名無しさん
2016/09/01(木) 16:16:39.82 ID:j4A+vWqM
C#を逆コンパイルしたらコメント行まで復元されるけどコメント行も推測して復元してるのかーそっかー
907 :
デフォルトの名無しさん
2016/09/01(木) 20:41:22.26 ID:pkz3GaXa
ははっ
908 :
デフォルトの名無しさん
2016/09/01(木) 22:13:22.81 ID:064FyUy7
基地外C#が沸いたの?
909 :
デフォルトの名無しさん
2016/09/06(火) 10:29:08.90 ID:6Lg2ZIDg
delphiで
CreateThreadしたスレッド関数内でdelphiのランタイムライブラリを呼んでもメモリリークは発生しないのでしょうか?
910 :
デフォルトの名無しさん
2016/09/06(火) 13:08:53.66 ID:kYLEnAbT
TThreadと同じようにランタイムライブラリを呼んでOK。
911 :
デフォルトの名無しさん
2016/09/06(火) 22:13:15.84 ID:6Lg2ZIDg
ありがとう