DelphiでParadoxにテーブルを作成するツールを
作ろうとしています。

TFieldType型のftStringを文字列'ftString'に
変換してString型の2次元配列にいれたいのですが、
うまくいきません。
String型にキャストしようとしても
「正しくない型キャスト」とエラーが出てしまいます。

どうすれば、TFieldType型をString型に
変換できるのでしょうか。
Paradoxを使ったことのある方、ご教授お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

TFieldTypeからStringへのキャストはできません。


TFieldTypeの宣言時にftStringと書いているわけですから、同時に文字列配列として'ftString'をハードコーディングしても問題無い、というか他に方法がないです。(^^;
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【delphi】Integer型とString型の型判定

delphi(Object Pascal)における変数のデータ型の判定方法について質問です。

SQLで読み込んだデータがInteger型なのかString型なのか判定したいのですが、どのようにすればいいのでしょうか?

判定ができる関数などがあるのでしょうか?

また、もしそのような関数がなければ、どのようにデータ型の判定を行えばいいのでしょうか?

ご存知の方がいらっしゃれば、ぜひ教えてくださいm(__)m
よろしくお願い致しますm(__)m

Aベストアンサー

SQLからということですので、取得したフィールドの.DataTypeで判定できるのではないでしょうか?
ftInteger32 ビット整数項目
ftString文字または文字列項目
他...

QC#におけるstringとstring[]データの変換

お世話になります。C#をはじめて使っています。
いま行おうとしているのがコモンダイアログからファイル名を取得して、CSVファイルを読み出そうとしています。
OpenFileDialogから出力されるファイル名はstring[]と配列になり(すいません、C#でも”配列”といっていいのですよね?)
CSVを開くためのTextFieldParserの引数はstringになります。Cならポインタで変換できるのですが、C#はポインタがないため、いくつか試しましたが、うまく変換でききませんでした。
たとえば
string a;
string[] b:

 a=b;
a=(string)b;
a=convert.tostring b;
全部だめでした、どなたかご存知の方お見えになれば教えていただけると助かります。

Aベストアンサー

// OpenFileDialog 省略
a = objOpenFileDialog.FileNames;
foreach( string strBuff in a )
{
 // 処理
}

仰ってる処理からしても、配列から1個ずつ取り出せば済む話だと思いますが如何でしょうか。

QDelphiの型変換

わけあって、Array of charとStringを相互に変換したいのですが、方法はありますでしょうか。
stringは1文字なのですが、charとの変換がどうしても上手くいきません。
よろしくお願いします。

x : string;
y : array [0..79] of char;

x := 'A';
y[0] := x; みたいなコトをしたいのですが・・・。

Aベストアンサー

String -> Array of Charの変換は、StrPCopy()でできます。
ご質問の例だと
 StrPCopy(y,x);
のような感じにすると、xの文字列がyの配列にコピーされます。

逆に、Array of Char -> Stringに変換するには、StrPas()を使います。
 x:=StrPas(y);

詳しくは、この2つの関数をヘルプで見ればおわかりになると思います。

Qdelphiで、配列がなくなったら場合

確か、PHPでは、配列の最後まで行った事を調べる時に
array[x] == ''
と出来たと思います。
delphiで、こういった事はできないのでしょうか?

関数でもいいですし、構文でもけっこうです。
ちょっと知りたくって。

・・・
配列をカウントして、Lengthで配列の数を調べれば、特に問題はないんですが・・・。Length(FileHairetu)

Aベストアンサー

Delphi2007 for Win32ユーザです。Delphi for PHPは調べていませんが…、

array[x] = '' で配列の終了を判定する方法はDelphiの汎用的な機能にはないと思います。もちろん固有のアルゴリズムで '' を番兵(Sentinel)として使用することはできます。

また、配列を参照するのにfor-inループも使えます。その場合カウンタは不要です。

Qdelphiで配列を、コピーするには。

delphiで配列をコピーするには、どうしたらいいのでしょうか?

Betr_Hairetu := Moto_Hairetu ;

としたいのですが。

Betr_Hairetu := Copy(Moto_Hairetu, 0 ,Length( Moto_Hairetu ) );

では、ダメでした。

ループで、一から入れ直せばいいのですが、かっこわるいなー・・・。
なにか、簡単な関数があるとは思うのですが、探すことができませんでした。
よろしくお願いします。

Aベストアンサー

本来のパスカルでは、配列と文字列(ストリング)は異質であって
相容れるものではありません。
DelphiのCopy関数は、文字列をコピーするものであって
配列をコピーするものではありません。
ちなみに、Copy関数の第2引数に0が指定されることはありません
Delphiの文字列のインデクスは1から始まります

ところが、Delphiのあるバージョンから、array[] of char と
string が 同じように扱われるようになったので、やや混乱すると思います。

ですが、Delphiでは、文字配列かstringかをはっきり区別して使用するほうが
無難です。

質問では、配列としか書かれていないので、整数の配列か、はたまたレコードの配列か
わかりませんが、

var
ar1, ar2 :array[0..5] of integer;
begin
for i := 0 to 5 do ar1[i] := i * 11;

Move(ar1,ar2, SizeOf(ar1));
end

と Move関数が使えます


また、OSがWindowsで、Win32を使えるなら

CopyMemory関数を使う方法もあります。

本来のパスカルでは、配列と文字列(ストリング)は異質であって
相容れるものではありません。
DelphiのCopy関数は、文字列をコピーするものであって
配列をコピーするものではありません。
ちなみに、Copy関数の第2引数に0が指定されることはありません
Delphiの文字列のインデクスは1から始まります

ところが、Delphiのあるバージョンから、array[] of char と
string が 同じように扱われるようになったので、やや混乱すると思います。

ですが、Delphiでは、文字配...続きを読む


人気Q&Aランキング

おすすめ情報