D7+FB1.5で質問です。
TDBEditでTimeFieldまたはDateTimeFieldを編集するときに
hh:mm形式で秒を抜かして時分だけ編集するにはどうしたらよいでしょうか。
フィールドにEditMaskに!99:99;1;_ DisplayFormatにhh:mmとしてみたところ
編集や表示は出来るのですが例えば'12:34'と入力して次のフィールドに移り
また戻ってくると'12:00'と表示されてしまいます。
そのまま何もせずまた他のフィールドにフォーカスを移すと'12:34'に戻ります。
D7です。
動的配列を明示的に開放しなくてもいいらしいですが、本当ですか?
また、構造体70項目*n個の動的配列を使っていたらエラーが頻出します。
原因は動的配列によるものですか?70項目*1ならエラーはでなくなりますか?
954 :
953:2007/12/25(火) 22:56:03
なんとなく自己解決。
やっぱりバカデカイ動的配列を使うのはまずいみたいですね。
あと、SetLengthであらかじめ大きいサイズを確保した方がいいのかな。
setlengthは何度も何度も呼び出すんじゃなくて、最初に余分に割り当てておくほうがいいらしい。
>>948 まさに後者です。これが知りたかった。
> この場合はワイド文字列版のAPIを使ってファイルをメモリストリームオブジェクトに読み込み
> 文字列リストやグラフィックオブジェクトのLoadFromStreamメソッドでこのストリームから読み込みます。
> (これについてはTurbo Delphi Explorerの方ですが確認しました)
私の脳内質問にウルトラスーパーデラックスな回答をありがとうございました(-人-)合掌
957 :
949:2007/12/26(水) 00:42:17
>>950 ありがとうございます。 ん〜、じゃ何が原因かなぁ・・・。
>>953 何のエラーが出たのか言ってくれないと。
巨大配列でエラーなら、メモリ不足?
>>953 動的配列は、自動で解放してくれると思っていい。
手動で解放するなら、nil 代入しても開放される。
また、参照カウンタ方式で、どこからも参照されなくなったら、勝手に開放が基本で、
ただの代入では、コピーされない。
注意点は、string と違って、CopyOnWriteがない。
stringは、代入は、ただ参照先を入れているだけで、コピーされず、
hoge[1] := 'h"などど、各要素にアクセスしたときに、初めてコピーされる。
動的配列、hoge[1] := moge; などと各要素に書き込んでも、複製されない性質がある。
動的配列は、ふつうは、SetLengthであらかじめ確保しておく。
というか、素の配列のように、SetLength なしで、つかってたらアフォ(それはないと思うけど)
要素の追加が頻繁なら、TListなりリスト系のクラスを使う
ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200309/200309_03090055.html ↑stdDialogsユニットのTopMost関数を使って ”他のアプリがアクティブになっても常にアプリを最前面表示したい” のですが、
うまくいかんニダ。
uses ・・・, stdDialogs;
procedure TForm1.FormDeactivate(Sender: TObject);
begin
TopMost(Form1.Handle);
end;
としても他のアプリ(ブラウザ等)をクリッコするとアプリが最小化してしまいます。
アプリはForm1があるだけでその他のフォームやダイアログなどは出ないシンプルなアプリです。
どこがいけないのか教えられてあげます。 よろしくお願いされたまえ馬鹿やろう。
>>957 もしかして標準以外のコンポを使っています?
Turbo Delphi Explorerでは標準以外のコンポは設計時に配置できません。
>>962 使ってません。
ソースとexeがここにありますけど。
gamdev.org/up/img/10666.lzh
Delphi7とFireBird1.5で質問です。
IntegerフィールドをDBGridでチェックボックスで表示してオフならば0オンならば1をセットしたいのですが
可能でしょうか。
>>955 そうなんだ、間違ってたんだな俺。
結局実務で使わなかったから不具合出たかは解かんないけど。
>>963 試してみたところ、読み込み時に下のようなエラーダイアログが出て
アプリケーションアイコンがTurbo Delphi Explorer標準のものになってしまいますが
読み込みは上手くいっているようですし実行も出来ました。
---------------------------
エラー
---------------------------
リソースファイル C:\Documents and Settings\ (略) \デスクトップ\10666\Project1.res が見つからないので再作成しました。
---------------------------
OK
---------------------------
967 :
デフォルトの名無しさん:2007/12/27(木) 16:26:22
Delphi7だけど
アクセスで作ったリスト(文字列とか数値のデータ型設定済み)を
インポートかなんかで読み込んだら
そのまま即配列として使えますか?
それとも各列のデータ型に合うように一個一個型宣言しないと使えませんか?
教えてください。
使い道は単なる配列の用途です。100列×1000行、というか100項目のクラスが1000個、というか
まぁその辺まだ理解出来てないレベルです。
>>964 OnDrawColumnCellイベントに自分で描けばいい。
>967
その前に聞こうか。TField型について調べたか?
a, b, c: integer;
c := a div b;
aが負数でもcはマイナスにならないのはなじぇ
b が負数だから。
>>966 ありがとうございます。
操作ミスか何かと考えます。
なぞなぞだったのかよ
turboの複数言語インスコって
turboマネージャー亡き今はもう無理なんだっけ?
975 :
967:2007/12/27(木) 23:22:38
>>970 personalだからHelpもリンクされてない
だめか
ごめn
おれがいいたいのは
たとえば a = -1 かつ b > 1 のとき c = 0 になるんだよ
これってコンピュータ内部事情?
-0 になってほしいのか?
整数除算か
>>977 いやこれにたよったコード書いていいのか思って
もちろん整数についてだけど
>>976 実数が欲しいなら、
a, b, c: Double;
として、
c := a / b;
ってやってくれ。
負数を正数で割ると問答無用で0になるの?
>>980 いや
>>979が知りたかったが
どうやら整数除算というやつは環境依存だそうだから
頼ったコードは書けないんだね
>>981 いやいや、 小数点は切り捨てられるって事。
つまり、-0.5→0 になる。
Delphiのdivは常に切捨てじゃないの?
-0.5を-1にしたいのなら、
Trunc, Floor, Ceil のどれかを使うと思う。
>>984 >Delphiのdivは常に切捨てじゃないの?
おお、じゃあそれに頼ったコード書いていいんだね
それを教えて
ヘルプに載ってるでしょ。
浮動小数点型のデータをdivで割ろうとすると「型が違う」とコンパイルエラーになる。
>>986 すまん・・・・
>x div y の値は,x/y の値を 0 の方向に向かってもっとも近い整数に丸めた値
載ってた・・・・ありがとう
頭悪すぎ・・
性格が悪いよりいいさ
けだし名言
でも環境依存のコードってあまりな
コンパイラオプション依存のコードは結構あった。
>>967 アクセスでカンマ区切りテキストでエクスポートして文字列リストに読み込む。
1行ごとに別の文字列リストのCommaTextに代入すれば各行にフィールドの文字列が入ります。
カンマ区切りテキストにした時点で全部文字列になっているので
必要に応じて整数型や実数型に再変換。
#しかし列が100もあるテーブルってどんなテーブルなんだろう…
糞スレ埋め
1000げと
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。