喫茶XRAYトップページ

[スレッド全体
]

[10373] ありがとうございました。返信 削除
2016/9/9 (金) 21:40:37 ny
「andy」様「Mr.XRAY」様「taki」様、ありがとうございます。
v=strtoint(s);は間違いでした。v:=strtoint(s);でした。
当方の環境はWin10+ターボデルファイ2006(えっ!今だに?)でした。

LCardinal := Cardinal(StrToInt64(LText));
これでうまく変換できました。
LCardinal := StrToInt64(LText);
これでもエラーになりませんが「0」がかえってくることがありました。

NativeInt/NativeUInt
ごめんなさい。私には敷居が高い。

お陰様で解決しました。感謝!感謝です。

[10374] Re:ありがとうございました。返信 削除
2016/9/9 (金) 21:49:46 Mr.XRAY
> ごめんなさい。私には敷居が高い。
                      ^^^^^^^^^^
出た !! 『敷居が高い』
言葉の意味も時代と共に変わりますからね (^^;
『敷居は高い』けど『敷居をまたぐ』のはできると...


[10375] Re2:ありがとうございました。返信 削除
2016/9/9 (金) 23:19:58 ny
>敷居が高い
つっこまれてしもうた。最近TVでやってましたね。
私、還暦過ぎましたが、まわりの同年代でも間違えて使ってますね。
「敷居をまたいでみよう」とまでは、中々いけなくなった老体でした。

ありがとうございます。

[10376] >10年ぶりの... スレッド見逃してました。返信 削除
2016/9/10 (土) 00:11:31 ny
ちょっとだけ「敷居をまたいでみよう」しました。
10年ぶりの...Delphi 10.1 Berlin Starter Edition
2016/9/9までDL可!?ゲッ、あと30分?!
お急ぎ、DL/インストール。間に合いました。
起動もしてます。良かった良かった。

ありがとうございます。

[10378] Re:ありがとうございました。返信 削除
2016/9/11 (日) 11:46:34 taka
▼ nyさん
> LCardinal := Cardinal(StrToInt64(LText));
> これでうまく変換できました。
> LCardinal := StrToInt64(LText);
> これでもエラーになりませんが「0」がかえってくることがありました。

型の数値の範囲を外れると0になったり想定外の数値になります。

例:Cardinal(StrToInt64('-1'));         結果: 4294967295
例:Cardinal(StrToInt64('4294967296')); 結果: 0

Cardinalは、符号なし整数なので (Cardinal  0..4294967295)
文字列から「0または正数」に変換するので以下の処理が必要です
・負の数値の文字列の処理
 エラーとするか、0にするか,Cardinalの最大値とするか
・オーバーフローの処理
 エラーとするか、0にするか,Cardinalの最大値とするか

直接 Cardinal変数に代入するのではなく
一度Int64型の変数に代入してから処理してください。

procedure TForm1.Button1Click(Sender: TObject);
var
  v : Cardinal;
  i64 : int64;
begin
  i64 := StrToInt64('4294967296');
  if (i64 < 0) then
  begin
//   raise EIntError.Create('正数を入力してください');
    i64 := 0;
  end;
  if (i64 > $FFFFFFFF) then
  begin
//   raise EIntOverflow.Create('Cardinalのサイズを超えました');
   i64 := $FFFFFFFF;
  end;
  v := Cardinal(i64);
  ShowMessage(IntToStr(v));
end;


[10382] Re2:ありがとうございました。返信 削除
2016/9/13 (火) 16:48:39 Mr.XRAY
▼ takaさん

> 直接 Cardinal変数に代入するのではなく
> 一度Int64型の変数に代入してから処理してください。


確かに.
変数の型の範囲には十分注意ですね.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82