1 名前:デフォルトの名無しさん [2013/02/15(金) 16:54:12.79 ] ここは Visual Basic 〜6.0 の質問スレです。 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。 ○ 質問者の心得 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。 二.VBScript、インストーラーなどはこのスレでOK。 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。 四.荒らしは相手しない。 ○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。 三.回答する上で必須ではない情報をむやみに聞き返さない。 四.荒らしは相手しない。 五.VB情報募集中。 六.回答は質問者が理解できるよう具体的に。 MSDN Online Japan ホーム www.microsoft.com/japan/msdn/default.asp Visual Studio 6.0 Service Pack 6 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx Google www.google.co.jp/ 前スレ VBプログラマ質問スレ(Ver.6.0 まで) part61 toro.2ch.net/test/read.cgi/tech/1359721249/ ※「まず自分で調べる」クセを身につけよう。
116 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 03:42:17.69 ] GetPrivateProfileStringで全角文字使えないかんじ?
117 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 03:48:14.84 ] s = String(20, " ") r = GetPrivateProfileString(ap,ky,df,s,20,fl) n = len(s) としたとき 全角文字が無いとき、例えば abcdefg だったとすると r=7 n=20 ってなって8文字目がNullコードになってるんだけど 全角文字があるとき、例えば あいう だったとすると r=6 n=17 ってなって4文字目がNullコードになって sの変数のサイズが変わっちゃうんだけど sの消えた3文字分のメモリはどこいっちゃったの?って感じで これってヤバイの?大丈夫なの?
118 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 03:49:47.13 ] sには固定サイズの文字列渡したほうがいいの? Dim s As String * 20 みたいな
119 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 06:59:19.24 ] 文字数とバイト数は違うぞ LenじゃなくてLenB使ってみ
120 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 10:59:04.17 ] >>117 全角を使うときは値をダブルクォーテーションで囲えアホが
121 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 19:59:22.42 ] >>119 それに何の意味があるのだろうか Len("abc") > 3 LenB("abc") > 6 Len("あいう") > 3 LenB("あいう") > 6 Len("abあ") > 3 LenB("abあ") > 6
122 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:01:48.31 ] >>120 ダブルクオーツで囲っても>>117 と結果同じだったんだけど・・・
123 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:09:29.55 ] GetPrivateProfileStringは最初の=以降から文末までを読み込むようで "あいう"えお" という二重引用符を間に挟んでやると 文頭と文末の引用符を除いた あいう"えお を返してくれたよ
124 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:12:51.87 ] >キー名に関連付けられている文字列が単一引用符や二重引用符で囲まれている場合、GetPrivateProfileString 関数はこれらの引用符を取り除きます。 単一引用符でも取り除かれるのか これは意外だ つかVB6付属のMSDNには文字列書き込むときには引用符でくくれとは書いてないように見えるのだが
125 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:22:42.95 ] 今どきiniとかないわー xmlにしろよ
126 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:25:59.25 ] っていうか質問の内容を勘違いしないで 全角文字が取得できないなんて一言も言ってないし 20文字分(40bytes)のメモリを割り当てた変数が 全角含む文字列渡すと全角1文字につき1byte分減って戻ってくるけど これってメモリ関連のトラブルの発生源になったりしないか聞きたいんだけど
127 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:28:31.08 ] 固定長文字列にしたら元の文字列サイズ分ちゃんと戻ってくるのな 可変長文字列をGetPrivateProfileStringに渡しちゃまずいのか?
128 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:35:35.69 ] >>125 少量のキーと値の関連付け保持に便利じゃん レジストリは使いたくないし、xmlだと一部の文字にエスケープとか使って配慮しないといけないし
129 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 20:58:55.89 ] >>126 ANSIとUNICODEの変換でそう見えるだけ UNICODEでの文字数とANSIの文字数(バイト数)は一致しない
130 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 21:17:03.54 ] 固定長文字列でもちゃんと戻ってくるかと思ったけど違ったわ "A"で初期化したけど可変長文字列と同様に減って戻ってきてるわ 減った分が32、半角スペースで埋まって戻ってきた やはり仕様なのか、もしくは全角使うのがまずいのか GetPrivateProfileStringAじゃなくGetPrivateProfileStringWを使うべきなのか >>129 APIが全角1文字を半角2文字分としてよこしてVBが2文字分の領域を確保するけど バイトコードからVBが全角文字だと判断して2文字分を1文字分に減らすってこと?
131 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 21:25:24.91 ] あ=82A0 をAPIが 82 と A0 の1バイト文字(半角)2文字分としてVBに渡して がVBで確保した2文字分の領域4バイト 0000 0000 に上書きされて 0082 00A0 となったところをVBが全角文字と判断して 0082 00A0 → 82A0 という1文字分(2バイト)減らして変数に戻すってこと?
132 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 21:57:53.94 ] VBが確保した領域10文字なら10バイト分をAPIに渡して 文字列が「あAA」なら APIは10バイトの最初2バイトを82、A0で埋めて3バイト目を65、4バイト目を65、5バイト目を0にしてVBに返し VBは10バイトを1バイトずつ解釈していってunicodeに変換して変数に再割り当てしてるってことなのか? でもそれだと適当な文字で初期化した固定長文字列の減った部分が半角スペースで初期化されてるのはおかしいし どうなってんだこれ
133 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:05:41.59 ] 何このバカ? 値が取れればそれでいいだろ?頭使えよ。
134 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:06:22.11 ] >>129 なんかわけわかんねえレスだなと思ってたらGetPrivateProfileStringの戻り値の話? 戻り値は書き込んだバイト数返すはずだからLenやLenBした値と違うのは当たり前じゃね? そうじゃなくて変数の割り当てメモリが減ってるって話なんだけど
135 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:10:14.91 ] GetPrivateProfileString自体がVB6の関数でも何でもないのに戻り値が理不尽だと騒ぐバカ。 相手にする方がどうかしてる。
136 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:12:23.64 ] だれも戻り値の話なんかしてないだろ 確保しておいた変数のサイズがAPIに渡したら変数のサイズが変わったって言ってんだよ 文字列の長さの話じゃねえし戻り値の話でもない
137 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:14:00.99 ] >>136 冷静に。 サイズなんか変ってないよ。 BSTRとみなした時の文字数が変っただけ。
138 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:14:30.29 ] 変数の割り当てメモリはどうやって調べた? 文字列の長さ=割り当てメモリじゃねーぞ。
139 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:15:56.02 ] >>136 なに興奮してんだこのアホ。関係ない戻り値で反応しやがったw
140 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:26:25.87 ] >>137-138 Dim s As String * 10 s = String(10, "A") ' s="AAAAAAAAAA" Len(s)=10, LenB(s)=20 GetPrivateProfileString(ap,ky,df,s,10,fl) のコードで 文字列が"AAAA"の場合 s="AAAA0AAAAA" ( 0 はNull文字) 文字列が"あAA"の場合 s="あAA0AAAAA_" ( 0 はNull文字 _ は半角スペース) 固定長文字列を渡した場合、全角含む文字が渡された場合に後部に半角スペースが入るのは何でなの? これって確保した変数サイズが変わったってことじゃないの?
141 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:29:01.06 ] >>140 半角スペースだって分かってるならTrimすればええやん 初心者?
142 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:30:12.12 ] > これって確保した変数サイズが変わったってことじゃないの? 違います。終了。
143 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:33:16.70 ] >>141 Trimする意味がわからんのだが? >>142 全部Aで埋めたはずなのに何で後部の文字が半角スペースになるの?APIの仕様に書かれてない処理なんだけど
144 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:33:18.57 ] >>140 とりあえず2つの問題を区別しよう。 (1) なぜ最後に半角スペースが付くのか (2) 「変数のサイズ」(確保されたメモリ領域のバイト数)は変ったのか (1)は本当だと仮定して理由は分からない。 (2)は変ってません。変ったのは、20バイトのメモリ内のデータをUTF-16の文字数と みなした時の文字数だけ。
145 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 22:44:53.79 ] >>144 Lenしたときの文字数が変わるのは可変長文字列を使った>>117 のケースで >>140 は固定長文字列を使ってるからAPI通したあともLenした文字数は変わってない 可変長のときなら減った文字数分の半角スペースが固定長文字列のときに後部に埋まってるという話なんだけど 固定長のとき 確保したメモリいっぱいにAの文字を埋めたんだから APIが前部のデータを上書きしても後部はいじってないのだから メモリをそのまま引き出したのなら後部はAのままのはずなのに半角スペースが入ってる これでメモリに異常は起きてないっておかしいんじゃないの?
146 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 23:07:10.72 ] つかもういいよ 仕組み知ってる人いなさそうだし ここで質問した俺が大馬鹿だったてことでいいよ VBでAPIを使うときVBがAPIとどうやりとりしてるかの知識が足りない俺がバカでした さよなら
147 名前:デフォルトの名無しさん mailto:sage [2013/02/26(火) 23:10:48.17 ] VB6っていうか、もうWin9x時代のこと大分忘れてるから混乱するな... 冷静に考えるとBSTRはUTF-16だから、ポイントしている領域が同じなら「文字数」が 変るのは確かに変だ。 質問者はひょっとして(今時)Aの付く方のAPIを呼んでるのかね。 VBはこの辺りブラックボックスだから困るんだけど、この場合は、恐らく 関数の呼び出しの前後で.NETでいうマーシャリングが入るんだろう(想像)。 呼出し後に文字数が変るのはこのためか?
148 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 02:48:18.10 ] APIではバッファの最大長を指定する 戻りでヌルターミネートされた先の領域なんて保障されてないだろ API呼び出し後にANSI-UNICODEの変換が入ってるから その変換時に(VBとしての)変数のサイズが変わっても不思議も問題もない
149 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 03:02:32.75 ] VB6からWのほうって呼び出せるのか?
150 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 03:05:23.37 ] 呼べることは呼べる でもA呼び出すよりメンドクセ
151 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 04:26:45.46 ] 呼び出せんのか 知らなかったわ どうやんの?
152 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 04:46:20.16 ] 呼び出すだけなら普通に〜WまでDeclareして呼ぶだけ 文字列渡したらどうなるかは知らん
153 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 05:00:16.69 ] 当然ながらメンドクセと言ってる部分のことを尋ねているのだが
154 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 05:03:47.90 ] Visual Basicに関するメモ homepage3.nifty.com/numericworld/computer/vb/memo.htm APIとの文字列のやりとり(ANSI vs UNICODE変換) を嫁
155 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 12:27:49.61 ] declare function GetPrivateProfileStringW lib "kernel32" ( _ byval ap as long, byval ky as long, byval df as long, byval s as long, byval l as long, byval fl as long) as long dim s as string s = string(10, vbnullchar) l = GetPrivateProfileStringW(strptr(ap), strptr(ky), strptr(df), strptr(s), 10, strptr(fl)) s = left(s, l)
156 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 16:02:58.71 ] 正解!
157 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 21:39:47.58 ] %TEMP%フォルダに DF〜.tmpというゴミファイルが大量にたまってると思ったら 旧VBのせいかよ!
158 名前:デフォルトの名無しさん [2013/02/27(水) 21:42:33.26 ] いつの間にかVB.netをVBって呼ぶようになったのね。 VBできますか?って言われたから、てっきりVB6.0の事かと思って「ハイ!」と答えたら あとでVB.netだったと分かりさあ大変。納期は3週間しかないけど対応できるだろうか? バカだなおれorz
159 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 21:46:01.33 ] アイコン使ってる旧VB製のやつが原因か まぁIE9でも作られてるが・・・
160 名前:デフォルトの名無しさん mailto:sage [2013/02/27(水) 21:53:10.31 ] アイコンなんて使ってないけど?
161 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:41:42.10 ] 変数のポインタアドレス渡すとか何か怖いな
162 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:43:47.88 ] >>155 ていうかこれ書き込まれる文字コードはunicodeってわけじゃないのな 引数としてunicodeが渡せるってだけなのな どっちみちファイルにANSIで書き込まれるのならAとWどっちを使っても同じやん旧VBからは
163 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 21:57:08.78 ] INIファイルの先頭にBOMがあるかないかで動作が変わったような記憶が。 違ってたらごめん。
164 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 22:13:13.73 ] >>161 ポインタアドレスってなんだよ?ポインタ自体がアドレスだろうが? それともポインタのポインタか?そんなもん渡してませんが何か? これだからVB6オンリープログラマは怖いわ・・・。
165 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 22:24:36.72 ] ポインタってアドレスを指す変数のことじゃなかったのか・・・勉強になるなこのスレ
166 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 22:43:02.98 ] おとなしくxmlを使えばいいのに
167 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:04:23.74 ] >>165 いつからポインタが変数になったんだよ?w
168 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:06:05.49 ] 配列なら変数だな
169 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:18:06.38 ] 普通の変数は値を保存しているけど ポインタは変数の値を保存しているメモリのアドレスを保存している変数
170 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:21:17.55 ] ポインタは変数ではないよ。そんな風に教えたのは一体どこの専門学校だよ?大原か?
171 名前:デフォルトの名無しさん [2013/02/28(木) 23:23:23.90 ] >>170 ググるとポインタは変数ですと説明しているサイトが山のようにひっかかるからだろ? アホの仲間入りをさせておけばええやんw
172 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:24:10.45 ] 語義を考えれば分かると思うが、ポインタとはもともとは左辺値が入る変数やレジスタのこと。 左辺値そのもののこともポインタと言ったりするが、それは派生的用法だろう。
173 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:24:30.44 ] >>169 ポインタ (プログラミング) - Wikipedia ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_ (%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
174 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:26:02.52 ] 変数のように扱えるから、初心者はアドレス専用変数と考えると分かりやすいからでしょう。 言語仕様は関係ないでしょうから。
175 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:28:59.80 ] >>172 >ポインタとはもともとは左辺値が入る変数やレジスタのこと。 一体どんな言語を前提として言ってるのかね?アセンブラかい? だったらWORD PTRとかQWORD PTRとかを変数と呼ぶのかい? 少なくともC言語では言語仕様上ポインタは変数ではないぞ。 変数と同じように値を代入する事はできるがな。
176 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:30:23.30 ] VB6でポインタを語っている時点で終わってる訳だが?
177 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:31:46.23 ] 前スレに関数ポインタをVBから実行するテクがあったな
178 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:33:29.67 ] StrPtrとかなんで隠し関数なんだ?
179 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:35:23.62 ] >>175 だから、君が本来の意味と派生的な意味の区別がついてないだけ。 馬鹿はこれだからな。人が言ってるそばからまったく。
180 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:35:36.60 ] AddressOf 演算子を変数だと言い出す奴が出現しそうだなw
181 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:35:47.31 ] 仕様と実装は別じゃね Cコンパイラがポインタを変数のように扱うかもしれんだろ
182 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:36:37.23 ] 本来の意味と派生的な意味をごっちゃにしてる奴が話を混乱させているだけだろ?
183 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:42:34.41 ] 「ポインタ変数」と書いてるサイト大杉ワロタ
184 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:50:09.01 ] >>183 Cの場合はポインタは型。 つまり「ポインタ変数」はポインタ型の変数と言う意味。 だから何もおかしくない。
185 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:51:12.24 ] この辺り、ポインタ変数もムーミン村とかバカボンパパと同じ系統のネーミングだなw
186 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:55:05.08 ] 関数へのポインタ = 関数ポインタ 変数へのポインタ = (変数)ポインタ ポインタを入れる変数 = ポインタ変数 関数へのポインタ = 関数ポインタ 関数へのポインタを入れる変数 = 関数ポインタ変数 ここまでいえば、ポインタとポインタ変数の 違いぐらいわかるだろ。
187 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 23:58:07.54 ] WORD pointer ← WORD型変数 ↑ WORD型 WORD* pointer ← WORDポインタ型変数 ↑ WORDポインタ型
188 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:00:57.25 ] WORD* pointer ↑ WORDポインタ型 int* pointer ↑ intポインタ型 void* pointer ↑ voidポインタ型 ?* pointer ↑ 型名を省略して、ポインタ型 そしてpointerはポインタ型変数 変数の中に入っている値 ・・・ ポインタ
189 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:03:24.02 ] >>186 まだ言ってるのか。 概念としては、アドレスを入れる入れ物としてのポインタがあくまで先。 Cには型の概念があるから、ポインタ変数の型のことをポインタと呼ぶことにした、 という順番。まさにムームン村。
190 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:04:59.38 ] > ポインタ変数の型のことをポインタと呼ぶことにした、 してない。 ポインタは変数の中に入っている値。 ポインタと ポインタ型と ポインタ変数は それぞれ別 数値と 数値型と 数値型変数 といえば理解できるだろ?
191 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:06:20.94 ] だから語義を考えろって。生きてるうちに少しは頭使えよ。 pointer = point + er。
192 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:06:50.89 ] それで?
193 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:08:11.73 ] 位置を支持するもの(変数)だからpointerって言うんだよ。 位置だけならただのpointじゃねえか。 こんな簡単な話がわからない奴がいるんだからな。
194 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:08:23.58 ] おまえら旧VBでポインタ扱うことあるの?ならこの話を続けてもいいよ
195 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:10:33.15 ] wiki.answers.com/Q/What_is_a_pointer_variable What is a pointer variable? A pointer variable is a variable that contains the memory location of another variable or an array (or anything else in memory). Effectively, it points to another memory location.
196 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:11:31.11 ] pointerって黒板指す奴だな
197 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:15:49.97 ] #define BASE 0xA000 WORD *pointer = BASE ← これ(BASE)が位置(ポイント) BASEがポイントであり、 pointerに入っている値(=0xA000)は ポイントを指し示すものだから、ポインタ
198 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:17:28.10 ] >>197 馬鹿だろお前
199 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:19:59.89 ] 反論できなきゃ、お前が馬鹿ってことになる。 口を出したのなら、最期までやらなきゃ自滅だよ。
200 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:20:03.06 ] defineってマクロじゃん テキスト的にその文字列を置き換えるってだけのものなのに
201 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:20:59.42 ] 東京タワーの場所 = 位置 その位置を表す数値=ポインター
202 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:27:28.17 ] 2つ3つの意味を持つ言葉ってプログラミング言語にはつきものなのかな プロセスとかパイプとか
203 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:27:36.24 ] WORD point; WORD *pointer = &point;
204 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:28:33.59 ] >>199 反論てw >>197 に反論が必要だと思ってるのか。 厚顔無恥ってのはすごいことだね。 2行目で自分で「ポイント」だと言ってる同じ0xA000という値が、 5行目では「ポイントを指し示すもの」になってることに何も疑問を感じないのかよ。
205 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:31:45.50 ] 東京タワーの場所 = 位置(BASE) = ポイント その位置を表す数値(0xA000)=ポインタ 0xA000 = ポインタ 0xA000 を入れるための変数 = ポインタ変数 なにか矛盾でも?
206 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:34:39.31 ] 変数の位置を指し示す値だからポインターだろ。
207 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:34:43.24 ] >>201 だから違うよ。そういうことじゃない。 その例えでいうのなら、たとえば首相の現在位置を表示する掲示板(そんなものがあるとして)がポインタ。 東経何度北緯何度というのはただの位置情報であって位置の指示者(ポインタ)じゃない。
208 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:36:20.33 ] 結論まだ?
209 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:37:17.49 ] 首相の現在位置 = ポイント だな。 現在位置を表す値がポインタだ。
210 名前:デフォルトの名無しさん mailto:sagege [2013/03/01(金) 00:39:31.13 ] 「ポインタ演算」という言葉があることを知っていれば、 ポインタは演算できるものだってわかるはずだがね。
211 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:39:37.77 ] >>209 だから違うって馬鹿か。 それは「位置情報」であって「位置の指示者」じゃない。
212 名前:デフォルトの名無しさん mailto:sagege [2013/03/01(金) 00:40:43.81 ] 「位置の指示者」って変な用語だなw ポインタは演算できるもの、すなわち 値であることは明らかだ。
213 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:41:53.41 ] >>210 納得した。確かに値だ。
214 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:44:16.42 ] しかし、「メモリ上の位置をポイントする変数 = ポインタ」というのが ポインタという概念の出発点で、あとの用法はあくまで派生的なものだ、ってそんなに難しい話か? まあ世の中馬鹿多いし、だいいちここはVBerのスレだからあれか...
215 名前:デフォルトの名無しさん mailto:sagege [2013/03/01(金) 00:49:14.63 ] >>214 だからポインタは演算できる値だって結論でただろ? メモリ上の位置=ポイント 例えば特定のポイントに変数aがあるとする。 その変数aのポイントを指し示す変数b(ポインタ変数)がある。 ポインタ変数bの中に入っているのがポインタ ×「メモリ上の位置をポイントする変数 = ポインタ」 ○「メモリ上の位置(ポイント)を指し示す値 = ポインタ」 ポイント と ポインタ は別物なんだよ。 ポイントが変数aの場所だとして、 ポインタは変数bに入っているんだよ。
216 名前:デフォルトの名無しさん mailto:sage [2013/03/01(金) 00:55:30.01 ] >>215 そういう物の言い方って馬鹿特有だね。 馬鹿って何度言っても「位置情報」と「位置情報の指示者」の区別が付かないんだな。 っていうか、自分でポイントを表す値がポインタだ、って言ってて何の疑問も感じないんだから凄い。 まともな教育受けてるのか君って。