よくヘルプに「文字列をバリアント型 (内部処理形式 String の Variant) で返します。」などと書いてあったりしますが、この内部処理形式とはなんなのでしょうか。また、内部処理形式がどの型かによっていろいろ気をつけなければいけない点などあるのでしょうか。

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

A 回答 (2件)

Left関数とLeft$関数の違いを理解すればいいと思う


Left$関数のほうが処理がはやい

参考URL:http://dev.sfdata.ne.jp/VB/htdocs/msg08462.html
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
参考URL、とてもわかりやすかったです!
より実用的なところまで知ることができました。

お礼日時:2001/06/29 16:45

 これはですね。


 表向きはバリアント型に見えるけど、実は中にストリング型が入ってる、という意味です。

 バリアント型というのはさまざまな形式のデータを1つの変数で扱えるようにした変数のことで、通常は文字変数なら文字しか扱えない、といった制約があるのに対し、バリアント変数はそれだけ宣言しておけば文字でも数値でも配列でも、なんでも扱えてしまいます。

 これは、バリアント型で宣言すると、内部で勝手にストリング型やインテジャー型などを宣言してくれるためで、代入する際に型を自動認識して代入されています。

 ですから、「文字列をバリアント型 (内部処理形式 String の Variant) で返します。」とは、「ストリング形式の文字列が内部に格納されたバリアント型変数を返す」という意味です。
    • good
    • 1
この回答へのお礼

解答ありがとうございます。
内部で自動的にやってくれているだけなので、気にしなくて良いのですね。
「内部処理式がStringの場合・・・」とかいうのを見て、
なにか配慮が必要なんだろうかという心配をしてしまっていました。

お礼日時:2001/06/29 16:44

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q家の外壁ひび割れ対策

築30年余ですが、早い時期からの外壁ひび割れに悩んでいます。10年余り前に塗装しましたが、その後もひび割れは進行しています。内部の鉄骨に沿ってひび割れしています。
有効な対策を教えてください。
たとえばひび割れを止めるような塗装とか、
今の壁の上に外壁を作るとか
その場合の費用(総2階建てで上下合わせて30坪)の目安も教えていただくと有難いです。
よろしくお願いします。

Aベストアンサー

塗装はボロ隠しにしか過ぎません。外壁のひび割れは内部から起きて
いますので、ひび割れの部分に専用の接着剤を注入しないと治まりま
せん。ひび割れをしている外壁の上に、新たに外壁を作っても、内部
が割れているのですから、新たに作った外壁も近い内に割れが生じて
くるでしょう。これは素人では何も解決しませんから、工務店などに
現状を見て頂き、可能なら見積もりをして頂いて補修をするかどうか
決められて下さい。費用ですが、現状が何も分かりませんので、何と
も言いかねます。

Q内部処理形式が日付型 (Date) の Variant

文字変数として保存されている日付の演算を組込み関数で行おうと
debug.print DateDiff("yyyy", DateValue("2001.1.1"), DateValue("2001.10.16"))
debug.print DateDiff("yyyy", "2001.1.1", "2001.10.16")
等やってみたのですが、
実行時エラー13
型が一致しません

となり実行できません。
DateDiff 関数の引数になる「内部処理形式が日付型のVariant」型変数への代入方法をお知らせください。

実行環境
Visual Basic 6.0 SP5
Windows 98 256MB + 32GB-HDD(空き10GB)

Aベストアンサー

VB6の
http://homepage1.nifty.com/rucio/main/Samples/vb6SampleDateDiff.htm
日付の差の年数を求める例の
日付(#・・#)のように入れてみたら。ついでに/で区切る方法とか、年月日の壱拾所順序を入れ替えるとか。
#1でご回答の「地域と言語のオプション」が影響かもしれない。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_k08.htm
には質問と同じ形式も載っているが。
参考ですが、VB.NETですが
http://www.r-nakai.com/archives/81
のような記事もあります。

Qマンションバルコニーのひび割れ補修について教えてください。

マンションバルコニーのひび割れ補修について教えてください。

マンションのバルコニーの壁と手摺壁の接合部に発生したひび割れです。
打継ぎ部分に当たると言うことです。
画像を添付します。
ひび割れの程度として・・・1センチ以上のひび割れです。

★この場合の最適な補修・修繕方法を教えてください。

また、このひび割れは一度表面だけをコーキング法で補修してもらいましたが
経年経過により・・・再発している状況です。
当マンションでは、今年から大規模修繕に向けて
管理組合にて話し合いが始まります。

このひび割れは、うちだけではなく、他の住戸でも発生しているようなので
大規模修繕に合わせて補修・修繕を行ってもらうことが良いかと考えてます。

Aベストアンサー

 こんばんは。

 写真の接合部のひび割れの原因を把握することが必要です。

 地震などでひび割れが入ったのか、雨水の浸入などで、鉄筋、筋金などに錆が入り、錆の浮き上がり膨張でコンクリートがひび割れたのかなど調べることが必要です。

 地震などによる亀裂でしたら、コーキング剤での修復が有効ですが、鉄筋、筋筋などの錆でしたら、程度にもよりますが、大掛かりな修復工事が必要となる場合があります。

 いずれにしろ、補修業者にひび割れ部分を含めて調査依頼をしてもらい、見積りを出してもらうことです。見積もりも数社に依頼して、単なる金額や工事一式のという内容の見積りではなく、作業内容が分かる見積り明細書も出してもらうことです。

 見積りだけでも調査費用が発生する場合があります。

QVariant型で宣言してるのにEmptyになる

エクセルVBA2003について質問です。

Sub aaa1()
Dim a As Variant
Debug.Print TypeName(a)

End Sub

を実行してイミディエイトウインドウで確認すると
Emptyが返ってきます。
Variantが返ってこない理由は何でしょうか?

また、変数の方の宣言をしない場合は
Variant型になるはずなのに
Sub aaa2()
Dim a

Debug.Print TypeName(a)
End Sub

を実行すると、同じくEmptyが返ってきます。
Variantが返らない理由を教えてください。よろしくお願いします。

Aベストアンサー

Empty 値は、初期化されていない (初期値が代入されていない) バリアント型の変数を示します

バリアント型は、代入された値に合わせて型が設定されます。
代入される値の型があらかじめ解らないような場合に使用され、値が入った時点で型が設定される
ようになっている。
逆を言えば、バリアント型の値が無いとも言えます。
従って、TypeName の戻り値がバリアント型になる事は無いはずです。

Dim a As Variant
a = 123
Debug.Print TypeName(a)
a = "abc"
Debug.Print TypeName(a)
Set a = Nothing
Debug.Print TypeName(a)
a = 1.11111111111111E+27
a = CVar(a)
Debug.Print TypeName(a)

昔は、バリアント型の変数は、メモリの消費が多く処理速度が遅いので使うなと言われていたのですが。

Q集合住宅、1階、耐力壁のひび割れと耐震補強

竣工15年、1階屋内駐車場、耐力壁に、裏にまで貫通した、斜めひび割れが、表壁,裏壁合わせて21本あります。ひび割れ幅は、最大0.2~0.3mmです。長さ2~2.5mです。ここ数カ月間に新しいひび割れの発生はありません。柱、基礎コンクリートにひび割れはありません。柱の沈みもありません。建物周辺の石垣に動きはなく、2m離れて立つ電柱に傾きなどの動きはありません。ひび割れの数が多いこと、斜めの応力クラックであることで、耐震工事をした方がいいですか。耐震工事費用はどれくらいですか?500万円程度で、壁の入れ替えができますか?鉄筋の入れ替えだと300万円程度ですか?コの自字型の壁に囲まれた、5mX10mの広さの屋内駐車場です。建物は、平成9年3月竣工で、阪神震災後の改正建築基準法に適合し、耐震性のある建物です。ひび割れは、竣工3年目から発生し、8年目頃で終息しています。しかし、ひび割れ周辺に、成長きざしのある、微細な、斜め応力クラック様のものは多数あります。ご指導を、宜しく、お願いいたします。

Aベストアンサー

再です。

>建物はRC構造、6階建、分譲70戸入居です。

補足してもらいましたが、現地を見ないと判断は不可能です。耐震診断が出来る建築士に見てもらいましょう。

質問者さんも勉強されているようですが、質問文にもかなりにもかなり誤解されているところがあります。そのためプロに現地を見てもらわなければ解決することはありません。

>平成9年3月竣工で、阪神震災後の改正建築基準法に適合し、耐震性のある建物です。

阪神淡路大震災は平成7年(1995年)、建築基準法の改正は平成12年(2000年)です。6階建てのマンションだから設計は平成8年3月くらいには終わっていますので、改正後の基準法に適合とかありえないです。

>基礎コンクリートにひび割れはありません

基礎なんて見えないでしょ。

>ひび割れ周辺に、成長きざしのある、微細な、斜め応力クラック様のものは多数あります。

プロでも成長きざしなんてわかりません。

>耐力壁に、裏にまで貫通した、斜めひび割れが、表壁,裏壁合わせて21本あります。ひび割れ幅は、最大0.2~0.3mmです

貫通ひび割れでこの幅はありえないと思いますが。本当に貫通しています?もしくはコンクリート表面のモルタルのひび割れじゃないですか?

>ひび割れの数が多いこと、斜めの応力クラックであることで

斜めに入るのは何らかの要因で発生していると思われますが、建物全体と敷地状況を勘案してしか判断できません。

>500万円程度で、壁の入れ替えができますか?鉄筋の入れ替えだと300万円程度ですか?

ひび割れが壁の取替えになることはほぼありません。壁の入替と鉄筋の入替ってどういう意味でしょうか?同じように壁を壊して壁を作り直しならありえますが、鉄筋だけ入れ替えるなんて不可能です。

再です。

>建物はRC構造、6階建、分譲70戸入居です。

補足してもらいましたが、現地を見ないと判断は不可能です。耐震診断が出来る建築士に見てもらいましょう。

質問者さんも勉強されているようですが、質問文にもかなりにもかなり誤解されているところがあります。そのためプロに現地を見てもらわなければ解決することはありません。

>平成9年3月竣工で、阪神震災後の改正建築基準法に適合し、耐震性のある建物です。

阪神淡路大震災は平成7年(1995年)、建築基準法の改正は平成12年(2000年)です...続きを読む

QString型からInt型への変換

Public Class Form1

Private IntText As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

IntText = CInt(TextBox1.Text)
MsgBox(IntText)

End Sub

End Class

上記のソースは、テキストに入力した数字を
ボタンを押下することで、文字列型から数字型へと変換し、
メッセージを出力させるようにしております。

文字列型から数字型へと変換をする際に、
テキストにTextBox1.Textに何も入力がなかった場合、
エラーが生じてしまいます。

このエラーを出さないようにする手段はないのでしょうか。
または、エラーを回避させるロジックを組むのがよろしいのでしょうか。
世間一般でVBでの開発業務をする際には、
どちらを取るのかもお伺いできればと思っております。

尚、使っているツールはVisual Studio 2008 Express Editionです。

以上、宜しくお願い致します。

Public Class Form1

Private IntText As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

IntText = CInt(TextBox1.Text)
MsgBox(IntText)

End Sub

End Class

上記のソースは、テキストに入力した数字を
ボタンを押下することで、文字列型から数字型へと変換し、
メッセージを出力させるようにしております。

文字列型から数字型へと変換をする際に、
テキストにTextBox1.Textに何...続きを読む

Aベストアンサー

>このエラーを出さないようにする手段はないのでしょうか。
>または、エラーを回避させるロジックを組むのがよろしいのでしょうか。
色々方法はあるかと思いますが、一例としてif文でTextBox1.Textに何も入力がなかった場合を
判定して、その場合だけ別のメッセージを表示させる方法があるかと思います。

例えばこんな感じ(VBの文法はうろ覚えなのでミスってるかも?)
If (TextBox1.Text != "") then
MsgBox(IntText)
else
MsgBox("入力がありません")
endif

>世間一般でVBでの開発業務をする際には、
>どちらを取るのかもお伺いできればと思っております。
処理の目的や他の処理との兼ね合いもありますので、一概には言えません。
ただ、データは入力時にチェックして不正な値を入力させないのが基本ですから、
まず入力チェックを行い、不正な値(今回の場合は入力なし)には
エラー処理を行わせることが多いと思います。

Q踵のひび割れ?かかとの痛み

今日の夜中に踵の部分が結構痛くて目が覚めました
10~20秒くらいで治まったのですが原因がよくわからず困惑しています。
その後はあるいても特に痛みは感じたりしていません。
踵がひび割れしているようにもみえます。
ひび割れで痛みが発生した場合は一度のみでなくひび割れの痛みはずっと続くものなのでしょうか?
一回痛くなったあとは特に痛くないなんてことあるのでしょうか?
ひび割れを意識した事がないのでご存じの方いらっしゃいましたらよろしくお願いいたします。

Aベストアンサー

表皮のひび割れで,目が覚めるほどの痛みだとすると
ひび割れ部分に、着衣の糸が絡んだとも思われます。
が、ひび割れしているようにも見える。という事であれば,表皮に糸が絡んだとは考えにくいですね。
まだ、一回だけなので、ひび割れとの関連は想定できません。
急に運動をしたり,かかとに衝撃を受けた。なども考えられるので、しばらくは様子を見るしか無いと思います。

QVB6.0 String型→Long型変換方法について

Visual Basic6.0を使用しています。
String型の値をLong型へ変換したいのですがどうやればよろしいでしょうか?
①→②のように変換したいです。

s は String型変数
l は Long型変数


s = "aaa"  'aaaは任意の値


l[0]=0x6161
l[1]=0x0061

Aベストアンサー

こんばんは。

s = "aaa"  'aaaは任意の値
0x というのは、16進ですから、
Long 型の配列に格納するためには、一度、10進に戻さないといけません。

>l[1]=0x0061
このままでは入りません。0x0061 は、10進で97 です。
つまり、文字をコードに変換すればよいわけです。
0x0061 自体は、格納しようにも、16進ですから、Long型変数には格納できません。

Dim s As String
Dim buf
Dim ret
Dim i As Long, j As long
Dim l(9) As Long
 s = "aaa"
 For i = 1 To Len(s)
  a = Mid(s, i, 1)
  buf = AscW(a)
  l(j) = buf
  j = j + 1
 Next

後の問題は、逆に戻す時でしょうね。

For i = 0 To UBound(l)
 buf1 = buf1 & ChrW(l(i))
Next

私が、質問の内容から思いつくのは、このぐらいです。

Q購入マンションの玄関にひび割れ発見

こんにちは。
今年5月に購入したマンションについて、
先週玄関の掃除をしていたところ、大理石?風の玄関のタイルに
ひび割れを発見しました。

購入したマンションには、住宅性能保証制度、建築住宅性能評価書、設計住宅性能評価書が付いています。

住宅性能保証制度の「共同住宅等性能保証約款」には
短期保証基準の共別表に
「保証対象部分…左官、吹付、石張、タイル工事
(床、壁、天井等の左官、吹付、石張、タイル工事部分)
保証期間…2年
先の保証対象部分のモルタル、プラスター、しっくい等の仕上げ部分、石・タイルの目地部分、張石・タイルに、剥離、変退色、著しいひび割れなどが生じてはならない。
なお、これらの部分に軽微なひび割れが生じることは避けられず、住宅品質又は、性能を損なうものではない。」

との記載がありました。
正直著しいひび割れと軽微なひび割れの判定基準があいまいで、
よくわかりません。
どの程度が著しいひび割れと判断され、また軽微なひび割れと判断されるのでしょうか?

とりあえず保証者である販売業者に連絡するしかないわけですが…
わかる方教えてください。

こんにちは。
今年5月に購入したマンションについて、
先週玄関の掃除をしていたところ、大理石?風の玄関のタイルに
ひび割れを発見しました。

購入したマンションには、住宅性能保証制度、建築住宅性能評価書、設計住宅性能評価書が付いています。

住宅性能保証制度の「共同住宅等性能保証約款」には
短期保証基準の共別表に
「保証対象部分…左官、吹付、石張、タイル工事
(床、壁、天井等の左官、吹付、石張、タイル工事部分)
保証期間…2年
先の保証対象部分のモルタル、プラスター、しっくい...続きを読む

Aベストアンサー

内覧などで、指摘して未済は別として、引渡し後の
当て傷などは、有償扱いとなります。
石orタイルのひび割れとの事なので、多分該当部の
下地の亀裂により表層がひび割れになっています。
5月に購入との事だと、初期のアフターサービスは
終わっているのでしょうね。
先ずは、事業主に事象の連絡→施工会社が確認となる
ので、1年アフターサービス時に補修をしてもらえる
ように話せばいいと思います。

Qbyte型をstring型として扱うには

今日の質問/マイページに反映されないので、再度の質問です。
windows2000-sp4/vb6-sp5環境です。ユニコードのデータをvbで直接入出力し、vb内でstring型で扱いたいとおもっています。今のところ、vbの入出力では、自動的にsjis/unicode変換がされるので、binaryで受け取り、string型にするのかなと思っています。byte型で受け取り、APIの"MoveMemory"("RtlMoveMemory")でstring型にcopyするのかなとは思っているのですが、うまくいきません。経験不足そのものです。vbでのbyte型とstring型双方向のbinaryな変換の方法をお教えください。

Aベストアンサー

dim s as string
dim b() as byte

'文字列 -> byte配列
b = s

'byte配列 -> 文字列
s = b


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング