2020/02/14

覚え書き

多分今まで出ていたアプリケーションエラー全ての根源がわかった
オリジナルからあったサブマリンバグ

オリジナル当初からノード破棄したときのイベントで
・ノードごとに持っていたデータを破棄して(このデータに対してはちゃんとFreeAndNilっていう破棄したあと「nil(ヌル)」を代入してる)
・ノードのタイトルに「」を代入
・ノード移動履歴から削除
という三つの処理をしてたんだけどノード自体に「nil(ヌル)」を入れていなかった

オリジナルもおいらもノードを参照するときは必ず
Assigned 関数というのを使ってそのノードがちゃんと使えるのか確認してるんだけど
その関数は「変数または手続き型変数が nil (値が割り当てられていない) かをテストします」というもので
オリジナルではあんまり込み入ったことをしていなかったから表面化していなかっただけ
ただ一つだけこれが原因だろうなというのが UniCode ファイルを読み込んで
---------------------------
警告
---------------------------
xx.nnaをnanaファイルとして読み込めませんでした。
テキストファイルとして読み込んでみますか?
---------------------------
はい(Y)   いいえ(N) 
---------------------------

いいえを選ぶと Access violation になってタスクキルしか出来なくなる



オリジナルソース
//----------------------------------------
// ノード破棄
//----------------------------------------


procedure TTreeForm.TreeViewFreeNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode);
begin
  FreeAndNil(NodeData(Node).Strings);
  NodeData(Node).Caption := '';
  MainForm.TreeViewFreeNode(Sender);
//↓に一行入れるだけで多い日も安心
  Node:=nil;
end;

2020/02/08

四捨五入

普段は何も考えてなかったけどやっぱり四捨五入はちゃんとしないとね

↓の「Roundoff 関数」は Delphi5 のヘルプ「Round 関数」のところに載ってる
通常の四捨五入を使う場合には以下の関数を使用してください』というやつ

100/6=16.6666666...
Trunc だと切り捨てられちゃう





function Roundoff(X: Extended):integer; begin if x >= 0 then Result := Trunc(x + 0.5) else Result := Trunc(x - 0.5); end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=1 to 10 do begin Memo1.Lines.Add(IntToStr(Roundoff(100/i))+' '+IntToStr(Trunc(100/i))); end; end; 

2019/11/17

ぬるぽ

これはわかりやすい画像

if Assigned(トイレットペーパー) then//トイレットペーパーにアクセスできたら
ShowMessage(IntToStr(Length(トイレットペーパー)));//長さを表示

↓この一行がないと
if Assigned(トイレットペーパー) then
右に見に行ったときに「トイレットペーパー?そんなのねーじゃん!」ってエラーになる
左側なら「ゼロだよ~♪」って返ってくる

2014/07/01

でるけどは残念ながら休刊となりました

>6ヶ月間発行がなく、残念ながら休刊となりました
>
>・メルマガID   :0000016258
>・メルマガタイトル:Delphi 買ったけど。。
>・最新発行日   :2013/12/01
>-------------------------------------------------
>
>上記メールマガジンにつきましては、
>長期に渡り発行されていないため、まことに残念ではありますが
>休刊措置を行わせていただきました。

XEシリーズになってから一つもさわっていないので
もう新しい話題とかついていけません
こちらには何か思いついたこととかあればまた書くこともあるかも知れません

それでは(^.^)/~~

2013/01/05

XE3 での TImage / TImageControl / TImageViewer

メモ

[要注意コンポーネント (2) - DEKO のアヤシいお部屋]
http://ht-deko.minim.ne.jp/ft1301.html#130105_01

2013/01/01

リストのインデックスが範囲を超えています

さすがに「それって for to do ぢゃなくて downto ぢゃね?」っていうのはもう十年以上前に卒業したけど

i,j:integer;

とかの多重ループで Items[i]  と Items[j]  を間違ってしまってなかなか気付かない
思い込みがあるから何度読み返してもわからなくて悩んでしまう