- 1 名前:デフォルトの名無しさん [2006/11/29(水) 17:00:54 ]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Visual C++使いが優しくコメントを返しますが、 お礼はVisual C++の布教と初心者の救済をお願いします。 ■過去スレ 前スレ pc8.2ch.net/test/read.cgi/tech/1150105712/ 前々スレ pc8.2ch.net/test/read.cgi/tech/1141087248/ ■遠い親戚スレ くだすれC++/CLI(初心者用) pc8.2ch.net/test/read.cgi/tech/1142144110/l50 ■関連ページ Visual C++ Home Page www.microsoft.com/japan/msdn/visualc/
- 24 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 09:47:20 ]
- 初めてソフトを作ってみたのですが、バージョン情報に入れるURLの一つが何故かハイパーリンクになりません
どなたかヒントを教えていただけませんか? ↓のhoghog.hog/がそうです。 //ここから hoger のバージョン情報 hoger ver 0.1 Copyright (C) 名無しさん 2007 All Rights Reserved. Web Site :nanashi.hog/ Web Site :hoghog.hog/ //ここまで 使用しているCONTROLは、STATIC, SS_LEFT SS_NOTIFY WS_CHILD WS_VISIBLE WS_GROUPです。 よろしくお願いします。
- 25 名前:デフォルトの名無しさん [2006/12/25(月) 22:15:25 ]
- ほしゅあげ
- 26 名前:デフォルトの名無しさん [2006/12/26(火) 01:34:59 ]
- 一般的に関数の戻り値にローカル値を指定するのはダメですが、
以下のような定数文字列もダメなんでしょうか? 試しに実行したらうまくいったのですが… std::string func() { return "hoge" }
- 27 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 05:14:17 ]
- どうみても戻り値はstd::stringです。
本当にありがとうございました。
- 28 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 07:49:02 ]
- >>26
戻り値の型が一般型ならば何の問題もない。 問題は、ローカルなオブジェクトをポイントするポインタを返すことだ。 定数はローカルオブジェクトではないから、それを返すことは問題ないし、 まして別の型に変換してしまえば問題になるわけがない。 // 1行目の例 int func() {return 0;} // 2行目の例 char * func() {char foo[] = "FOO"; return foo;} // 3行目の例 const char * func() {return "BAR";} // 4行目の例 std::string func() {return "hoge";}
- 29 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 09:53:47 ]
- 別の型に変換するという場合をもっと一般的に言えば、
ローカルなオブジェクトそのものを返すのは問題ないという感じか。
- 30 名前:デフォルトの名無しさん mailto:sage [2006/12/27(水) 11:32:52 ]
- 呼び出した側が自分のローカルな変数にコピーしてるべ
int n; n = f(x); ってやったらf(x)の戻り値を自分のローカル変数に入れてるやん
- 31 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 01:11:48 ]
- >>30
それで?
- 32 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 09:51:41 ]
- つまりアクセスするのは自分のローカルだから何の心配も要らない
- 33 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 10:14:55 ]
- >>32
だから?
- 34 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 10:20:43 ]
- だから>>29のは間違い
- 35 名前:デフォルトの名無しさん [2006/12/28(木) 10:21:34 ]
- >>31=>>33のような低脳はほっとけ
- 36 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 10:42:31 ]
- >29が何を言いたいのかもよく判らないが、>30に至っては一体全体何を言いたいのやら。
まして>29が間違いだという>34は何を考えているのかさえ判らない。 結局のところ、>26の疑問は>28で答えられているので>29以降の流れはノイズということで宜しいか。
- 37 名前:デフォルトの名無しさん [2006/12/28(木) 10:48:08 ]
- リストボックスにセル範囲を調節できる、|が入ったタイトルバーを
付けたいのですがどうやったらよいかわかりません。どなたか ご存知の方教えてください。よろしくお願いします。
- 38 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 15:06:15 ]
- つ[ListView(ListCtrl)]
- 39 名前:デフォルトの名無しさん [2006/12/30(土) 21:13:44 ]
- 混合モードって一体どうやったら表示出来るんですか。
プロパティで設定しても全く変化がないです。 そもそもドコに表示されるんですか?
- 40 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:36:20 ]
- デバッグ中
- 41 名前:デフォルトの名無しさん [2006/12/30(土) 22:41:53 ]
- VC++6.0でプログラムを始めたものです
プログラムの設定をiniファイルで管理しようと思っているんですが iniに0xを記述しなくても16進数のデータを読み込む方法は無いでしょうか? 現在は数値読み込みを使って test=0xFFFFFF のようにして読み込んでいるのですが、他のプログラムのiniで test=FFFFFF の形で読み込んでいるものがあり、方法を調べたんですが見つからなかったので質問しました ご存知の方、是非教えてください。お願いします。
- 42 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:47:00 ]
- >>41
GetPrivateProfileString()して、strtol()かstrtoul()でもできる。
- 43 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:48:02 ]
- >>41
またお前か おなじこと何回も聞くな
- 44 名前:41 [2006/12/30(土) 22:50:45 ]
- >>42
レス有難う御座います その方法でやってみます
- 45 名前:41 [2006/12/30(土) 22:55:15 ]
- >>43
このスレで発言したのは初めてだったんですが、過去に同じ質問をした方がいたようで申し訳ないです。 最低限過去ログは読むべきでした。 今後は過去ログを読んだ上で質問させていただきたいと思います。 連レスすみませんでした
- 46 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 22:55:20 ]
- pc10.2ch.net/test/read.cgi/tech/1166172047/216
- 47 名前:39 [2006/12/30(土) 23:06:51 ]
- >>40
デバッグ中に、"逆アセンブル"ウインドウを表示する事は出来るのですが、 混合モードについてはは影も形もありません。 何か特別な設定が必要なのでしょうか
- 48 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 17:44:27 ]
- >>47
ブレーク中にも表示されないの?
- 49 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 13:13:10 ]
- debugモードでビルドしたか
- 50 名前:デフォルトの名無しさん [2007/01/05(金) 14:54:42 ]
- VC++ 2005で以下のDLL作成を考えています。
1.C言語で作成されたDLL関数を読み込む 2.関数を別名称にしDLL化する。 3.vb.netで作成したDLLを使用する。 1、2を実現するため以下のソースを記載したのですが 構文的におかしくないでしょうか?
- 51 名前:50 [2007/01/05(金) 14:55:19 ]
- #include "stdafx.h"
#include <stdio.h> #include "api.h" #ifdef _MANAGED #pragma managed(push, off) #endif BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } #pragma comment(lib,"api.lib") extern "C" __declspec(dllimport) BOOL __stdcall APIOPEN(LPTSTR lpHostName ,LPTSTR lpNetmserviceName); __declspec(dllexport) BOOL CAPIOPEN(LPTSTR host,LPTSTR netmservice) { BOOL r = APIOPEN(host,netmservice); return r; } #ifdef _MANAGED #pragma managed(pop) #endif
- 52 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 15:11:50 ]
- 構文チェックはコンパイラの仕事
- 53 名前:50 [2007/01/05(金) 16:03:49 ]
- >52 失礼しました。
ビルドを実行するとCVTRES の致命的なエラー CVT1100 が発生しました。 MSDNで検索すると/TLBID オプションを変更するとなっているのですが 変更しても同様のエラーが発生します。
- 54 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 02:19:52 ]
- プロパティにカテゴリをつけたい場合
IDLファイルにどう書けばいいの?
- 55 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 02:42:40 ]
- ICategorizePropertiesを自力実装
- 56 名前:デフォルトの名無しさん [2007/01/10(水) 11:27:08 ]
- Win32APIをいぢってプログラムを作ってるんですが、
エディットボックスで日本語入力がうまく行えません。 ウィンドウプロシージャでWM_CREATEのメッセージ処理に、 //ctrls.chatBar⇒HWND //cs⇒LPCREATESTRUCT ctrls.chatBar = CreateWindow(TEXT("EDIT"),TEXT(""), WS_CHILD | WS_VISIBLE, 0,425,531,20, hWnd, (HMENU)CHAT_BAR, cs->hInstance, NULL ); と書いてエディットボックスを貼り付けてます。 日本語を入力する際、何か他に書かないことはあるのでしょうか
- 57 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 11:34:53 ]
- フォント
- 58 名前:デフォルトの名無しさん [2007/01/10(水) 12:02:26 ]
- HFONT hFont;
hFont = CreateFont(20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "MS Pゴシック"); SendMessage(ctrls.chatBar, WM_SETFONT, (WPARAM)hFont1, MAKELPARAM(FALSE, 0)); で、フォントを変えてみましたが何もかわりませんでした
- 59 名前:デフォルトの名無しさん [2007/01/10(水) 15:14:12 ]
- A,B,Cと3つのボタンを配置し、Aのclick処理を行っている最中にBとCのボタンを先行してclickすると、
Aの処理が終了後B->Cと処理が続きますが、 このBとCの先行入力分のclickイベントを破棄して、無かった事にする方法ってありますか? B,Cがclickされていても、Aの処理終了後は何もしない仕組みが作りたいのですが... VS.NET 2003
- 60 名前:デフォルトの名無しさん [2007/01/10(水) 15:21:55 BE:15528724-2BP(202)]
- Aの処理のアタマでBとCをdisable。
- 61 名前:名無しさん mailto:sage [2007/01/11(木) 18:56:37 ]
- 終了した後にもう一度繰り返し動作させたいのですが、
exit(0);のように簡単に終了させつつ、 繰り返し最初からやり直すコマンドみたいなものはないんでしょうか? 初心者のまま卒業した先輩のプログラムをいじることになったのですが、 クラスやヘッダなど分からないままやらされてます。 どうもバグがあるらしく、先輩のプログラムは終了しないプログラムでした。 (本当は作業が終わったら終了しなくてはならないプログラムです) return;を使ってもどこに返して居るか分かりません。 main文に無理やり戻して次の関数を続行などできたらベストなのですが・・・
- 62 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:39:16 ]
- 無理やり戻したところで、続きを正常に実行できる保障がどこにある。
- 63 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 19:56:59 BE:19410825-2BP(202)]
- >>61
>main文に無理やり戻して次の関数を続行などできたらベストなのですが・・・ それは別のバグを仕込むだけの愚行。 まず規定の処理で正しく終了するようにしれ。
- 64 名前:デフォルトの名無しさん [2007/01/17(水) 14:29:56 ]
- 助けてください
Visual C++ 2005 Express Editionを昨日インストールした本当の超初心者なのですが インストールはしっかりできたのですが、新しいプロジェクトを開いても、何の反応 もしない新しいプロジェクトとかかれたものしか出てきません。どうしたらよろしいですか? 教えてください、お願いします
- 65 名前:デフォルトの名無しさん [2007/01/17(水) 16:20:02 ]
- MAME32をジョイスティックで動かすことをしたいのですが
keybd_eventをつかっても動きません メモ帳で試してみたら、動きました 何か他の方法があるのでしょうか
- 66 名前:名無しさん mailto:sage [2007/01/17(水) 16:24:50 ]
- >>62
続きはありません。 メインじゃないプログラムで「この文章を読み込んだら終了」 ってことになってるんですが、終了させる方法が分かりません。 プログラムが少しできる人に付き添って貰ってreturn;ってのを付けて行ったんですが だめでした。 >>63 初期化の関数が別にあります。 return;を付けていってもダメなのでmain文に何とか戻す方法は無いか困ってます
- 67 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:07:07 ]
- >>66
Cを知らないのにソースをいじろうってのが根本的に間違ってます。
- 68 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:25:00 ]
- >>66
ソースうpすれば訂正してあげるよ
- 69 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 18:58:39 ]
- まあ試しにsetjmp/longjmpを試すのも面白いかもw
- 70 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 19:01:45 ]
- >>64
意味がわからん、新規作成じゃだめなのか
- 71 名前:名無しさん mailto:sage [2007/01/17(水) 19:01:58 ]
- >>67
Cは約半年程授業で習ったのですが、C++は初めて触るような感じです 素人に毛が生えた程度なので超初心者用とタイトルのあるここに書き込みしました >>68 このプログラム自体は卒業した先輩の卒論ですので、 アップロードのような行為はできないです サイズとしても26.2Mあります。 このプログラムを使って工場のようなものを擬似的に再現して実験するのですが 実験後、待ち状態のまま終了しないことが分かり弄らされてます。
- 72 名前:デフォルトの名無しさん [2007/01/17(水) 19:09:16 ]
- #include <iostream>
using namespace std; int main(void) { unsigned char x,y; cout << "2つの値を入力してください。\n"; cin >> x >> y; x -= '0'; y -= '0'; int a = x + y; int b = x * y; printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b); return 0; } これで出力したら10以上の数値が出ないんですが、 どうしたら出るようになるか教えてください。
- 73 名前:デフォルトの名無しさん [2007/01/17(水) 19:26:55 ]
- >>70様 新規作成したあと新しいプロジェクトとでて、どのボタン押してもフーリズ
したままです
- 74 名前:デフォルトの名無しさん [2007/01/17(水) 20:11:04 ]
- Visual Studio 2005でC++のMFCでダイアログベースのアプリを作っているのですが、
C○○DlgクラスのメソッドでgetParent()を使うとNULLが返ってきます。 getWindow(GW_OWNER)も試しましたがNULLが返ってきました。 どんな原因が考えられますか? やりたい事はCProgressCtrl::Create()なのですが、これの引数に親ウィンドウのポインタが必要になります。 アプリ内で子ウィンドウを立ち上げる事はしていないのですが、 この場合親ウィンドウが無いのでそのせいでしょうか?
- 75 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:03:36 ]
- >>74
そりゃCreateしないとウィンドウは存在しないべ
- 76 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:08:25 ]
- >>73
新しいプロジェクトってどこにでるの? 通常は、ファイル-新規作成-プロジェクトでWin32を選べば Win32コンソールアプリケーションが出ると思うけど。
- 77 名前:73 [2007/01/17(水) 21:31:09 ]
- >>76様 ありがとうございます
Win32っていう選択肢もでてこないんです。ファイルに新規作成という言葉がなくて 類似する言葉は新しいプロジェクトぐらいしかありません。その新しいプロジェクト のなかにはテンプレート、プロジェクトという項目があります。 お手数おかけしますが、どうぞおねがいします
- 78 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:31:22 ]
- >>74
親ってCProgressCtrlの親だから、DlgからCreateするならthisポインタでOK
- 79 名前:74 mailto:sage [2007/01/17(水) 21:32:29 ]
- >>78
thisポインタも試したのですが、 ビルドは通ってもランタイムに不正落ちします。 どんな原因が考えられるでしょうか?
- 80 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:33:47 ]
- コード見ないと分からない。
- 81 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:34:15 ]
- >>79
どこでCreateしてるのだ ダイアログのOnCreate以降じゃないとだめだぜ?
- 82 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:36:51 ]
- >>77
デフォルトのテンプレートがインストールできてないのかな? インストールしなおしてみては
- 83 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 21:41:53 ]
- Express EditionってなんかファイルをいじらないとWin32のプロジェクトが出てこないとか言うことはなかったっけ?
- 84 名前:73 [2007/01/17(水) 21:46:21 ]
- >>82様 ありがとうございます。やってみます。
- 85 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 22:51:09 ]
- 久々にVC++インスコしてみたら書式が変わってるんですがこれはいったい何事ですか?
なんかすべての処理がヘッダファイルに書かれていてcppの方はヘッタファイルのインクルードしかないんですけど・・・ マネージコード、アンマネージコードとかいうヤツのせい? それとも.NETとかいうヤツから変わったの?
- 86 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 23:01:09 ]
- >>83
MSのサイトにそういうのあったようなきがす。 PlatformSDKあたりに。
- 87 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 23:21:53 ]
- >>85
ウィザードの種類によっては、cppファイルの生成とかいうオプションがあったと思うよ。
- 88 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:54:45 ]
- >>87
だから、それで生成したcppファイルが・・
- 89 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 03:08:11 ]
- よーわからん、クラスのプロパティ出してメッセージ選ぶとハンドラが作成される。
ってそういう話でまくて?
- 90 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 06:36:05 ]
- どーせVC++がVC#っぽくなってるってことだろう
- 91 名前:73 [2007/01/18(木) 17:11:06 ]
- たびたびすいません、>>82様のいうとおりやったのですが、document and settingなどと書かれたものが 有効な
win32アプリケーションではありませんとでました。 どうしたらよろしいですか?市販のVisual C++ 2005 Express Editionを買えば できるでしょうか?
- 92 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 19:39:13 ]
- >>91
ログ読まずにいきなり回答してみる こういうことで合ってる? ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
- 93 名前:73 [2007/01/19(金) 12:57:22 ]
- >>92様どんレスですいません、ありがとうございます
やってみます
- 94 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:02:17 ]
- エディットボックスに入力した日本語を、ボタンを押すとtestという
関数に取り込みたいのですが下のようにしてみたんですがうまくいきません。 どのように変更すれば取り込めるのか教えていただけないでしょうか? よろしくお願いします。 char ss; m_edit.GetWindowText(ss); void test(char *ss) { while(*ss != '\0'){ ・・・・処理・・・ ss++; } }
- 95 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:21:15 ]
- 何がどううまくいかないのか説明しろ。話はそれからだ。
- 96 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 15:45:46 BE:23292162-2BP(222)]
- >char ss;
>m_edit.GetWindowText(ss); コンパイル通らん。
- 97 名前:94 mailto:sage [2007/01/19(金) 16:38:11 ]
- すいませんchar ss;じゃなくて、CString ss;でした。
エディットボックスにコントロール変数m_editをつくって、 ssに取り込んで、そのデータをtestにとりこんで処理をしたいと考えています。 *ssでよめるようにするには、エディットボックスからどのようにとればいいの かわかりません。よろしくお願いします。
- 98 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:59:42 ]
- void test(LPCTSTR ss)で受け取る
- 99 名前:デフォルトの名無しさん [2007/01/20(土) 16:26:02 ]
- MFCのダイアログベースのプログラムからスレッドを生成した場合、
生成した子スレッドに対してダイアログの方は親スレッドと考えて良いのでしょうか? つまりスレッドの識別子などがあるのでしょうか?
- 100 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 19:58:56 ]
- スレッド間に親子関係は無い。
ライブラリの初期化・終了処理を考慮しなければ、全て同等。 スレッドの識別子は両方にある。
- 101 名前:デフォルトの名無しさん [2007/01/20(土) 21:38:38 ]
- ifの条件が増えたとき、下のどちらの記載が望ましいのでしょうか?
if ( (条件1)&&(条件2)&&(条件3)&&(条件4)&&(条件5)&&(条件6) ){ ; } if ( (条件1)&&(条件2) ){ if ( (条件3)&&(条件4) ){ if ( (条件5)&&(条件6) ){ ; } } }
- 102 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 21:45:22 ]
- >>101
スレ違い
- 103 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 21:51:11 ]
- >>101
関数化しろ
- 104 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 23:24:15 ]
- >>101
どっちでもいいけど自分なら前者で書くかな。 条件部分が長すぎて画面からはみ出るなら適度に改行したり。 if((条件1)&&(条件2)&& (条件3)&&(条件4)&& (条件5)&&(条件6)){ ; }
- 105 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 17:55:25 ]
- >>100
返信ありがとうございます。 では、生成されたスレッドからダイアログの方へメッセージを投げたい場合は どうすればいいのでしょうか? スレッドを生成する際に引数としてダイアログのスレッドIDを渡す、など必要になるのでしょうか?
- 106 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 19:48:13 ]
- ダイアログなんだからウィンドウハンドルでも渡しておけばいいのでは?
- 107 名前:101 mailto:sage [2007/01/21(日) 20:41:18 ]
- >>103-104
トンクス ifを分割すれば余分な条件を弾けて得かなって思ったので質問しました。 クラス内で関数化するのが一般的かもしれませんが、 if() の括弧の中を全て#defineに入れてみようと思います。
- 108 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 21:25:49 ]
- スレ違い
- 109 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:24:17 ]
- 実行ファイルにjpgなどを格納することはできますか?
使用しているのはVC++.net2003です。
- 110 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:34:54 ]
- >>107
>103
- 111 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:36:46 ]
- >>109
できます。この板のどこかのスレでそんな話題を見かけました。
- 112 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:36:56 ]
- fgets や std::getline を使わずにテキストファイルからデータを一行ずつ読み込みたいのですが、
ReadFile で改行文字か EOF が来るまで1バイトずつ読み込んでバッファに取り込むという方法しか 思いつきません。もっといい方法ってありますか? ReadFile でファイルを全部読み込んでから、一行毎に分解するという方法は出来れば避けたいです。 扱いたいのは200万行以上あるファイルです。 いまだにVC6
- 113 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:54:39 ]
- >もっといい方法ってありますか?
あなたにとって、どういうものが良いものなのか説明してください。
- 114 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:11:46 ]
- >>112
素直にfgets()やstd::getline()を使うことにするのが、「もっといい方法」だと思います。
- 115 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:34:12 ]
- ならメモリマップトファイルはどうだ。
- 116 名前:112 mailto:sage [2007/01/22(月) 19:16:40 ]
- 回答ありがとうございます。
>>113-114 std::getline() でやってたのですが、処理に時間が掛かるのでどうにかならないかなと思いました。 根拠はありませんが、 API で同様の機能が提供されていればもっと効率よく出来そうだとも思ったのですが どうやら無さそうですね。 素直に std::getline() のままで処理内容を見直すことにします。 >>115 CreateFileMapping() とMapViewOfFile() でファイルをメモリ空間にマップできるんですね。 これはこれで面白そうなので別件で試してみようと思います。
- 117 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:41:58 ]
- 全部読む必要があれば結局同じことだけどな
- 118 名前:名無しさん(66) mailto:sage [2007/01/22(月) 21:27:44 ]
- 待ち状態のまま終わらないプログラムの
int nRet = WaitForMultipleObjects(NUM_OF_THREADS, hThread, TRUE, INFINITE); このWaitForMultipleObjectsを終了させるか、 INFINITEYのまま何かを読み込んだらタイムアウト、 のような動作はできるものなのでしょうか? >>69さんのsetjmp/longjmpを使ってみたのですが、 WaitForMultipleObjectsの後ろにジャンプすると、何故か ジャンプした後にプログラムが勝手に終了してしまいます。
- 119 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:38:05 ]
- WaitForMultipleObjectsExとQueueUserAPCという手がなくはないが、
なんかお前がいきあたりばったりで使いそうで嫌だ。
- 120 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:52:50 ]
- >>118
スレッドのいずれかが終了すればWaitFor....から制御が返る。 戻り値から終了したスレッドを特定できるので、それ以外のスレッドを終了させればOK。 66でreturnしても駄目だったと書いてるけど、何が駄目だったのか不明。
- 121 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:55:27 ]
- あ、第3パラメタTRUEか。120じゃだめです。
- 122 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:57:12 ]
- FALSEにして120すれば良い気もする
- 123 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:25:46 ]
- でも結局>>67なんだよな……。
- 124 名前:デフォルトの名無しさん [2007/01/23(火) 01:05:12 ]
- Visual C++ 2005 Expressエディションでまずは Hello Worldからと思い
新規プロジェクトでCLRコンソールアプリケーションを選びました。 そうしたら、もうビルドするだけになってるんですね。 まぁこれはいいんですが、このときこんな感じで自動生成されたんですが、 -- #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); return 0; } -- ここで int main(array<System::String ^> ^args) の部分の意味がさっぱりわかりません。 多分引数を受け取る?配列?な気がしますが、良く分かりません。 C言語でやったように int main( int argc , char *argv[] ) パラメタを処理できることが出来るのは判ったのですが、やっぱり int main(array<System::String ^> ^args) の意味と具体的なパラメタの処理方法が知りたいです。 よろしくお願いします。
|

|