トップページ⇒tech
992コメント284KB

***すれ立てるまでもない質問はここで 第6刷***

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
質問する前に
http://www.google.com/
http://2ch-kensaku.ddo.jp/
などで検索してみてください。

第1刷 http://piza.2ch.net/tech/kako/975/975576060.html
第2刷 http://piza.2ch.net/tech/kako/990/990082077.html
第3刷 http://piza2.2ch.net/tech/kako/993/993933402.html
第4刷 http://pc.2ch.net/test/read.cgi/tech/998403891/
第5刷 http://pc.2ch.net/test/read.cgi/tech/1001998049/
0153デフォルトの名無しさんNGNG
>>152
make love
0154デフォルトの名無しさんNGNG
>>152
条件として OS と処理系が与えられなきゃ、答えられない。
0155デフォルトの名無しさんNGNG
スレ、ここであってるよね?

Readline で補完方法をカスタマイズしたいんだけど、
man/info みたいな書き方じゃなくて、具体的な
方法つきの解説ってないの?

言語は Perlね。でも、例題つきならCでもいい。
0156デフォルトの名無しさんNGNG
>>152
mv sample.c up.c
# moon prism power
make up
mv up sample
0157デフォルトの名無しさんNGNG
>152
キショい
0158デフォルトの名無しさんNGNG
gdiplusは加算合成って出来ないのかしらん?
0159デフォルトの名無しさんNGNG
Delphi6パーソナルをダウンロードして気に入ったので参考書買おうと思ったら近所に売ってませんでした。
Delphi6パーソナルのパッケージ版に説明書はいってますけどこれってヘルプと内容同じなの?
0160デフォルトの名無しさんNGNG
複数のOS上への移植を意識したコードを書いてるんですが、
ifdefの嵐です。これを避けて綺麗なコードで移植性のある
ようにはかけないもんでしょうか?
0161デフォルトの名無しさんNGNG
>>160
OSの違いを吸収するレイヤー書いて
そこを対象OSごとのモジュールとして取り替えるぐらいじゃないすか?
0162160NGNG
>>161

やはりそれぐらいしかないんでしょうかね?

ただこのやり方だと、処理自体ほとんど同じで若干引数のとりかた
が違うとかその程度の違いの関数の場合、中身が同じものをほぼコピー
して2つもつようになります。そうすると、片方バグフィックス
した時にもう片方も忘れずに直さないといけなくて、メンテ量が増えて
いや〜んな感じ。
0163デフォルトの名無しさんNGNG
>>162
作業量自体は減らないけど、C++ を使って

 1. 共通インターフェイスの集合を仮想基底クラスとして定義する
 2. 各 OS 依存の処理は、1 で定義した仮想基底クラスを継承したクラスで実装する

とすると、少なくとも処理の追加を忘れることは無くなるし、それなりにきれいに書ける。

デザインパターン、特に Bridge パターンで検索すると解説が見つかるよ。
0164160NGNG
>>163
なるほどC++だとそういう芸当ができますね。
調べてみます。スマソ。
0165デフォルトの名無しさんNGNG
C++でできることはCでも大方できるんでござんしょ?
激しく面倒なのかも知らないけど。
0166163NGNG
>>165
できます。方法はいくつかありますが、一例をあげれば、こんな感じかな。

struct MIFuncs {
  int (*mi_read)();
  int (*mi_write)();
  int (*mi_xxx)();
  ...
};

#ifdef WIN32
MIFuncs WinFuncs = {
  &WinRead,
  &WinWrite,
  &WinXXX,
};
#endif
#ifdef BSD
MIFuncs BSDFuncs = {
  &BSDRead,
  &BSDWrite,
  &BSDXXX,
};
#endif

ただ重複するコードを継承を使って共有しようとか考え出すと面倒ですし、言語の支援がないと
非常に煩雑なコードになる(実質的に使い物にならない)技法もあります。選択の幅は C++ の
方が広め。
0167デフォルトの名無しさんNGNG
やりたいこととか規模 持てる時間によりけりということですかな
0168デフォルトの名無しさんNGNG
>>159
アーカイブを展開したディレクトリ/Documentationディレクトリ内のPDFファイルの
クイックスタートガイドとObjectPascal言語ガイドが印刷、製本されて入ってる。
しかし肝心の開発者ガイドが入ってない。
0169デフォルトの名無しさんNGNG
BPE圧縮のアルゴリズムについてかかれているページないですか?
0170デフォルトの名無しさんNGNG
>>169
http://hathor.csse.monash.edu.au/RJK/Compress/frame.html
http://www.gigamixonline.com/ds2/ds2bpe.html
http://citeseer.nj.nec.com/ncontextsummary/840057/0
後は C MAGAZINE の 1995年1月号 読むべし。
0171デフォルトの名無しさんNGNG
独学でCやってるんですが
『スコープ』って単語はどう言う意味で
使ってるんですか?
何の前触れもなく「変数のスコープ」
とか、「スコープアウト」みたいに
書かれているので意味がわからないです。

検索したんですけど、どこに行っても当たり前のように
語られていて、答えが見つかりません。

『〜に注目』みたいな意味なのかな…って、思ってるんですが。
0172171NGNG
有効範囲 とか出てきた…

変数のスコープ → 変数の有効範囲
スコープアウト → 有効範囲内からサヨナラ

ですか?
0173デフォルトの名無しさんNGNG
>>172
{ }
0174171NGNG
ちがうのですか?
0175VC++6.0NGNG
C:\Vc\dC\no050.c(8) : warning C4305: 'initializing' : 'const double ' から 'float ' へ切り詰めます。

この警告の意味は?
0176デフォルトの名無しさんNGNG
>>175
書いてあるとおり。
0177デフォルトの名無しさんNGNG
>>172
まあおおむね合っていると思う。
0178デフォルトの名無しさんNGNG
rawモードで取り寄せて、zipされたまま保存したファイルって、
どうやったら、dat形式で読めるようになるんですか??
0179デフォルトの名無しさんNGNG
>>178
まず(なってなかったら)拡張子を.dat.gzにして
gzipに対応したアーカイバで展開する。
結果の.datはテキストファイルとなる。

rawの出力そのままなら1行目が+OKや-ERRなどで始まっているので
その行はエディタなどで削除する。

おしまい
0180178NGNG
$ gunzip 1004183881.dat.gz
でサクっと解凍できちゃいました(^^;;
Linuxでも拡張子を合わせなきゃいけない時があるんですね(^^;;; ありがとうございます。
0181zNGNG
FORTRANのプログラムサンプルが豊富なページを教えてください。
0182デフォルトの名無しさんNGNG
Basic等の数値化関数「Val」って何の略ですか?
0183デフォルトの名無しさんNGNG
Valueやろ
0184182NGNG
>>183
そ、そうか。。validationとか全然関係ない事を考えてました。。
ありがとう。
0185デフォルトの名無しさんNGNG
最新のPlatform SDKを入手したんだけど、ATLのFixが入ってないみたいです。
2000年10月の分だとたしかinclude/atl30あたりにあったと思うのですが。
素のままのVC6.0のATLで問題なく使用できるようになったって事ですか?
0186デフォルトの名無しさんNGNG
質問じゃないけど。この板のタイトルの下にある

お勉強ページへのリンクスレ
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=949623869
参考図書スレ#2
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=964560144

ってどっちも消えとるようなんだが。。
だれも使ってないのか?
0187デフォルトの名無しさんNGNG
サーバの名前が変わったみたいね。
mentaiをpcに変えると上の奴は見える。下のはダメだった。
0188デフォルトの名無しさんNGNG
>>187
参考図書スレ#2 は使い終わって、現在は #3 で進行中。なお #2 は HTML 化待ちの状態
らしい。

推薦図書/必読書のためのスレッド3
http://pc.2ch.net/test/read.cgi/prog/1000542653/
0189186NGNG
>187-188
おおすまん。
でもこういうことはどこで決まっているのだろうか。
批判要望板?
0190デフォルトの名無しさんNGNG
>>189
リンク先更新総合スレに申し出る。
書き方は他の板の申請書き込みを読めば分かると思う。

ローカルルール等リンク先更新総合スレッド
http://teri.2ch.net/test/read.cgi/accuse/992178408/l50
0191170NGNG
>>169
あ、そうそう。C マガの 95/01 見つけたから、
捨てメアドでも書いてくれればスキャンした画像送るけど。
0192デフォルトの名無しさんNGNG
わざわざ見つけていただけましたか。
さすがに95/01のCマガは持ってないので甘えさせてもらっていいですか?

[email protected]
でお願いします。
0193デフォルトの名無しさんNGNG
>>191-192
こういうとき、PDFなんかで雑誌(記事)を売ってくれないかなって思えへん?
0194デフォルトの名無しさんNGNG
Win32application を選んでしまえばウィンドウ表示ソースくらいは自動的に作成されるが

これを自分ひとりでゼロから書ける奴はどれくらいいるのだろうか
0195デフォルトの名無しさんNGNG
>>194
猫でも出来るそうですが・・・
0196デフォルトの名無しさんNGNG
C++使ってるじゃないかぁあああああああああああ。
0197デフォルトの名無しさんNGNG
VBの仕様書が読めるようになりたいのですが、どこか勉強
できるHPはありませんか?
0198デフォルトの名無しさんNGNG
>>197
その仕様書書いた人に質問する
0199デフォルトの名無しさんNGNG
マイクロソフトのライブラリページ見ながら考え込んで
ふと気が付くと3時間経ってたりすると

何やってんだろう俺!

と思うのは正常か否か。
0200デフォルトの名無しさんNGNG
 じゃあ、仕様書の書き方分かるところ教えてください。
0201デフォルトの名無しさんNGNG
アビバ
0202デフォルトの名無しさんNGNG
RPGのパスワードがどういう仕組みになってるのか知らないけど、
ドラクエ�Uとかの例のパスワードなんかは、
このパスワードが入力された時は例外が発生して、
ってカンジのプログラムが組まれてるの?
0203デフォルトの名無しさんNGNG
>>202
 そりゃそうでしょ。
 あのパスワード登録した後、すぐにパスワードきいてみると全然違う
パスワード吐くし。
0204初心者NGNG
Cで整数を文字列に変換することは出来ないでしょうか。
0205デフォルトの名無しさんNGNG
>>204
Cでは無理です。C++なら出来ます。
0206デフォルトの名無しさんNGNG
>>204
ふつー、sprintf()使う。
0207初心者NGNG
>>205
BorlandのC++コンパイラを使ってるんですけど、
ただのCで書いてる中にC++の形式をもぐりこませて実行できますか?
0208初心者NGNG
>>206
あ、これがあればどうにかなりそうです。
ありがとうございます。
0209デフォルトの名無しさんNGNG
>>207
C++はCの文法を含んでいる。
Cで書かれたプログラムは、そのままC++でも通用する。
0210デフォルトの名無しさんNGNG
>>209
へー。
0211私もNGNG
>>209 ヘー。
0212デフォルトの名無しさんNGNG
都市伝説
0213デフォルトの名無しさんNGNG
>>209
型の扱いが厳しくなってるから、そのままだと通用しないこともある
0214老婆心ながら、NGNG
>>204 sprintfはポインタを渡して、そこに書き込んでもらう関数なんだけど、
領域の確保について気を使ってね〜 メモリを破壊されるよ〜。
0215209NGNG
わーったよ!
初心者相手に細かいことうだうだ書いてもしょうがないだろが。

・・・・でも、関数プロトタイプは書いてね。
0216デフォルトの名無しさんNGNG
そもそも、普通にC++コンパイラ使ってると、Cの機能しか使ってない
つもりでもC++のコードを書いていたりするんではなかろうか。
0217デフォルトの名無しさんNGNG
              / ̄ ̄ ̄ ̄ ̄
     ,__     |  ろけっとオッパイぼよ〜ん
    /  ./\   \_____
  /  ./( ・ ).\       o〇       ヾ!;;;::iii|//"
/_____/ .(´ー`) ,\   ∧∧         |;;;;::iii|/゙
 ̄|| || || ||. |っ¢..|| ̄   (,,  ) ナムナム   |;;;;::iii|
  || || || ||./,,, |ゝ iii~   ⊂  ヾwwwjjrjww!;;;;::iii|jwjjrjww〃
  | ̄ ̄ ̄|~~凸( ̄)凸 .(  ,,)〜 wjwjjrj从jwwjwjjrj从jr
0218デフォルトの名無しさんNGNG
生死をかけた闘いの中、二人の間には徐々に友情が芽生えはじめていた。
患者「ハァ、ハァ、、、その身のこなし。おっさん、あんたただの医者じゃねーな?」
医師「フッ、、、まだまだ若いモンには負けんさ、、」
患者「あんたは俺と同じ臭いがする、、、勝負はひとまずお預けにしないか?」
医師「賛成だな。殺し合いはあの戦争だけで十分だ、、、。
   ところで若いの、、、おぬしも1杯やるか?」
患者「そんなところに酒を隠してやがるのか。とんだヤブ医者だな。」
医師「なんの。ほんの気付け薬さ、、、それも、とびっきり上等のな。」
0219デフォルトの名無しさんNGNG
>>168
あ、なるほど買うかは微妙ですね。
ありがとうございました。
0220デフォルトの名無しさんNGNG
新規プロジェクトでwin32コンソールアプリケーションを作成し
StdAfx.hの中身を削除して、以下の2つのソースでの
実行結果を比較してみました。

Windows2000sp2
VisualC/C++6.0sp5
※StdAfx.hには何も書いてません。


質問1
ソース1において、実行結果が
Hello World!
あいうえお
とならないのはなぜか?

質問2
#define _UNICODE を
#include "stdafx.h" の前と後に書いたとき
結果が違うのはなぜか?


==ソース1==
#include "stdafx.h"
#define _UNICODE
#include <stdio.h>
#include <tchar.h>
int _tmain(){
_tprintf(_T("Hello World!\n"));
_tprintf(_T("あいうえお\n"));
return 0;
}

==実行結果1==
Hello World!


==ソース2==
#define _UNICODE
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
int _tmain(){
_tprintf(_T("Hello World!\n"));
_tprintf(_T("あいうえお\n"));
return 0;
}

==実行結果2==
Hello World!
あいうえお
0221sageNGNG
#undef _MBCSも一緒に入れて試してミロ
0222デフォルトの名無しさんNGNG
>>221
#undef _MBCS
を追加してしましたが
結果はおなじでした。
UNICODE定義をした場合、
NTでコンソールに出力するときは、MBCSになるように自分で
UNICODEから変換するする必要があるのでしょうか?
とすると
UNICODE定義をした場合、マクロ展開後のwprintfは基本的にNTで
使用する事はなく、あくまでもCE用???

なんだかさっぱりわかりません
0223デフォルトの名無しさんNGNG
>>222
stdafx.h を #inlcude すると、その前で定義していたマクロはすべてキャンセルされてしまう
模様。昔、はまったコードですが

#ifdef XXX
# include "sfdafx.h"
#endif

これだと、3 行目の #endif に対応する #ifdef がないと怒られます。したがって ソース2 は
_UNICODE 定義していないのと同じ結果になっていると思います。
0224デフォルトの名無しさんNGNG
>>223
ありがとうございました。
ということは、ソース2の方は、UNICODEが定義されていない状態ということですね!
残るは、なぜUNICODEが定義されていた場合、実行結果1のようになってしまうかです。
0225sageNGNG
UNICODEと_UNICODEを両方定義してみよう
0226デフォルトの名無しさんNGNG
>>225
追加してみましたが、
_tprintf(_T("あいうえお\n"));
は表示されませんでした
0227sageNGNG
ホントダ。
しらべてみる
0228sageNGNG
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <locale.h>

int _tmain(){
_tsetlocale(LC_ALL, _T("Japan"));
_tprintf(_T("Hello World!\n"));
_tprintf(_T("あいうえお\n"));
return 0;
}

こんなんでどう?
_MBCSでも_UNICODE,UNICODEでも
どっちでもいける。
0229デフォルトの名無しさんNGNG
>>228
すごい。
感動しました。
ロケールなんて想像できませんでした。
ロケールについて、少し勉強してみます。
ありがとうございました。
0230デフォルトの名無しさんNGNG
localeについてはとりあえず、こんなもんなんだと思っておけばヨシ。
国際化対応しなきゃいけないとか、そういうときになってはじめて
調べなさい。
0231デフォルトの名無しさんNGNG
桁落ちについてなんですが、

sqrt(1.0 - x*x)
(x は [-1.0, 1.0])

は桁落ちの心配とかしたほうがいいのでしょうか?
もし心配する必要があるのなら、どんなふうに対策するのが良いでしょうか?
0232デフォルトの名無しさんNGNG
>>231
まずどの程度の精度を求めているのかくらい書いたらどうだ?
0233231NGNG
>>232
ええと、、、
いっぱい精度があればそれにこしたことは無いんですが、
とりあえず10進数で5、6桁ぐらいあればいいようなきがします
(いままでまじめに有効桁数とか考えてなかったので、
どういう基準で桁数を決めればいいかもわかんないのです・・・)

「?桁の精度がほしかったらこうしろ」
とかっていうのがあれば、そちらのほうを教えてもらえると
うれしかったりします・・・
0234デフォルトの名無しさんNGNG
桁落ちをふせぐには、引算が入らない式に変形するのが基本だと思う。
いま考えたのは sqrt(1-x*x) ==> sin(acos(x)) という変形。どうだろ。

なんとなく、sin()やacos()の中で桁落ちしてそうで無意味な予感もするが。
0235デフォルトの名無しさんNGNG
求める精度が5〜6桁でよければ、標準関数ででる演算誤差なんて
無視してよろしい。
0236231NGNG
>>234
ありがとうございます!
こういう「引き算を別の形に変形」の一覧とかあるのでしょうか?
毎回変形を自分で考えるなんて、私の頭では無理そうです・・・
(sqrt(1-x*x) ==> sin(acos(x)) の変形も正しいのかどうか分かってません・・・)

#よく考えたら、
#sqrt(1-x*x) って、atan() とか asin()、acos() を自分で書いてるときに出てきた部分だった・・・
#acos()が入ってるとどうにもこうにも・・・むむ


>>235
floatの精度(5、6桁?)で、小数1ケタまでの精度を保つには、
引き算による桁落ちさえ気をつければ、doubleを使って、
お気軽にsin()、cos()、sqrt()とかをバシバシつかっても大丈夫でしょうか?
(3D関係の当たり判定を行ないたいのです)
0237デフォルトの名無しさんNGNG
演算はdoubleを使いなさい。
メモリ圧縮を考えるなら、静的データについてはfloatを使ってもよい。
0238236NGNG
>>237
静的データを作成するときにはdoubleで演算して
floatで格納してます。
でも、その静的データを使用するときはリアルタイムな処理なので(ゲームです)
利用時は float で済ませなくちゃならないんです・・・

浮動小数点で誤差少なくするテクニックが満載!みたいな
ホームページとかあったらお願いします。
0239デフォルトの名無しさんNGNG
floatデータの演算はdoubleに格上げされてるのは理解してる?
演算結果をfloatに落とす場合は、さらにdoubleからfloatへの格下げも行ってるんだけど..

floatを使う意義は、格納場所がdoubleより小さくすむ、でしかないよ。
CPUの特性に特化したコードを書いててキャッシュとか固有命令とか
そういうの考えてやってるなら、まあ、ナにもイワンよ。
0240236NGNG
>>239
ええと、、、ANSI C からは float のままでの演算も
できるようになったと思ってたんですが・・・あとで確認してみます。

>CPUの特性に特化したコードを書いててキャッシュとか固有命令とか
あ、たしかに特定の環境を前提として質問してました。
x86って float の演算と double の演算がありますよね?
そういう理由で float にこだわってます。
0241デフォルトの名無しさんNGNG
シェアウェアや同人で販売できてフリーの言語ありませんか?
0242デフォルトの名無しさんNGNG
>>241
LSI-C
0243デフォルトの名無しさんNGNG
>>241
gcc、 BorlandC++Compilerとか
0244デフォルトの名無しさんNGNG
>>242
シェアウェアや同人は無理

2. 配布

配布を受けたオリジナルパッケージを再配布するかぎり、自由に配布
できます。その際、手数料と認められる額を超える金銭の授受を禁じま
す。また、改変されたファイルを含むパッケージの再配布を禁じます。
配布先でのサポートは、配布者が責任を持っておこなってください。
0245デフォルトの名無しさんNGNG
>>241
ところでどれくらいプログラムできるんだ?
0246デフォルトの名無しさんNGNG
同人という言葉からプロファイリング
0247デフォルトの名無しさんNGNG
>>246
プロファイリングの結果、最適な言語はHSPと決定しました。
0248デフォルトの名無しさんNGNG
HSPで作ってPHSで配布
0249デフォルトの名無しさんNGNG
音声認識を利用したソフトを作りたいんですけど、
利用できる音声認識エンジンとかってあります?
ViaVoiceを利用することはできるんでしょうか?
0250デフォルトの名無しさんNGNG
>>249 Microsoft Speech SDK 5.1
ttp://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/027/000/781/msdncompositedoc.xml
0251デフォルトの名無しさんNGNG
>>245-248
情報サンクス
どのくらいできるの?ってことで一応
BASIC->C->DELPHI
とやってますけどCがANSI準拠程度の実力でしょうか。
やっとK&Rが終了したとこです。
(C++とかもやってるけど挫折。言語はともかくVC++に馴染めなかった。)

HSP......ム板見るかぎりじゃあんまり評価よくはないけど同人ゲームではちょくちょく見るし
ゲームオンリーなら良いものなのかな。ム板はゲームより業務用の人多そうだし。
参考資料も多そうなのでぼちぼちやってみます。
>>PHSで配布
ってのは洒落かな。そういう配布システムでもあるのかと探してしまいました。

どういう風にプロファイリングされたのか気になるけど(w
ありがとうございました。
では、ごきげんよう。
0252デフォルトの名無しさんNGNG
>>251
K&R終了したばかりでANSIマスターですか、すごいですな。

言語になじめてVC++になじめないというのがわからん。
IDEがなじめないなら好きなエディタとコマンドラインでやれよ
■ このスレッドは過去ログ倉庫に格納されています