Quantcast
Channel: OKWAVE 閲覧数の多い質問(C・C++・C#/250)【本日】
Viewing all 50953 articles
Browse latest View live

GetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・

$
0
0
お世話になっています。 iniファイルを読込み、各変数に代入するC言語のDLLを作成したいのです。 このサイトの投稿や、MSDNなどにも載っていたのですが、 少し理解に苦しみます。 現在まで、理解した点がwindows.hのインクルードを 記述するところ辺りです。 iniファイルは下記のようなレイアウトです。 ---<mst.ini>---------------------------- [user] name=username ID=userid [pc] pcname=FMV ---------------------------------------- #include<windows.h>は記述することまでは 分かりましたが、以下から進みません。。。 GetPrivateProfileString("") 初心者で申し訳ありませんが、お助け願います。

GetPrivateProfileStringAについて

$
0
0
お世話になります。 VC++2003で作成したGetPrivateProfileStringを使ったプログラム参考にしてVC++2005でINIファイルを読み込むプログラムを作成したのですが、うまく読み込めないため、色々と調べた結果、GetPrivateProfileStringはUNICODE形式で、GetPrivateProfileStringAがANSI形式と記載していたHPを参考にGetPrivateProfileStringAを使用したところ、うまく読み込めました。 ただ、MSDNでGetPrivateProfileStringAを探しても見つからなかったので、このままGetPrivateProfileStringAを使用して良いのか迷っています。GetPrivateProfileStringAはどのような位置付けなのでしょうか?レガシーなAPIで使用はできるが現状ではサポートされていないのでしょうか? ご存知の方がいらっしゃいましたら、御教授願います。

変数名を文字に変換して取り出すには?

$
0
0
初心者ですがよろしくお願いします。 変数名を文字として取り出すにはどうすればよいのでしょうか?

とある条件でIntelliSenseが使えなくなる

$
0
0
VisualStudio2008を使っています。 以前からときどきIntelliSenseが使えなくなる症状があったんですが、時間を置いたりすると治っていたので気にしていませんでした。 それと関係あるのか分かりませんが、今コーディング中に、ある行(メソッド?)以降からIntelliSenseが出ないという症状が起きました。その行をコメントアウトするとなぜかそれ以降も使えるようになります。しかし、その行をコメントアウトして、新たにそれとまったく同じコードを書いても、そのコードの行以降はまた使えなくなるのです。一度VisualStudioを閉じても変わりませんでした。これはいったい何が原因なのでしょうか。このままでは作業に大きな支障が出るので、どうかよろしくお願いします。

同じソリューション内の別のプロジェクトのメソッド呼び出し

$
0
0
同じソリューション内の別のプロジェクトのメソッド呼び出し お世話になっております。 Visual Studio でC#で開発をしております。 初心者です。 同じソリューション内にある別のプロジェクトのメソッドを呼び出す方法は どの様にしたら宜しいのでしょうか。 下記の様に記述しましたら、 「静的でないフィールド、メソッド、またはプロパティ ~省略~ で、  オブジェクト参照が必要です」と言うエラーが出てしまいます。 何か根本的に間違っているのかも知れません。 何卒、ご教授頂きたく宜しくお願い致します。         記 呼び出し側 private void button1_Click(object sender, EventArgs e) {   呼び出し先のプロジェクト名.クラス名.メソッド名();  } 呼び出される側 namespace プロジェクト名 { public class クラス名 {    メソッド名()    {      処理内容     }   }  }

VC++スレッドの正しい終了のさせかた

$
0
0
VC++6.0にてAfxBeginThreadで m_bAutoDelete = TRUEにてスレッドをおこしております。 この終了時に制御関数のwhileループを脱する様にし、 正常にスレッドを終了させているつもりです。 この後、再度(アプリは継続して起動したまま) AfxBeginThreadにて全く同じ処理で再開すると、 なぜか、前のスレッドが未だ動作しているかのごとく 制御関数内のTRACEが2重に出力されます。 再度、停止し、またスレッド起動すると、 今度は3重になったかの様な動作をします。 スレッドが正しく終了されていないのでは?と思った現象として、 1回起動時にアプリを終了させると正常終了しますが、 2回起動以上は必ずスレッドのメモリーリークが出ます。 メモリーリーク個所はAfxBeginThreadでした。 制御関数内で必要ないとは思いましたが、終了時に AfxEndThreadを使用しましたが現象は同じでした。 そこで質問です。 1)この現象は、スレッドが正常に終了されていない事に起因しているのでしょうか? 2)スレッドを正しく終了させるにはどうすればいいのでしょうか? 当方、制御関数がループを抜け、さらにm_bAutoDelete = TRUEであれば オブジェクトも自動的に破棄されると思っていたのですが。。。 以上、よろしくお願いします。

CStringをwchar_tに変換したい

$
0
0
CStringをwchar_tに変換したく思い、ネットで探したところ、 http://msdn2.microsoft.com/ja-jp/library/ms235631(VS.80).aspx のページを見つけたので、下記のプログラムを組んで実行してみましたがエラーになって しまいます。 【プログラム】 CString orig("Hello, World!"); // Convert to a char* const size_t newsize = 100; // Convert to a wchar_t* // You must first convert to a char * for this to work. size_t origsize = strlen(orig) + 1; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); 【エラー】 error C2664: 'strlen' : 1 番目の引数を 'CString' から 'const char *' に変換できません。 error C2664: 'mbstowcs_s' : 4 番目の引数を 'CString' から 'const char *' に変換できません。 &CStrinをconst char *でキャストしてもうまくいきません。 どこがおかしいのでしょうか? 【環境】 WindowsXP+VC++2005

FtpWebRequestでエラーになってしまう

$
0
0
お世話になっております。 当方C#初心者でございます。 現在、FTPSを使用しファイルダウンロードを行うクライアントアプリの作成を FtpWebRequest、FtpWebResponseを用いて行っております。 #以下を参考にし、作成させて頂いております。 http://dobon.net/vb/dotnet/internet/ftpwebrequest.html#section1 http://blogs.gine.jp/taka/archives/1377 ですが、FtpWebRequest.GetResponse()のところでエラーが発生し原因を突き止められておりません。 また、ポートを21、990とした際にエラー内容も変わっており、余計原因究明が困難となっております。。 解決にご助力願えますでしょうか。 以下ソースと、トレース結果となります。 ----------------------------------------- ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback( delegate(Object certsender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }); FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create("ftp://192.168.1.111:21/%2fhome/ftp_test/hogehoge.jpg"); ftpReq.Credentials = new NetworkCredential("test_user", "test_pass"); ftpReq.Method = WebRequestMethods.Ftp.GetFileSize; ftpReq.KeepAlive = false; ftpReq.EnableSsl = true; FtpWebResponse ftpRes = (FtpWebResponse)ftpReq.GetResponse(); <- ここでExceptionが発生してしまう Console.WriteLine(ftpRes.ContentLength); textBox1.Text += ftpRes.ContentLength; ----------------------------------------- Port:21 System.Net Verbose: 0 : [4936] Exiting FtpWebRequest#33736294::GetResponse() System.Net Verbose: 0 : [5252] WebRequest::Create(ftp://192.168.1.111:21/%2fhome/ftp_test/hogehoge.jpg) System.Net Information: 0 : [5252] FtpWebRequest#33736294::.ctor(ftp://192.168.1.111:21/%2fhome/ftp_test/hogehoge.jpg) System.Net Verbose: 0 : [5252] Exiting WebRequest::Create() -> FtpWebRequest#33736294 System.Net Verbose: 0 : [5252] FtpWebRequest#33736294::GetResponse() System.Net Information: 0 : [5252] FtpWebRequest#33736294::GetResponse(メソッド = SIZE。) System.Net Information: 0 : [5252] Associating FtpWebRequest#33736294 with FtpControlStream#35191196 System.Net Information: 0 : [5252] FtpWebRequest#33736294::(FTP connection#35191196 を解放しています。) System.Net Information: 0 : [5252] Associating FtpWebRequest#33736294 with FtpControlStream#48285313 System.Net Information: 0 : [5252] FtpWebRequest#33736294::(FTP connection#48285313 を解放しています。) System.Net Error: 0 : [5252] Exception in the FtpWebRequest#33736294::GetResponse - 基礎になる接続が閉じられました: 受信時に予期しないエラーが発生しました System.Net Error: 0 : [5252] 場所 System.Net.FtpWebRequest.SyncRequestCallback(Object obj) 場所 System.Net.FtpWebRequest.RequestCallback(Object obj) 場所 System.Net.CommandStream.InvokeRequestCallback(Object obj) 場所 System.Net.CommandStream.Abort(Exception e) 場所 System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage) 場所 System.Net.FtpWebRequest.GetResponse() System.Net Verbose: 0 : [5252] Exiting FtpWebRequest#33736294::GetResponse() ------------------------------------------ Port:990 System.Net Verbose: 0 : [3804] Exiting FtpWebRequest#33736294::GetResponse() System.Net Verbose: 0 : [2416] WebRequest::Create(ftp://192.168.1.111:21/%2fhome/ftp_test/hogehoge.jpg) System.Net Information: 0 : [2416] FtpWebRequest#33736294::.ctor(ftp://192.168.1.111:21/%2fhome/ftp_test/hogehoge.jpg) System.Net Verbose: 0 : [2416] Exiting WebRequest::Create() -> FtpWebRequest#33736294 System.Net Verbose: 0 : [2416] FtpWebRequest#33736294::GetResponse() System.Net Information: 0 : [2416] FtpWebRequest#33736294::GetResponse(メソッド = SIZE。) System.Net Information: 0 : [2416] Associating FtpWebRequest#33736294 with FtpControlStream#35191196 System.Net Information: 0 : [2416] FtpWebRequest#33736294::(FTP connection#35191196 を解放しています。) System.Net Error: 0 : [2416] Exception in the FtpWebRequest#33736294::GetResponse - 基礎になる接続が閉じられました: ご教示、ご指摘のほど、よろしくお願いいたします。

DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。

$
0
0
C++プロジェクト(Windowsフォームアプリ)を作成し、あるサイトで公開されているDLLを実装し→コンパイル→デバッグ実行させた所、問題なく動作が確認できたのですが、 クラスライブラリで作成したC++新規プロジェクトに同じくDLLを実装し、同一ソリューション内にC#又はC++でWindowsフォームアプリを作成し、先に作成したクラスライブラリプロジェクトを参照させる形態で作成した際に、コンパイル→デバッグ実行させた所、コンパイルは通ったのですがデバッグ実行時に、DLLを参照しようとしたタイミングで 「DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。」 というエラーが発生してしまいました。 何故Windowsフォームアプリ単体時にはDLLが参照できたのに、クラスライブラリにし複数プロジェクトにして実行するとエラーが発生してしまうのか、どなたか原因、解法等 心得ておられましたら御指南のほど宜しくお願いします。 以下 事象詳細です。 開発環境:Microsoft Visual Studio 2008 公開DLL:USB-IOを制御する目的のUSBIODLLDemo.dllというDLLです。 <成功時> 1.C++プロジェクト(Windowsフォームアプリ)新規作成 2.DLLがインストールされているフォルダから.dllファイル, .hファイル、.libファイルをコピーしプロジェクト新規作成したフォルダにコピーする 3.プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイル に.libファイル名を記入 4.ダウンロードの.hファイルから __declspec(dllimport) BYTE __stdcall GetNo(void); __declspec(dllimport) void __stdcall P1Write(BYTE newVal); __declspec(dllimport) BYTE __stdcall P1WriteBit(BYTE Bit, BOOL Tf01); __declspec(dllimport) BYTE __stdcall P1Read(void);  をコピーしstdafx.h へ貼付け。 5.stdafx.hへ貼り付けた宣言がこのままではコンパイルが通らなかったため #define BYTE unsigned char #define BOOL bool  を追記。 6.ダウンロードしたDLLの関数を使用した一文を実装 7.コンパイル→デバッグ実行→ 無事実行完了! <エラー発生時> *下記事象ではC#Winフォームアプリを挙げていますがC++Winフォームアプリで試しても同じ結果になりました。 1.C++プロジェクト(クラスライブラリ)新規作成 2.DLLがインストールされているフォルダから.dllファイル, .hファイル、.libファイルをコピーしプロジェクト新規作成したフォルダにコピーする 3.プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイル に.libファイル名を記入 4.ダウンロードの.hファイルから __declspec(dllimport) BYTE __stdcall GetNo(void); __declspec(dllimport) void __stdcall P1Write(BYTE newVal); __declspec(dllimport) BYTE __stdcall P1WriteBit(BYTE Bit, BOOL Tf01); __declspec(dllimport) BYTE __stdcall P1Read(void);  をコピーしStdafx.h へ貼付け。 5.Stdafx.hへ貼り付けた宣言がこのままではコンパイルが通らなかったため #define BYTE unsigned char #define BOOL bool  を追記。 6.ダウンロードしたDLLの関数を使用した一文を実装(公開関数として) 7.C#プロジェクト(Windowsフォームアプリ)新規追加 *C++(Windowsフォームアプリ)でやっても同じ結果になりました。 8.新しい参照の追加で上のクラスライブラリプロジェクトを追加 9.フォームアプリ側でクラスライブラリプロジェクトの関数を実行する処理を実装 clsTest ctst; ctst.Exec(); 10.コンパイル→デバッグ実行→DLLを参照しようとしたタイミングでエラー発生! 「DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。」 *クラスライブラリ側の、DLLの関数を呼んでいる部分をコメントアウトするとエラー無く実行できてしまいます。

C# でDataTableの更新を高速化したい。

$
0
0
dataTblには1000件程度のデータが保存されています。 Select()で300件程度を検索して、ヒットした対象のデータの一部を変更しています。 以下がサンプルコード(モディファイしてあります。)です。 DataRow[] hitRow; hitRow = dataTbl.Select(str); for (int i = 0; i < hitRow.Length; i++) { hitRow[i][5] = "ABC"; <=== ここが遅い!! }  Select()は頻繁に行うわけでもなく、遅いとは思っていないのですが、for文の中身で非常に時間が掛ってしまいます。約10秒程度掛ります。  これを高速化したいと考えているのですが、何か良い手はないでしょうか?

VC++ DirectShow グラフにフィルターを追加する方法

$
0
0
DirectShowにてビデオキャプチャデバイスから ファイルに保存する(プレビューウィンドウ付き)で 普通にAVIファイルには保存できますがフィルターのMicrosoft Video 1を追加して圧縮をして保存するようにしたいと思います。 (上記フィルタは本当に圧縮かどうかはわかりませんが。。。 GraphEditで確認したところ圧縮(保存ファイルサイズが激減)したようでしたので。。) 現在のフィルターグラフにMicrosoft Video 1を追加する方法をご教示願えればと思います。 初心者なのでMSDNなど見てもいまいち理解できません。 簡単なサンプルなどあれば助かります。 よろしくお願い致します。

C言語、行列の積を求めるプログラムについて

$
0
0
「次に示す行列x,yの積を求めるプログラムを作成せよ。   x[2][3]={{1,2,3},{4,5,6}} y=[3][2]={{1,5},{5,3},{81}}」 という問題です。自分ではとりあえず、 #include<stdio.h> int main(void) { int i,j; int x[2][3]={{1,2,3},{4,5,6}}; int y[3][2]={{1,5},{5,3},{8,1}}; int xy[3][3]={0}; for(i=0;i<3;i++) for(j=0;j<3;j++) xy[i][j]=x[i][j]*y[i][j]; for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%3d",xy[i][j]); putchar('\n'); } return 0; } というプログラムを作ってみましたが、ダメでした。 ちゃんと積の表示が出るようにするにはどこをどう変えるべきでしょうか?

SNMPマネージャAPIでメモリリークしてしまう

$
0
0
初めて投稿します。 ネットワークに接続したプリンタ4台を、SNMPを使って状態監視するソフトを作成しています。以下のソース(文字数制限のため、大半をコメントで記述しています)を実行すると、SnmpMgrRequest()関数内でメモリリークを起こします。 この関数の戻り値はエラーではありません。しかもプリンタ1台のみを監視するとメモリリークしません。この関数をコメント化しても起きません。 SNMPは始めてなので何が悪いのかよくわかりません。 どなたか何かご存知であればご教示お願いします。 開発環境はWindowsXP(SP1) VC++6 SP5を使用しています。 (ソースの拡張子は.cです。) void main(){ while(1){ for (i = 0 ; i < 4 ; i++) { mib=StsGet([プリンタのIPアドレス]); } Sleep(600); } } int StsGet(LPSTR adr) { //SnmpUtilMemAlloc ()でSNMPエージェントのアドレス取得 //SnmpUtilMemAlloc()でコミュニティ取得 //変数バインディングの初期化 //SnmpMgrStrToOid()でOIDを文字列から値に変換 //SnmpUtilMemReAlloc ()で変数バインディングにメモリを割当て //変数バインディングにOIDを追加 //SnmpMgrOpen ()でSNMPマネージャAPIのオープン(タイムアウト:100ms、リトライ:1回) // SnmpMgrRequest()でSNMPマネージャAPIに指定操作(Get)を要求 //SnmpUtilVarBindListFree(),SnmpUtilMemFree()で各変数を解放 //SnmpMgrClose()でSNMPマネージャAPIとの接続を終了 return [プリンタ状態;] }

C#で配列が空かを判定するには?

$
0
0
C#で配列が空かどうかを判定するにはどうしたらようでしょうか? VB.NETではIsNothingで出来るのですが、C#の方法が分かりません。 -- C# --- int[] a={0,1,2}; int[] b; //bが空なのを判定したい --VB.NET--- Dim a() As Int16 = {0, 1, 2} Dim b() As Int16 MsgBox(IsNothing(a)) 'Falseを返す MsgBox(IsNothing(b)) 'Trueを返す ---- VS.NET2003/Windows2000Pro

HIDでReadFileのタイムアウトを設定したい

$
0
0
PCとUSB接続したHIDデバイスと通信するのに、CreateFileからWriteFile/ReadFileを使用しています。 VID、PIDを頼りに、通信自体は問題なくできています。 ただし、デバイス側のモード切替で、通信モードに入っていないときに問題が発生します。 WriteFileのほうはデバイスがつながってさえいれば送信だけはできるので一応問題ないのですが、ReadFileのほうはデバイスが通信モードに入っていないときでもデバイスからの受信待ちを続けて処理がストップしてしまいます。 SetCommTimeoutsでタイムアウトの設定をできないかとやってみたのですが、「ファンクションが違います」というエラーがでるばかりでなんともなりません。 こいつはシリアル通信のときにしか使えないのでしょうか。 HIDデバイスとの通信でタイムアウトを設定する方法はないものでしょうか? あるいは受信待ちでストップしないよい方法はないでしょうか?

データ数が多い場合のソート

$
0
0
4バイトのデータが2^26個あり、それに一対一対応した4バイトのデータが同様に2^26個あります。これを前者のデータを基準にソートしたいのですが、静的にデータを確保すると限界(トータルイメージサイズ)を超えてしまい、動的に確保してみても、取り方が悪い?のでうまくいきません。なにかいい方法はないでしょうか?お願いします。 以下は自分なりに作ってみたクイックソートの関数です。 void change(unsigned int i,unsigned int j, unsigned int youso[ ] ,unsigned int youso1[ ]){//配列要素i番目とj番目の値を入れ替える int t,t1; t=youso[i]; t1=youso1[i]; youso[i]=youso[j]; youso1[i]=youso1[j]; youso[j]=t; youso1[j]=t1; } void sort(unsigned int left, unsigned int right, unsigned int youso[ ] ,unsigned int youso1[ ]){//lを一番左端の配列要素、rを一番右端の要素としてソートする。 unsigned int i,j,p; i=left;j=right; p=youso[(left+right)/2];//ピボットの決定 while(1) { while(youso[i]<p){//左からピボット以上を探索 i++; } while(p<youso[j]){//右からピボット以下を探索 j--; } if(i>=j){//探索地点がぶつかったら終了 break; } change(i,j,youso,youso1);//お互い発見した値をいれかえる i++; j--; } if(left<i-1){//左範囲が分割可能なら sort(left,i-1,youso,youso1);//左範囲を分割してソートを行う } if(j+1<right){//右範囲が分割可能なら sort(j+1,right,youso,youso1);//右範囲を分割してソートを行う } }

「std」てナニモノですか?(VC++.net初心者です)

$
0
0
今週からわかりもしないのに、VC++を組む事になりました。 大まかな概念を理解しながら、コーディングに入っていこうと思ってます。 (C/C++/VC++を同時進行で覚えるという、とても好ましくない方法で進めています) プロジェクトの構成 各種ファイルの役割 まではイロイロ調べてなんとか理解できました 標準ライブラリ ヘッダファイル からのクラス(または関数)のインクリードを調べているところで、煮詰まりました 「std」てナニモノですか? コーディングの練習でiostreamを使って簡単なクラスを使ったところ、「cout」や「endl」を使う時に頭語に「std::」を付けないとコンパイルでエラーになりました 標準ライブラリの関数を使う時に利用する 「namespace」みたいなモノですか? 正しく理解したいのでイロイロと調べてみましたが、答えがみつからずココに来ました 助言または良いサイトがあったら教えて下さい。 m(__)m

DLLは解読可能ですか

$
0
0
C言語初心者です。 目標としてVisualC++でDLLを作ろうと思っています。 DLLはコンパイルするとできると思うのですが、コンパイル前に記述しているソースは簡単にわかってしまうものでしょうか。それとも解読することは可能だけど素人ではかなり苦労するものでしょうか。 よろしくお願いします。

winsockでソケット通信の開発をしていますが、

$
0
0
winsockでソケット通信の開発をしていますが、 send()を5回実行したところで10053のエラーが起きてしまいます。 必ず同じところでエラーになってしまうのですが、 同じ症状になってしまった方いらっしゃられないでしょうか?

VS2010でC#のDLLを作成する手順

$
0
0
Visual Studio 2010でVisual C#のコードのDLLを作成したいのですが 簡単なコード例で具体的な操作手順を教えていただけないでしょうか。 (Microsoft Visual Studio 2010、OS WindowXP) Visual C++でDLLを作成する手順については 「チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)Visual Studio 2010 」 <http://msdn.microsoft.com/ja-jp/library/ms235636(v=vs.100).aspx> に詳しく手順が記載されていましたが、このVisual C#版が見たいのですが見当たりませんでした。 よろしくお願いします。
Viewing all 50953 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>