くだすれC++Builder( ..
[2ch|▼Menu]
217:デフォルトの名無しさん
10/03/09 19:10:24
互換モードを設定したら?

218:デフォルトの名無しさん
10/03/09 21:50:50
7は64?

219:デフォルトの名無しさん
10/03/10 13:39:26
BCB(2010)で文字列リテラルのコードページをUTF8にする方法はないでしょうか?
例えば char* p = "あ"; とするとpにはシフトJISのコードが入り
wchar_t* wp = L"あ";とするとwpにはUCS2のユニコードが入ります
後者の方は当然だと思いますが、前者の方はソースコードをUTF8で保存しても
強制的にシフトJISにされてしまいます。他のコンパイラで使っていたUTF8の
コードをコンパイルしたら出力が文字化してしまって困っています。

220:219
10/03/10 14:40:51
プロジェクトオプションの
C++コンパイラ→拡張でコードページが指定できるのですね
しかしこれだと全部のソースコードの一括指定みたいです
ソースコードごとに指定するのは無理なんでしょうか?

221: [―{}@{}@{}-] デフォルトの名無しさん
10/03/10 15:32:47
ファイルごとにローカルオプションが指定できるよ。
またはソースごとに
#pragma option -CP65001
を指定かな。

222: [―{}@{}@{}-] デフォルトの名無しさん
10/03/10 15:34:22
ソースコードのエンコーディングと
char 型のエンコーディングは独立することが C/C++ 言語規格で規定されているので、
まぁしょうがないね。


223:219
10/03/10 17:10:40
>>221
ありがとうございました
#pragma option -CP65001
でうまくいきました

224:デフォルトの名無しさん
10/03/10 18:30:45
>>216
Windows7 professional 32bitにBCB6だけど、Windows2000互換モードで動いてる
参考までに。

225:デフォルトの名無しさん
10/03/10 18:55:40
2010のTo-Doリスト初めて使ったんだけど、
項目を追加しても、リストに反映されなくて、「完了した項目を表示」のチェックをON/OFFすると
表示が更新される

To-Doリストちゃんと使えてる?

226:デフォルトの名無しさん
10/03/14 15:55:51
TDBGridでスクロールするとデフォルトではカレントレコードも同時にスクロールしますが
これをカレントレコードはそのままにしておく方法はあるでしょうか?

227:デフォルトの名無しさん
10/03/15 09:44:28
ppp

228:デフォルトの名無しさん
10/03/15 17:22:05
当時BCB6への移行を見送ってしまい2005移行への移行に躊躇したために
未だにBCB5を使っていたのですがunicodeへの対応が必須になり移行を考えています

質問なのですが現時点で購入するとすればC++Builder2010がベストなのでしょうか?
またProfessional版の場合にはVCLのソースが付属するのでしょうか?

229:デフォルトの名無しさん
10/03/15 21:12:22
>228
C++Builderなら2010だな。当然VCLのソースもついてる。ただしdbExpress/DataSnapは
Pro版ではネットワーク上にデータを流してはいけないというEULA上の制約があるので気をつけて。

230:デフォルトの名無しさん
10/03/16 09:29:21
VCL/ANSIとVCL/UNICODEを吸収してくれる良いクラスは無いでつか?
BCB6でも2010でも両方ともコンパイルできるようにしておきたい。

231:228
10/03/16 11:58:38
>>229
情報ありがとう御座います、購入の方を進めてみます

長らく移行出来なかった理由の一つにLightReport2で複雑な帳票を作っていることもあるのですが
LightReport2をC++Builder2009又は2010で使用されている方はおられるでしょうか?
他言語文字がうまく印刷出来るのかどうかを知りたいです

232:デフォルトの名無しさん
10/03/16 22:19:53
>230
それがライブラリなら頑張って#ifdefで共通ソース化する。そうではなくアプリケーションなら
ソースの共通化はすっぱりあきらめる。人間諦めが肝心。


233:デフォルトの名無しさん
10/03/20 11:02:58
>>230
MECSUtils
URLリンク(homepage1.nifty.com)
> Delphi 2007 / 2009 / 2010 で同名の関数を使って同等の処理可能にするのが MECSUtils です。

234:デフォルトの名無しさん
10/03/20 11:28:12
コンポーネントや RTL の文字列エンコーディングを変える訳では無いので
ソースコードの共通化にはあまり向かない。
けれど、かなり特殊なことをしない限りは、シングルソースで対応できるのでまずは移植してみたら?

と書いていて、ここは CBuilder であることに気づいたよ。

tchar の問題とかあるからなぁ。
まず、手持ちのコードを _TCHAR 使うように書き換えて ANSI のままでデバッグ。
wchar_t や tcsXXXX 関数は CBuilder だと大昔からある。

C++ で書いたコンポーネントなの?


235:デフォルトの名無しさん
10/03/24 10:57:05
PopupMenuのMenuItemのClickイベントでMenuItemからPopupMenuを識別する方法を教えてください

236:デフォルトの名無しさん
10/03/24 11:00:49
GetParentMenuで取れた
おまえらほんと役にたたねーゴミだなw

237:デフォルトの名無しさん
10/03/29 15:29:14
TLabelのCaptionは\nで改行できますが
TPanelのCaptionはどうやったら改行できますか?

238:デフォルトの名無しさん
10/03/29 20:50:52
複数行は自前で描画する必要がある。DrawTextなので本来#13#10で改行して
描画されているのだが、高さ方向が常に1行分しか確保されていないので。

239:デフォルトの名無しさん
10/04/01 16:21:39
教えてください。
AnsiString FileName = ExtractFilePath( Application->ExeName ) + "hoge.mdb";
Variant cat = Variant::CreateObject("ADOX.Catalog");
cat.Exec(Function("Create")<<"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";");

上記のコードはC++Builder5なら問題なく動作して正常にmdbファイルが作成されるのですが
C++Builder2007で行うとcat.Execで例外が発生してしまいます。。。
両方同じPCでコンパイルしてるのでOSの問題ではないとおもいます。
2007ではどうしたら正常に動作させることができますか?


240:デフォルトの名無しさん
10/04/02 11:59:12
TStringGridで入力可にしてる時にセルを選択したらそのセルの文字列が
全部選択状態になっているのですが、これを選択状態にしない方法を教えてください

241:デフォルトの名無しさん
10/04/02 16:55:56
タイムゾーンの取得する方法を教えてください

242:デフォルトの名無しさん
10/04/03 13:36:09
なんつーか、回答する気も起こらないつまらん質問ってあるよね。

243:デフォルトの名無しさん
10/04/03 13:48:36
回答する気にならないのなら、黙っていなさい。無理にコメントを書くことは無い。

244:デフォルトの名無しさん
10/04/03 14:02:03
>>243
かっこいい

245:243
10/04/03 16:25:18
俺は神様だ
俺の言う事には必ず従え

246:デフォルトの名無しさん
10/04/08 18:16:46
TDateTimePickerで▼を押されたときに出てくるカレンダーのマウスカーソルを変える方法を教えてください。

DateTimePicker->Cursor =crCross;
だとコンボボックスしか変更されなかったので・・

247:デフォルトの名無しさん
10/04/14 20:36:41
p

248:デフォルトの名無しさん
10/04/14 20:38:17
C++Builder2007でTRichEditで特殊記号("§"等 )を追加すると
行挿入エラーが出るバグがあるのですが
これを回避する方法を教えてください

249:デフォルトの名無しさん
10/04/19 09:45:37
p

250:デフォルトの名無しさん
10/04/19 10:37:43
TUdpSocketで送信はできるのですが受信ができません。
どうしたら受信できますか??

251:デフォルトの名無しさん
10/04/19 12:18:12
URLリンク(homepage1.nifty.com)

252:250
10/04/19 15:45:25
いやそれは見たんですけど、イベントは必要ありません。
ただ受信さえできばいいんですが、
BytesReceivedやselectしても全然きてないんです

253:デフォルトの名無しさん
10/04/19 18:26:52
ひとつは、送信と受信でポートが一致しているか確認する
もうひとつは、ファイアウォールなどでブロックされてないか調べる

254:250
10/04/19 18:27:34
他よろしく

255:デフォルトの名無しさん
10/04/19 19:10:49
NICのジャンボフレームの設定が双方で食い違ってないか確認する

256:デフォルトの名無しさん
10/04/19 19:13:07
ていうか、「送信が出来た」のはどうやって確認したんだ?

257:250
10/04/19 19:38:51
相手PCにターミナルソフトで受けたんだ
んで、逆にそのターミナルソフトから送信してやっても受信できない
ちなみにC++Builder2007
ごちゃごちゃほざいてないで、お前等もTUdpSocketで受信を試してみろ

258:デフォルトの名無しさん
10/04/19 20:03:47
おもしろい奴だな

259:デフォルトの名無しさん
10/04/19 20:35:04
Wiresharkで確認すれ。

260:デフォルトの名無しさん
10/04/19 20:44:07
C++Builder5のNMUDPでなら受信できたよ

261:250
10/04/20 11:36:58
>>260
まじですか
とりあえず2007はバグって受信すらできないので
俺もBuilder5のNMUDPでやってみたんですが、やっぱ送信できても受信ができなかった。
チラっとコード教えて。
ちなみにWindowsのFWはOFFってるしPFWも入れてない。

262:260
10/04/20 11:58:58
こんな感じで

void __fastcall TADataModule::NMUDP1DataReceived(TComponent *Sender, int NumberBytes, AnsiString FromIP, int Port)
{
  scoped_array<char> buf(new char[NumberBytes+1]);
  int s = 0;
  TNMUDP& aNMUDP = dynamic_cast<TNMUDP&>(*Sender);
  aNMUDP.ReadBuffer(buf.get(), NumberBytes+1, s);
  buf[s] = 0;
  // ...
}

263:250
10/04/20 12:52:21
>>262
あ、どうもありがとう。
むしろ、それ以前にDataReceivedイベントが入らないので
その前のポート設定とかを教えてくださ。
これってbindしなくても勝手に受信できる状態になってるんですかね?

264:260
10/04/20 13:11:15
TADataModuleのコンストラクタで LocalPort にポート番号設定
ReportLevel は 1 にしてる
それだけだよ

265:250
10/04/20 13:27:32
>>264
あ、ありがとうありがとう。でけますた。
RemotePortとLocalPortの設定が逆でした馬鹿でした俺はゴミです。

2007のTUdpSocketもそれがアレで受信できなかったのかなあ
とりあえず試してみまふ

266:250
10/04/20 13:37:01
う〜ん、やっぱ2007はダメかあ。
2007でもLocalPortとRemotePortを逆にしてやってみたりはしてたんだが
こっちの場合はRemotePortに目的のポート番号を指定しないと出力もできなくなる
だから5のNMUDPでもRemotePortに指定してたんですが・・・

ちなみに、俺は昨日から何をほざいてるかと言うと、
最初はWinsocket APIでUDPで通信していて、相手から受信してから
返答を返す時に、相手が受け取ってくれない(SNMPのアレ)
勿論こっちはちゃんと返答を返しているのはターミナルソフトやWiresharkで確認済み。
んで、WiresharkでよくよくみるとSrcポートとDstポートがどうも逆っぽいみたいな
Winsocket APIでこれを逆にできれば一番いいのだが、調べたがやり方がわからない
そこでVBのうんこコンポで試してみたらLocalPortとRemotePortがあったので
それでアレしてみたら見事にちゃんとなってくれたので
それならBuilderのコンポでやってみるかってことで、



267:250
10/04/20 13:55:15
あ、ちなみなんだこれNMUDP
これ送信するときはLocalPort=0、RemotePort=目的ポート番号で
受信するときはLocalPort=目的ポート番号、RemotePort=0
じゃないとダメなのかこれ
つーことはこれって送信と受信したいなら2つNMUDPを使えってことか!!
なんじゃこの糞仕様はw

268:250
10/04/20 14:05:36
あ、違った。
送受信するならLocalPorとRemotePortにポート番号をぶち込めってことだったぽ。。

いろいろすまんこったい

269:250
10/04/20 14:09:05
あ、ダメだ。
LocalとRemoteポートを同じにしたら結局APIでやてtるのと同じだこれ。

うんこしてくる

270:デフォルトの名無しさん
10/04/20 14:10:11
>>267
ひとつで送受信は一応できると思う。
LocalPort : 待ち受けポート番号
RemotePort: 送信先ポート番号
っていうことで、送信元ポート番号や受信元ポート番号を
指定できない糞仕様だったと思う。


271:250
10/04/20 15:13:44
>>270
VBのアレが同じLocalPort、RemotePortって名前で
向こうはしっかりとSrcポートとDstポートがアレできてたから
こっちもてっきり出来ると思っていたんですが、どうやらうんこだったようで・・・

272:260
10/04/20 15:25:32
ついでにNMUDPはbroadcastもできないよ
なのでググりながらwinsock使ったことあるけど
難しくはないと思うよ

273:250
10/04/20 15:30:37
>>272
ええええ!!
winsockでは普通に送受信はしてたんですがー
それでSrcポートとDstポートって制御できましたか??
その辺を是非教えて頂きたいです

274:デフォルトの名無しさん
10/04/21 16:37:04
マイナー製品使うと、クソ品質、クソ仕様だらけで、結局そういうクソな部分の
解決なり時間費やすはめになる。


275:デフォルトの名無しさん
10/04/21 17:41:18
>>274
マイナーかどうかは余り関係がないと思う。

それを補って余りあると考えている人間が使っているのだから
以下略



276:デフォルトの名無しさん
10/04/26 10:53:03
Builder2007で
ListView1->SortType = stData;
ってすると、stDataが曖昧だってコンパイルエラーがでます。
これどうやってキャストしたら馬鹿な2007は納得してくれますか?

277:デフォルトの名無しさん
10/04/26 10:59:51
namespace::

278:デフォルトの名無しさん
10/04/26 11:01:57
>>277
今度は馬鹿な僕が理解できませんでした。
それでキャストしたらエラーでましたが、どやって記述しますか?

279:デフォルトの名無しさん
10/04/26 11:09:09
いやマジでC++の入門書くらい読んだ方が良いって。

今回の件に関してだけなら
stDataが定義されているComctrls::stDataとかで足りるかもしれないけどな。

280:デフォルトの名無しさん
10/04/26 11:13:18
C++の入門書にComctrls::って載ってる?
まあお前が答えるより先に解決したから礼なんて言わないし役立たずとかしおもってないし

281:デフォルトの名無しさん
10/04/26 11:21:02
おまえのヘルプには載ってないのか。

ホント、バカは何をやってもバカなんだな。

282:デフォルトの名無しさん
10/04/26 11:35:33
ん?

283:2068
10/04/26 14:27:01
このスレのタイトルは
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4
くだすれC++Builder(超初心者用)その4


284:2068
10/04/26 14:28:05
>このスレッドは、他のスレッドでは書き込めない超低レベル、
>もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
>C++Builder使いが優しくコメントを返しますが、
>お礼はC++Builderの布教と初心者の救済をお願いします。


285:デフォルトの名無しさん
10/04/28 11:08:33
質問ですが。。。
Builder2007では↓のような関数を呼ぶときに
void hoge( const char *buff )
{
}
↓のコードでよかったのですが
hoge( Edit1->Text.c_str( ) );
Builder2010で同じコードだと
E2034 'wchar_t *' 型は 'const char *' 型に変換できない
ってエラーがでます・・・
これどうやってキャストしたらいいですか?

286:デフォルトの名無しさん
10/04/28 11:13:46
AnsiStringでキャストしたらできました・・・

けどこれって全部AnsiStringでキャストしないとダメですかね。。。

はぁ・・・何この糞仕様・・・

287:デフォルトの名無しさん
10/04/28 11:27:20
っていうか・・・・
2007で作ったのを2010でコンパイルすると
2010で作ったexeは2007のよりサイズが倍になってるんだが・・・
これ以前にBuilder5で同じバグがあってアップデートで多少小さくなったんですが
これ2010もひょっとして同じバグ?
それとも単純に無駄な機能が増えまくってexeが肥大化しただけですか?
うーむどっちみち気持ちいいものではないなあ。

288:デフォルトの名無しさん
10/04/28 11:35:12
2010はUnicode対応になってるので、その分ライブラリが肥大してると
思われる

吐いたコードを逆アセンブルで見てみな

289:デフォルトの名無しさん
10/04/28 11:58:02
うるせえこのぶたやろう

290:デフォルトの名無しさん
10/04/28 12:03:07
>>289
なんだとこのぶた

291:デフォルトの名無しさん
10/04/28 12:50:48
やめんか豚ども

292:デフォルトの名無しさん
10/04/28 13:56:42
とんかつウマー

293:デフォルトの名無しさん
10/04/28 16:08:51
どたどうしなかよくしようぜぶた

294:デフォルトの名無しさん
10/04/28 18:11:44
なんで、超初心者用スレが荒れているんだ。
超初心者用でない質問スレがなくて、ここが超初心者用だと認識していなかった阿呆のせいか?


295:デフォルトの名無しさん
10/04/29 00:19:57
>285
2010ではString=UnicodeString(UTF-16)となった。hogeがconst char *をパラメータで
受け取る仕様とは食い違いがある。Stringを一旦ANSI(Shift_JIS)に変換してから受け取るか、
const wchar_t *を受け取るように変えるか、どっちかが必要。

>287
2010の新機能である属性(Attribute)の影響かと。

296:デフォルトの名無しさん
10/04/30 14:10:19
すんません
wchar_t filename[256];
::lstrcpy( filename, ExtractFilePath( Application->ExeName ).c_str( ) );
普通にコピーしたいんですがエラー出ます
これwchar用の関数かなにかあるんですか?

297:デフォルトの名無しさん
10/04/30 15:44:38
lstrcpy は Windows Kernel API だから lstrcpyW があるな。
lstrcpy が lstrcpyA にマッピングされている。ということは
UNICODE モードでコンパイルされていないようだから、
よい機会なのでアプリケーション全体を UNICODE モードでコンパイルしてみたら?

ANSI 規格準拠で書きたければ wcscpy で。

C/C++ 言語は10年以上まえから UNICODE サポートを行っているので、必要なものは
そろっていると思ってよいですよ

298:デフォルトの名無しさん
10/04/30 15:47:57
>>297
ありがとうございます。
この機会にアレするとして今後の事を考えると
どういう書き方がいいですかね?

299:デフォルトの名無しさん
10/04/30 16:09:34
プロジェクトの設定ダイアログに
「TCHAR を wchar_t にする」みたいなオプションがあるから
それを有効に。
これで Windows API と関連する部分が UNICODE に切り替わるので
コンパイルエラーが出てきたところを _T 系マクロでラップ。

T マクロを使う分には、ANSI/WIDE 両方で動くコードを作れる「はず」なので
「WIDE モードでエラーをつぶす」
「ANSI に戻して動作チェック」
「WIDE にして動作チェック」
を繰り返す。

最終的に ANSI/WIDE 両方で動く(C/C++)コードができて
WIDE モードでコンパイルすれば UNICODE-VCL との親和性も高くなる。

というところ。



300:デフォルトの名無しさん
10/04/30 16:24:31
>>299
あ、プロジェクトオプションのそれをアレしたら普通にlstrcpyでもコンパイル通った。
基本的にTCHARの設定はアレしないほうがいいんですかね?
これから新たに作るとかのときは

301:デフォルトの名無しさん
10/04/30 16:46:13
なぜコンパイルが通ったかを理解していないと、ちょっと危ないかも。

lstrcpy (を含む Windows API で、文字を扱うもの)は、
lstrcpyA と lstrcpyW が実体として定義、提供されていて、
Windows.H とその配下がマクロ(単純な #define)で plain な lstrcpy にマップしているのです。

296 で提示されているコードでは wchar_t (と c_str())を直に使っているので、
WIDE 版の API である lstrcpyW を明示的に呼ぶほうが素直かも知れません。
ここら辺は各自の判断でよいかと。


302:デフォルトの名無しさん
10/04/30 16:52:31
>>301
色々とありがとうございます。
ちょっとwchar_t等の知識が乏しいのでまずはその辺を勉強してみます。
ご教授ありがとう。

303:デフォルトの名無しさん
10/04/30 16:59:40
「TCHARの設定」は、影響範囲とかがわからない場合には、むやみに変更しないほうがよいでしょう。

以下のコードなら、ANSI でも WIDE でも動きますよ。

TCHAR filename[256];
_tcscpy( filename, ExtractFilePath( Application->ExeName ).t_str( ) );



304:デフォルトの名無しさん
10/04/30 17:00:15
おっと、<tchar.h> を追加するのを忘れずに

305:デフォルトの名無しさん
10/04/30 17:28:33
>>303-304
確かにそれでコンパイル通りましたが・・・
filenameの中身をみてみると??になってました・・・

ちなみにTCHARって1バイトなんですねこれ。

306:デフォルトの名無しさん
10/04/30 17:36:38
CBuilder5では以下のコードはOKでちゃんとmdbファイルが作成されるのですが
CBuilder2010でやるとコンパイルエラーはでないのですが、実行するとアクセス違反エラーが出ます。
Variant cat = Variant::CreateObject("ADOX.Catalog");
cat.Exec(Function("Create") << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\test.mdb");

これ、どうしたら正常にmdbファイルを作成することができますか?

307:デフォルトの名無しさん
10/05/01 05:57:24
>実行するとアクセス違反エラーが出ます。
どこで?


308:219
10/05/01 09:06:17
HTMLの特殊記号をUnicodeに変換(&を&に変換する)してくれるような
機能はVCLにありますか?

309:デフォルトの名無しさん
10/05/01 10:23:40
>>305
TCHARはマクロ

#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif


310:デフォルトの名無しさん
10/05/01 10:28:01
>>305
URLリンク(docwiki.embarcadero.com)

311:デフォルトの名無しさん
10/05/04 11:50:15
初心者ですお勧め参考書教えてください

312:デフォルトの名無しさん
10/05/05 17:01:47
TRegistryのWriteDateTimeとWriteTimeって同じ動作をするような気がするんですが...
WriteTimeにしたからといって引数の日付値が消えるわけではないんでしょうか?

313:デフォルトの名無しさん
10/05/06 10:42:27
>>311
プログラミング初心者かC++初心者かC++Builder初心者かで違う。
前ふたつはできて、C++Builder初心者ならDelphiの参考書とマニュアルのC++拡張見れば十分。

314:デフォルトの名無しさん
10/05/06 21:50:24
C++Builder使ってる参考書ってあんの?

315:デフォルトの名無しさん
10/05/06 22:22:25
>312
WriteDateTimeとWriteDate/WriteTimeは同一の動作。つまり
> WriteTimeにしたからといって引数の日付値が消えるわけではない
で正解。

316:デフォルトの名無しさん
10/05/06 23:12:34
>>314
Amazonで検索してみれば?

317:デフォルトの名無しさん
10/05/07 20:33:39
p

318:デフォルトの名無しさん
10/05/07 20:34:21
>>307
やっとあくきんがとけた
cat.Execの行でエラーでます。
これ何とかなる方法はありますか?

319:デフォルトの名無しさん
10/05/08 02:40:30
アクセス違反エラーを出しているモジュールを知りたかったので、
表示されているアドレス等、一式が欲しかったんだな。

多くのダイアログは、Ctrl-C でテキスト部分がコピーできるので、
気楽に保存できるよ

320:デフォルトの名無しさん
10/05/10 12:22:32
>>319
エラーはEAccessViolationって書いてあるダイアログが出るだけです・・・

321:デフォルトの名無しさん
10/05/11 11:07:17
C++Builder2007か2010でODBCを経由せずに直接DBアクセスする方法教えてください。
あ、DBはアクセスのmdbでいいです。

322:デフォルトの名無しさん
10/05/11 11:13:48
ADOならいいのか

323:デフォルトの名無しさん
10/05/11 11:24:26
dbgo とか ADOTable とか使ってみたら > 321

324:デフォルトの名無しさん
10/05/12 09:49:17
ppp

325:デフォルトの名無しさん
10/05/12 10:59:49
mdbファイル操作について質問ですが
Variant::CreateObject("ADOX.Catalog");を利用して
フィールドの型とサイズを取得する方法を教えてください


326:デフォルトの名無しさん
10/05/12 12:37:07
TMaskEdit の EditMask プロパティを実行時に変更すると
スタックオーバーフローとか例外を吐かれたので解決方法調べてたんだが
AutoSelect = false にすると収まったんで、とりあえずここにチラ裏していく。

ブレークポイント&ステップ実行使うと再現しなくなる例外でしたよ

327:デフォルトの名無しさん
10/05/12 13:28:04
      for col in rs.Fields:
        col.name, col.type, col.size


328:デフォルトの名無しさん
10/05/12 16:28:43
そんなバグだらけな製品よく使う気になるよな。


329:デフォルトの名無しさん
10/05/12 21:32:42
VCやGCCよりは遥かに少ないけどな

330:デフォルトの名無しさん
10/05/12 22:06:45
2011が出る前に2010買っておいた方がいいのかな

331:デフォルトの名無しさん
10/05/13 15:33:35
>>325を教えて

332:デフォルトの名無しさん
10/05/13 16:15:57
64bit対応版が安定するまでは6Pro使い続ける

333:デフォルトの名無しさん
10/05/14 12:17:12
bcb2007使用しています。
Memo1にAnsiStringに貯めこんだ改行含みの文字列を表示させて計算結果を表示しています。
数が多くなると処理が遅くなっています。高速化の定石があれば教えてください。

Ansi

334:デフォルトの名無しさん
10/05/14 12:20:47
enter押したら投稿してしまいました。

bcb2007使用しています。
Memo1にAnsiStringに貯めこんだ改行含みの文字列を表示させて計算結果を表示しています。
数が多くなると処理が遅くなっています。高速化の定石があれば教えてください。

AnsiString s="";
for(){

s+=文字
}

for(){

s+=文字
}

for(){
s+=文字

}

Memo1->Text=str;

このような形です。
Memoにはこだわっていません。sのサイズがわからないので、
とりあえず、AnsiStringを使っています。
よい文字格納変数型とよい表示コンポーネントはあるでしょうか?

335:デフォルトの名無しさん
10/05/14 16:26:25
IdUDPServerでいいからsrcポートとdstポートを逆にして送信する方法教えてよ

336:デフォルトの名無しさん
10/05/14 18:11:42
>>334
std::string str;
str.reserve(64*1024);
...
Memo1->Text = str.c_str();
でどうかね。

337:デフォルトの名無しさん
10/05/14 18:18:44
ああそうか
C++BuilderにはStringBuilderがないからか

338:デフォルトの名無しさん
10/05/14 18:28:43
>数が多くなると処理が遅くなっています。
どれくらいの量の文字列を扱っていますか?

文字列処理が遅いのか、描画が遅いのか。をまず分けたほうがよいですね。

Memo1->Text=str;

をコメントアウトして
あと、速度の話をするときは、ちゃんと時間を計りましょう。

LARGE_INTEGER _start, _end;
QueryPerformanceCounter(&_start);
QueryPerformanceCounter(&_end);

__int64 lap = _end.QuadPart - _start.QuadPart;

こんなんで、CPU のクロック単位の経過時間が計れます。

339:デフォルトの名無しさん
10/05/14 21:32:23
334です。
レスありがとうございます。
std::string str; を検討してみたいと思います。(BCBではつかえない?)
時間に関しては、文字蓄積時はあちこちなので、
時間がはかりづらいですが、

コンポーネントへの表示処理とそれまでの計算時間を
指標にして表示処理を時間的に評価してみたいと思います。

計算結果をテキストに表示する手法の常套手段が
知りたいのもありました。

なお計算は動的計画法なるもので、計算量はピンからキリまでありますので、
組み合わせが多い状態の高速化を図る予定です。

340:デフォルトの名無しさん
10/05/15 03:19:55
一般論として。
「速度をあげたい」と思ったら、まずそれを測定することを考えましょう。
測定するために対象を調査していく過程で、問題点そのものが分かってしまう場合があります。
定期的に速度を計測、比較することで、少なくとも、改造の結果かえって遅くなった。ということは
避けられるでしょう。

テストするときは単一データではなく、複数のデータを使うこと。テストデータの量を変えること。
10, 20, 50, 100, 200, 500.... といった (1, 2, 5) パターンがおすすめ。
時間がかかるので端折るときでも、桁が異なる複数のデータ量での計測を忘れずに。

ある程度、対象データ構造、アルゴリズムの癖が分かったら、本質的にどこまで速くなるのか。
を考えてみること。データが(毎回)ディスクから読み取られるなら、ディスクアクセス速度より
速くはできない。(キャッシュとか考えないと)
CPU のキャッシュを超える量のデータを扱うなら、メインメモリのアクセススピードを超えることはできない。
まぁ、ここら辺は厳密に計算する必要はなく、桁合わせ程度の概算で十分ですが、
原理上不可能な速度を追求して時間を浪費するのは避けたいですし、
逆に「もう一桁速くできるはずだ」となるかもしれません。




341:デフォルトの名無しさん
10/05/15 12:27:07
>>334
TStringStreamを使ってみてはどうだろうか?

342:デフォルトの名無しさん
10/05/17 22:05:25
TStringStream
ありがとうございます。
検討中なので結果報告できないですが、ご容赦ください

343:デフォルトの名無しさん
10/05/26 11:40:30
早く>>325を教えろつってんだ!!

344:デフォルトの名無しさん
10/05/26 21:21:46
調査中ですので、あと10年ほどお待ちください。

345:デフォルトの名無しさん
10/05/27 11:04:13
うるせー!

346:デフォルトの名無しさん
10/06/02 14:01:19
HDCをTBitmapにする方法教えて

347:デフォルトの名無しさん
10/06/02 17:25:05
SQLConnectionでmdbファイルをアクセスする方法とかを教えてくださいよ

348:デフォルトの名無しさん
10/06/02 22:59:11
>346
TImagePicture.Bitmap.HandleもHDCなので、ここに向かってBitBltすればいいんじゃない?

349:デフォルトの名無しさん
10/06/03 09:41:54
>>348
できました

350:デフォルトの名無しさん
10/06/04 15:55:05
2007でデスクトップのサイズ(横幅)を超えるフォームを作っても
実行するとデスクトップの横幅と同じサイズになってしまうのですが
これちゃんと指定したサイズになる方法を教えてください

351:デフォルトの名無しさん
10/06/04 18:06:02
さっさと教えやがれ

352:350
10/06/04 19:11:01
はよ、教えろや
役にたたん奴らばぁじゃのぉ
ウンコでも食うとれや

353:デフォルトの名無しさん
10/06/04 22:27:33
ウィンドウはデスクトップサイズを越えることができなかったはず。Windowsの制限。
クレームはゲイツかカトラーにどうぞ。

354:350
10/06/05 05:35:49
>>352
で?

355:デフォルトの名無しさん
10/06/07 10:03:47
VMなんかでホスト側の解像度を超えられないのは馬鹿じゃねとかおもう

356:デフォルトの名無しさん
10/06/11 19:36:52
C++Builderでバージョン情報の自動更新などもない状態で全く同じファイルを
コンパイルするとその都度違うファイルが出来ますがこれは何故なんでしょうか?

357:デフォルトの名無しさん
10/06/12 00:01:15
インクリメンタルリンクしてるからじゃね?
フルビルドすると同じになるはず

358:デフォルトの名無しさん
10/06/12 00:26:02
ビルドの日付が埋め込まれるから異なるとかそんな話か?

359:356
10/06/12 00:56:43
ありがとうございます
インクリメンタルリンクは切ってあります
ステートファイルの作成をしないにチェックが入っていて/Gnオプションがオプションソースに書かれています
でも毎回違うファイルになってしまいます

>>358
そういうことなのでしょうか?
どこかにオプションはありますか?

360:デフォルトの名無しさん
10/06/12 12:26:33
>>359
プロジェクト→オプション→バージョン情報とかじゃね?
ビルドの日付を埋め込むオプションは見つからんなあ

361:デフォルトの名無しさん
10/06/12 13:54:38
>>360
そうですか
バージョン情報のチェックは入ってない状態です

何で微妙に違うファイルが毎回出力されるんだろう
というかこれってうちだけの現象なんでしょうか

362:デフォルトの名無しさん
10/06/12 14:00:13
diffってみたら?

363:デフォルトの名無しさん
10/06/12 16:18:13
WindowsはPEヘッダにタイムスタンプ入るから同じEXEはできない
オプションはない
それでも2バイト前後だから10バイト以上異なるならデバッグ情報ジャマイカ?

364:デフォルトの名無しさん
10/06/12 20:30:52
成る程そういうことでしたか
大体10バイト程度ですが近くにPE\0の文字も確認できるのでそれで間違いなさそうです
勉強になりました
どうもありがとうございます

365:デフォルトの名無しさん
10/06/13 16:08:55
ようやく64bitに対応したね

366:デフォルトの名無しさん
10/06/13 16:12:43
あとはデバッガが動けばねぇ

367:デフォルトの名無しさん
10/06/13 17:11:23
すみませんが、BCB6でfastmmのフルデバッグモードを使うには
どのような設定が必要かご教示お願いします。
FastMM4.pasやFastMM4BCB.cppをプロジェクトに組み込んだのですが、
終了時にメモリリークのダイアログしかでてこないので、どこでリークしているのか
良く分かりません。


368:デフォルトの名無しさん
10/06/13 21:19:22
C++Builder使いじゃないからよくわからんけど、プロジェクトオプションでFullDebugModeを
定義済の状態にしてFastMM関係のソースをコンパイルすればいいはず(*.objか*.dcuを
一旦削除することで)。FastMM_FullDebugMode.dllを配置するのも忘れずに。

369:デフォルトの名無しさん
10/07/02 20:18:11
わかりました。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4407日前に更新/84 KB
担当:undef