VBで、WindowsAPI関数のGetComputerNameを使って、コンピュータ名を取得する
処理で、コンピュータ名の定義が、50バイト固定のString型になっています。
コンピュータ名は問題なく取れるのですが、50バイト固定のため、後半にnull
文字列が入ってしまい、除去する方法がわかりません。
(replace命令等チャレンジしましたが、だめでした)
どなたか、nill値の除去方法をお教え下さい。宜しくお願い致します。

A 回答 (4件)

データ型の宣言で固定長だからじゃないですか?


Dim ComputerName As String * 50 'API用バッファ
Dim strName As String '文字バッファ

strName = Left(ComputerName, InStr(ComputerName, vbNullChar) - 1)
←maruru01さんの方法

以上
    • good
    • 0

再びmaruru01です。


No.2のElvinさん、TrimではNullは削除出来ません。
横から口を出して申し訳ありませんが、質問者の方が勘違いされるといけないので。
不快に思ったらすみません。
では。
    • good
    • 1

文字列からスペースを削除する Trim ではどうでしょうか?



Trim(文字列)
    • good
    • 0

こんにちはmaruru01です。


次のようにします。

NoNullName = Left(ComputerName, InStr(ComputerName, vbNullChar) - 1)

では。
    • good
    • 0

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

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

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

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

QD905i でmusic,jpにマイメニューに登録後の削除の仕方

はじめまして。
携帯に詳しくないのでよろしくお願いします。

今日ドコモのD905iでmusic,jpフルのmusic,jpトリ放題に315円で入会登録したんですが、さらにお金がかかるとしらなかったので、いらないので削除しようとしたら、マイメニュー画面にはmusic,jpトリ放題はあるんですが、いくら押しても画面がきりかわらず、仕方ないのでミュージックの画面最初からで行くと、入会してください、になっています。
退会削除をを押しても、入会してませんと出てきます。
入会してないならないでそれでいいんですが、マイメニューの画面でmusic,jpフルはどうやって削除出来るんでしょうか?

サイトに行っても登録してませんで、マイメニュー画面から消えてくれません。

詳しい方教えてください。

Aベストアンサー

マイメニューから今一度、確認して見て下さい。
無料、有料かかわらず会員登録されているサイトが表示されます。
もしmusic.jpがあれば会員登録されていますので
マイメニューからmusic.jpのサイトを選択するとサイトに飛びますので
下の方にマイメニュー削除があるのでそこから
入った料金コースを選んでiモードパスワードを入れれば削除出来ます。

music.jpのサイトを確認して見たんですが色々な料金コースメニューがあったので
削除出来ない場合は料金コースが違うのかもしれないのでマイメニューの登録内容の説明文を見て確認して削除してみて下さい。

どうしても分からない場合はドコモショップでも
一緒に消してくれるのでお気軽にご来店して下さい。

QRegQueryValueExでエントリ名にNullを指定するとエラー

拡張子から、登録されているアプリケーションを探すために、レジストリを見ようとしています。

\HKEY_CLASSES_ROOT\<.拡張子>
の中の、(標準)エントリの値を探し、
\HKEY_CLASSES_ROOT\探した名前\shell\open\command
の中の、(標準)エントリで目的とするアプリケーションを見つけられるところまでは判ったのですが、
この最初のエントリ値を求めるところでつまづいています。
下記のような処理で、RegQueryValueExのところで必ずアプリケーションエラーが出てしまいます。

Dim tmpRet As Long
Dim tmpKey As Long
Dim tmpBuf As String
Dim tmpBufLen As Long

tmpRet = RegOpenKeyEx(HKEY_CLASSES_ROOT, ".txt", 0&, KEY_ALL_ACCESS, tmpKey)

tmpBuf = String$(256, " ")
tmpBufLen = 256
tmpRet = RegQueryValueEx(tmpKey, vbNullString, 0&, 0&, tmpBuf, tmpBufLen)
tmpBuf = Left$(tmpBuf, tmpBufLen - 1)
MsgBox ("データ値:" & tmpBuf)

拡張子から、登録されているアプリケーションを探すために、レジストリを見ようとしています。

\HKEY_CLASSES_ROOT\<.拡張子>
の中の、(標準)エントリの値を探し、
\HKEY_CLASSES_ROOT\探した名前\shell\open\command
の中の、(標準)エントリで目的とするアプリケーションを見つけられるところまでは判ったのですが、
この最初のエントリ値を求めるところでつまづいています。
下記のような処理で、RegQueryValueExのところで必ずアプリケーションエラーが出てしまいます。

Dim tmpRet As Lon...続きを読む

Aベストアンサー

最初のオープンした所と探すキーの場所が違うような気がします。

WScript.Shellオブジェクトを使うともっと手軽にできます。

Dim WshShell, exp, aKey, fkind, soft
Set WshShell = CreateObject("WScript.Shell")

exp=".txt"
aKey= "HKEY_CLASSES_ROOT\" & exp & "\"
fkind = WshShell.RegRead(aKey)
aKey= "HKEY_CLASSES_ROOT\" & fkind & "\shell\open\command\"
soft = WshShell.RegRead(aKey)
MsgBox "データ値:" & soft

Qyahoo.co.jpのアカウントを削除方法

yahoo.co.jpのアカウントを削除方法がわかりません。
よろしくお願いいたします。

Aベストアンサー

Yahoo! ヘルプ - Yahoo! JAPAN IDに関する
Yahoo! JAPAN IDを削除するには
http://help.yahoo.co.jp/help/jp/edit/edit-27.html

さらに不明点があればYAHOOホームページ内の右上に必ずヘルプがありますから、
ご参照下さい。

Q.NET Stringからバイト数を取得する。

初歩的な質問で申し訳ありません。

Stringから桁数ではなくバイト数を
取得する方法を教えてください。

Dim a As String
a = "00あ"

とあった場合、
aから4という結果がほしいです。

よろしくお願いします。

Aベストアンサー

こんにちは。

文字列の文字数・バイト数を取得する
http://www.bcap.co.jp/hanafusa/dotnet/moji02.htm
どうぞ。

Qgoogle.co.jpで検索した言葉の履歴削除の方法

google.co.jpで検索したワードがパソコンに履歴として残っています。スペースキーを2回叩くとすべて検索したものが順に出てきます。どうやって消したらいいのでしょうか? ちなみにIEのツール、インターネットオプション、cookieの削除、ファイルの削除すべてしてみましたが、履歴は消えません。どなたかわかるから教えてください。windows XP利用しています。

Aベストアンサー

IEのツール→インターネットオプションのコンテンツタブ→オートコンプリートで「フォームのクリア」で、全部消えます。

検索窓に出た個々のものは、反転選択状態でDELキーです。

残さないようには、オートコンプリートの使用目的「フォーム」のチェックを外したら良いです。

QString.Insertで文字数ではなく、バイト数で指定したい

String.Insertの第1引数でバイト数を指定したいのですが、
何か方法はありますでしょうか?

"ABCDE".Insert(2, ",") → AB,CDE
"あいうえお".Insert(2, ",") → あい,うえお

となるところを
"あいうえお".Insert(2, ",") → あ,いうえお
としたいのですが、代替のメソッドが無いように思えます。

環境はVB2005です、よろしくお願いします。

Aベストアンサー

Shift-JISのByte列に変換して挿入を行うといった処理が必要なのかも
# S-JISで表現できないUnicode文字がある場合別途対処が必要でしょう

Function MyInsert(ByVal ss as String, ByVal nLen as Integer, _
  ByVal sInsert ) as String
  dim sb as new System.Text.StrngBuilder
  dim enc as System.Text.Encoding
  dim buf as Byte()
  enc = System.Text.Encoding.Default
  buf = enc.GetBytes( ss )
  sb.Append( enc.GetString( buf, 0, nLen ) )
  sb.Append( sInsert )
  sb.Append( enc.GetString( buf, nLen, buf.Length - nLen ) )
  return sb.ToString()
End Function
# エラー処理など必要な処理を追加してください

Shift-JISのByte列に変換して挿入を行うといった処理が必要なのかも
# S-JISで表現できないUnicode文字がある場合別途対処が必要でしょう

Function MyInsert(ByVal ss as String, ByVal nLen as Integer, _
  ByVal sInsert ) as String
  dim sb as new System.Text.StrngBuilder
  dim enc as System.Text.Encoding
  dim buf as Byte()
  enc = System.Text.Encoding.Default
  buf = enc.GetBytes( ss )
  sb.Append( enc.GetString( buf, 0, nLen ) )
  sb.Append( sInsert )
...続きを読む

Q464.jpって削除されたんですか?

かなり前に464.jpを利用していて、最近はずーっと利用していませんでした。
友達から『464.jpってサイト知ってる?』と聞かれたので、久しぶりに何か読んでみようかなーと思い、午前中サイトを開いたのですが 『サーバーがみつかりません』と表示されました。
時間をずらして 今開いても見てもやはり『サーバーが見つかりません』となります。

464.jpはなくなってしまったのでしょうか?

Aベストアンサー

下記サイトによると「本日から1月31日までシステム移行作業中のため」だそうですが。

http://www.muramoto.net/

QVB6.0でコンピュータ名の取得

Visual Basic6.0で現在使用しているパソコンの名称を取得したいのですが可能なのでしょうか?

方法を教えてください。宜しくお願いいたします。

Aベストアンサー

参考URLにその方法が書いてあります。

参考URL:http://www.kit.co.jp/vbit/QAndA04.htm#コンピュータ名を取得するには

QIe9の検索語の履歴を完全に削除するには(2)

Ie9の検索語の履歴を完全に削除するには(2)
こちらで、検索語を表示しないでURLを表示する方法を教えていただきました。
http://oshiete.goo.ne.jp/qa/7284641.html

お教えいただいた方法はとても便利で今後はずっとこれにしようと思っているのですが、ご回答にあるhttp://www.google.co.jp/webhp?complete=0からhttp://www.google.co.jp/に戻ると検索語はまた表示されるようになります。「ツール→インターネットオプション→全般→閲覧の履歴→削除」で削除しても、検索語は削除されません。
http://www.google.co.jp/に戻っても検索語が表示されないようにするにはどうしたらいいでしょうか。つまり、検索語を記録から完全に削除してしまうにはどうしたらいいでしょうか。

Aベストアンサー

#2さんの補足に書かれていることですが

>Googleの検索ボックスに表示されるサジェストを、表示されないようにするのではなく、完全に消去つまり削除したいと思っています

Googleのサーバーにあるもので、しかも皆が同じものを利用しているのですから一個人が削除するということは無理でしょう。
#3でも書きましたが、検索履歴は個々のPC内に保存されているものですからそれぞれ削除することができます。
でもサジェストはGoogleのサーバー上にあるものですから削除はできません。
個人レベルでは表示するかしないかの選択になるわけです。

ちなみに、IEをオフライン作業にしてみればわかりますが、検索履歴は表示することができますが、サジェストはオフライン作業時にはサーバーにデータを取りにいけないので表示できなくなります。

Googleツールバーにはまだサジェストの選択肢が残っていますが、Web上の設定からはなくなってしまいました。
これは私も非常に「うざったく」思い、選択項目の復活を願っています。

QVBでネットワーク上のコンピュータ名をチェック

ある コンピュータ名を持つコンピュータがネットワークに繋がっているかどうかを調べて
返すということをしたいのですが…

例えば テキストボックスtext1 に"CP1"と入力して
コマンドボタンを押すと、ネットワーク上でCP1 が認識できたら
OKとメッセージ表示、できなかったらNOとメッセージ表示と。

NET VIEW などのコマンドを使えばよいのでしょうか。

Aベストアンサー

APIを使ってネットワークに接続されているコンピュータ名を取得します。
Dim nr As NETRESOURCE
Dim lpnr As LPNETRESOURCE
Dim bnr(1000) As Byte
Dim strRemoteName As String
Dim strComNeme As String
Dim hEnum As Long
Dim BufSize As Long
Dim ret As Long

strRemoteName = String$(512, 0)

nr.dwScope = RESOURCE_GLOBALNET
nr.dwType = RESOURCETYPE_ANY
nr.dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN
nr.dwUsage = RESOURCEUSAGE_CONTAINER
nr.lpRemoteName = "ドメイン名"
nr.lpProvider = "Microsoft Windows Network"

ret = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nr, hEnum)
BufSize = 1000

Do While WNetEnumResource(hEnum, 1, bnr(0), BufSize) = NO_ERROR
MoveMemory lpnr, bnr(0), Len(lpnr)
lstrcpy strRemoteName, lpnr.lpRemoteName
Debug.Print Left$(strRemoteName, InStr(strRemoteName, vbNullChar) - 1)
Loop

WNetCloseEnum hEnum
でネットワーク上のコンピュータ名を取得できるのでその中に指定したコンピュータ名があればOKなければNoのメッセージを出す。

APIを使ってネットワークに接続されているコンピュータ名を取得します。
Dim nr As NETRESOURCE
Dim lpnr As LPNETRESOURCE
Dim bnr(1000) As Byte
Dim strRemoteName As String
Dim strComNeme As String
Dim hEnum As Long
Dim BufSize As Long
Dim ret As Long

strRemoteName = String$(512, 0)

nr.dwScope = RESOURCE_GLOBALNET
nr.dwType = RESOURCETYPE_ANY
nr.dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN
nr.dwUsage = RESOURCEUSAGE_CONTAINER
nr.lpRemoteName = "ドメイン名"
nr.lpP...続きを読む


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

人気Q&Aランキング