[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/20 10:08 / Filesize : 237 KB / Number-of Response : 950
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++VB 初めてプログラム板来た初心者スレ delphi hsp



1 名前:デフォルトの名無しさん mailto:sage [04/10/30 13:59:11]
【主流プログラム】
VisualC++   UNIXOSはこれで書いてる。プログラム作り難い。ny作者がGUIに凝る為bcbに逃げた実績あり。
        GUIをVBで内部をC++で書いてる人多いみたい。数多くの初心者を粉砕してきた。
VisualBasic  複雑なプログラムの開発できない。動作が重い。短時間でアプリを作れる。
JAVA     オブジェクト指向でそれがまた難しいとか。JAVA仮想マシーンを間に挟むことで
       全てのOSで実行できるのが売りだが、全てとはいかないとか。VBより軽く.netよりちと重い。
Delphi    中々高機能なアプリがVB並みに簡単に作れ実行速度もC++並み。資産を利用できないのが弱み。
       ファイルサイズが大きめ。
BorandC++Builder  C++並みに高機能な上VB並みに作りやすくアプリも軽い。資産を利用できる。
          ファイルサイズが大きめ。けど人気は微妙。
【支流プログラム】
HSP    優しくて主に簡易的なゲームを作りに適している
ひまわり  日本語でプログラムを書ける
jscript vbscript javascript php perl   基本的にWeb系プログラム

【2chスレ数ランキング】(左から多い順)
 C,C++系圧倒 JAVA系55スレ VB系38スレ HSP系37スレ delphi系35スレ BCB系11スレ ひまわり4スレ
【完成したプログラムの処理速度】(左から早い)
 c,c++>>BCB>delphi>>>>>>>.net>>JAVA>>>>>VB>>…>>HSP
【完成したプログラムのファイルサイズ】
 c,c++が小さくBCB,delphi系は大きくなる

445 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 22:06:59 ]
事故解決しました
条件文のときのは「=」がCで言う「==」になるんですね

446 名前:デフォルトの名無しさん [2006/11/25(土) 23:29:27 ]
HSP3.0での質問です。
デジカメで取ったデータがなどサイズが大きすぎるとき一括して小さくするプログラムを
習作の意味も含めて作っているのですが、肝心の画像を小さくする操作が困っています。
buffer 2,,,0
picload refstr
buffer 3,,,0
gzoom ssize,vsize,2,0,0,???,???,1
refstrは扱う画像のパス、ssizeは縮小したいサイズの横、vsizeはその縦のサイズが入っています。
gzoomの第6,7引数がどうしたらいいかわかりません。(???となってるところ)
扱う画像の元のサイズが入れられるとよいのですが、それはどうやって得られるのでしょうか。
お願いします。

447 名前:デフォルトの名無しさん mailto:sage [2006/11/25(土) 23:57:20 ]
ちなみにbuffer 2の(ウインドウ枠含めたサイズ)がginfo_sizexなどで取得できるのですが、
やはり枠が入っているので微みょにおかしな感じになってしまいます。。

448 名前:デフォルトの名無しさん [2006/12/04(月) 18:09:17 ]
はじめまして。

nagoya.cool.ne.jp/palmtop/Magic.html

ここにあるソフトの音声が勝手に変わらないものを作りたいのですが、
ご教授願えないでしょうか。
パソコンのある音だけ異常に小さくなってしまう症状が続いていたのですが、
これを起動するとある場所で以前の綺麗な音声になるのです。
原因もわからないのですが、ずっと直らなかったことなので、
もし直るのであればと思い、ここに書き込ませていただきました。

音が一定になるものを常駐させておけば問題なくなるのではないかと思いまして。

是非お力をお貸しください・・・。

449 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 08:12:32 ]
>>446
「HSP 画像サイズ」でググったらすぐ見つかりましたよ。

ginfo_sizex じゃなくて ginfo_winx を使いましょう。
ヘルプには初期化サイズと書いてあるので見落としたのでしょうが、
picload も初期化と同じことなので、ちゃんと画像サイズが入っています。

450 名前:デフォルトの名無しさん [2006/12/06(水) 00:06:16 ]
「独習C」を読むのに1年半かかってしまいましたが、僕にプログラムの才能はあるでしょうか?
ちなみに旧帝大哲学科卒です

451 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 00:07:41 ]
学歴を見せびらかすところに才能が無いと見た。

452 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 00:30:56 ]
ある程度プログラムができるようになってからじゃないと才能を評価しようがない。

453 名前:デフォルトの名無しさん [2006/12/11(月) 18:10:53 ]
Delphiで作ったアプリのカーソルを大きくカスタマイズしたいのですができません。
カーソルを他のものと差し替えることはできたのですが
肝心な大きさを替えられません。どうしても32×32ビットになります。
できれば2倍くらいの大きさにしたいのですが
どうすればいいのでしょうか?
どなたかよろしくおねがいします!




454 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 15:41:23 ]
Windowsのサスペンド機能ってありますよね
スクリーンセイバー起動でレジューム時はログイン画面に戻るって設定で

スクリーンセイバーが動いてWindowsがサスペンド状態になっていても
自分の作ったアプリケーションは動作している状態にしたいのですが
どうやったら出来ますでしょうか?
やさしい人教えてくださいm(__)m

455 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 17:03:32 ]
スクリーンセーバが動作している間、ハードウェアは全く休んでいないから、
普通にプログラムは動いている。

スタンバイや休止状態はまた話が違うが。

456 名前:デフォルトの名無しさん [2006/12/12(火) 17:33:06 ]
>>453です。大きさを変更するのはぐぐってみてもどうやら無理っぽいので、
他の質問をさせて頂きます。

Delphiでアプリを作りました。仮に「ゲームA」とします。
ゲームAでマウスカーソルをカスタムしました。
ゲーム中は正常に動作します。
しかしメッセージボックス(注意表示)が表示された時、
その範囲に入るとデフォルトのカーソルに戻ってしまいます。
調べると、メッセージボックスはOSのWindowsから表示されているようです。(文章の内容はアプリから出力されています)
ですので設定箇所がありません。
OSでは他のゲームも起動しますので、アプリ内だけで制御したいのです。

こういった場合、
ゲームAが起動している時だけマウスカーソルを制御することは可能でしょうか?
外部ファイルでもいいです。

よろしくお願いします!

457 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 20:13:49 ]
どなたかAIBOのプログラミングわかる方いないですか?
ヘルプミー

458 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 16:28:18 ]
>>457
ツールキットが売られてなければお手上げ
あとは電子器具でプローブして反応を確かめながら試すしかない

459 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 16:29:06 ]
>>456
メッセージボックスを自分で作ればいいんじゃ?

460 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:37:06 ]
202.33.253.145/qanda/delphi/d0002805.html
このサンプルをやろうとしているのですが、どうやってコピペするんですかね?
Delphiの新規作成でプログラムを作成で、ボタンを1個配置してコピペでいいんですか?

461 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:20:48 ]
>>460
全部コピペじゃ動かんと思う

1.新規アプリケーション作成
2.ボタン一個つくる
3.ボタンダブルクリック
4.できたイベントに、Button1Click(Sender: TObject);
 内のコードをコピペ
5.procedure TForm1.TestMethod(Sender: TObject);
のコードをコピペ
6.宣言部の procedure TestMethod(Sender: TObject); // Button のイベントハンドラ
も書く
7.実行

あと、Delphiに関しての質問はなるたけ、Delphiの初心者スレへ


くだすれDelphi(超初心者用)その37
pc8.2ch.net/test/read.cgi/tech/1165561407/


462 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:17:59 ]
サブルーチンの中にサブルーチンを書くのはどうでしょうか?
というのも指導教官に「それはよくない。美しくない」と指摘されたのですが、
実用性を重視するなら、ありといえばありですよね?
みなさんが直面された重要な困難があれば教えて欲しいです。

463 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:18:49 ]
>462取り下げ



464 名前:デフォルトの名無しさん [2007/01/28(日) 00:02:36 ]
delphi入門
delphi-delphi.tripod.com/delphi.html


465 名前:デフォルトの名無しさん [2007/01/29(月) 13:04:18 ]
お前らこれ解ける?
次に示すScheme プログラムについて以下の問に答えよ。
(define (subtree? t1 t2)
(cond ((atom? t1) (eq? t1 t2))
(#t (cond ((atom? t2) #f)
(#t (or (and (subtree? (car t1) (car t2))
(subtree? (cdr t1) (cdr t2)))
(or (subtree? t1 (car t2))
(subtree? t1 (cdr t2)))))))))
関数subtree?は二つのS 式(S 表現) t1, t2 を入力とし、真偽値(#t あるいは
#f) を返す関数である。
関数subtree?が真(#t) を返すための必要十分条件は何であるか答えよ。また、
関数subtree?が実際そのような関数であることをS 式に関する帰納法を用い
た議論によって示せ。

466 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 19:51:52 ]
2次配列で変数をt[][]とする時に定義をする際に[]のなかには定数でないとダメですか?
別の変数例えばnでは定義出来ないのでしょうか?

467 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 02:12:26 ]
Private Sub StartToolStripMenuItem_Click(ByVal send〜(以下略
Draw()
End Sub

Private Sub Draw()

で飛ばないのですが、ていうか

名前’Draw’は宣言されてません
名前空間のステートメントが無効です

とか言われるのですが如何すれば良いのでしょうか?

468 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:45:51 ]
>>467省略されたところが一番大切


469 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:55:42 ]
Private Sub StartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartToolStripMenuItem.Click
Call Draw()
End Sub
です…すいません。

470 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:48:56 ]
>>469
そこもだけど、プログラム全体の位置とか重要なので、全部
全部出したくないときは再現できるソース全部うp

471 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:56:22 ]
>>470
www.uploda.org/uporg674568.zip.html

挫折しそうです(;ω;)

472 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 03:16:48 ]
>>471
'Form1.vb
Public Class Form1
    Private Sub StartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartToolStripMenuItem.Click
        Call Draw()
    End Sub
    ....
End Class
Private Sub draw()
    ....
End Sub

の様になっているのは、

'Form1.vb
Public Class Form1
    Private Sub StartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartToolStripMenuItem.Click
        Call Draw()
    End Sub
    ....
    Private Sub draw()
        ....
    End Sub
End Class

の方がいいんじゃないのか?

473 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 13:58:57 ]
ありがとうございます、直りました!
が、VB6.0の書き方してるdrawの中身が('A`)ウボァー



474 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 03:12:34 ]
マルチになってすいません本当すいません

Form1.Line (Sx, Sy)-(Sx + box, Sy + box), C, BF
というVB6.0の行を書き換えるには
ttp://msdn2.microsoft.com/ja-jp/library/f956fzw1(VS.80).aspx
を参照すれば良いのでしょうか?

475 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 04:16:45 ]
>>474
そうっすね

476 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 05:55:03 ]
そうっすか

477 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 12:00:07 ]
Visual Studio 2005でC++をしているのですが
参照の設定の仕方がわかりません。(DLLの参照追加をしたい)
どこを調べても[プロジェクト]→[参照の追加]を選択とありますが
そんな項目ないです・・・
近いものでプロパティのウィンドウから参照設定というものがありましたが
「新しい参照の追加」を選んでも何のプロジェクトの表示もないですし
「追加の参照の検索パス」に目的のDLLを含むフォルダを指定しても何も変化がありません。
どうすればいいのでしょうか?

478 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:14:21 ]
HSPで作ったソフトは実行ファイルが必ず
カップ入りポタージュスープのアイコンになるんでしょうか?
実行ファイルを自分の好きなアイコンにするのは不可能でしょうか?

479 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 09:37:40 ]
できる。公式サイト見れ。

480 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 10:03:22 ]
>>479
やっと公式サイトのどのページに説明が載ってるかわかった。
ありがとう。
リソースハッカーってフリーソフトとセットで使わないといけないんだね。

481 名前:あああ mailto:あああ [2007/03/03(土) 20:18:39 ]
あああ

482 名前:デフォルトの名無しさん [2007/03/09(金) 21:40:43 ]
株価情報を取り込んで、検証したり、注文だすという目的があります。(目的はそれだけです)

エクセルのvbaでも十分とかいう回答がまったくそのとおりだといいのですが、
実際にやってみたら一番使いやすいのはどれなのか知りたいです。

重視したいのは、プログラムが少々面倒でも、一度作ってしまえば
日々の労力が少ないというのを重視したいです。

よければアドバイスお願いします

483 名前:482 [2007/03/09(金) 21:43:30 ]
プログラム経験はまったくありませんが、学ぶ意欲と時間はそれなりにあります
よろしくお願いします



484 名前:デフォルトの名無しさん [2007/03/10(土) 10:35:32 ]
>>482
・C#
・現在、Excelが詳しくてそれを生かしたいなら、VBAでも発注までできる



485 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:41:19 ]
Webにアクセスするためのインタフェイスにも因るけど、JavaScriptで動的な情報を提供しているサイトの情報なら、
ウェブブラウザコントロール使う必要があるよね
その辺.netはどういう対処すればいいの?

>>482
> 実際にやってみたら一番使いやすいのはどれなのか知りたいです。
貴方が怠けず全ての実装可能な言語を試せば、実際にやってみたら一番使いやすいのはどれなのか知ることができます。
さらにこの方法は唯一無二の方法ですので、第三者に依頼したり一部の言語を扱わない、といったことは出来ません。
結構シビアです

486 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:04:39 ]
つ「株ロボ」

487 名前:デフォルトの名無しさん [2007/03/10(土) 11:25:12 ]
>>484
C♯ですか参考にさせていただきます。ありがとうございます

488 名前:デフォルトの名無しさん [2007/03/10(土) 13:51:20 ]
Cを勉強したいんですが
まず最初に読んだらいい本ってありますか?
種類が多すぎてどれがいいか分からないんですけど



489 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:44:10 ]
>>488
年齢にもよる

490 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:30:26 ]
馬鹿じゃない奴(人一倍賢い必要は無し)が真面目に勉強すれば
よほどの糞本つかまない限り一ヶ月後にはかなり使いこなせるだろう。

491 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 22:07:36 ]
そうだな、読んだ本が合わないと思ったら、別の本をあたればいいし。

492 名前:デフォルトの名無しさん [2007/04/08(日) 22:47:01 ]
このスレずっと読んでみてやっぱわからないや><。
ということでとにかくお金を2万5000円ほど使ってソフトを買ってしまったよ。
これで後戻りできないようになった。
VC++(マイクロソフトのStudioとかいうやつ)
6ヶ月ぐらいで使えるようにならなければ、捨てることにした。

というわけでまずなにしたらいいかわかんないので、
本屋いって初心者本買ってきます。



493 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 23:40:13 ]
後戻りできないようにするというのはいいと思う



494 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:10:56 ]
>>492
つ Visual C++ 2005 Express Edition 

495 名前:デフォルトの名無しさん [2007/04/11(水) 21:12:14 ]
VBのCLng関数で、「CLng(数値+0.5)」って端数処理をしているものがあるのですが、
これは端数処理として切り上げと四捨五入のどちらになりますか?

496 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:46:29 ]
>>492
いまどきCとかC++から入ろうという根性はいいと思う。
でも挫折しそうになったら他のラクそうな言語も見てみた方がいいよ。

497 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 16:29:08 ]
RubyとDelphiってどっちが簡単なのでしょう?
RubyでGUI使うときはトゥインクルK何とかってやつを使わないといけないの?
COM呼び出して使うぐらいは出来そうだけどAPIは難しそう
WIN32APIってC言語知らないと使えないのですか?
解説してるサイト見ても構造体とかポインタとかlong,long,longとか分けわかんない


498 名前:デフォルトの名無しさん mailto:sage [2007/04/21(土) 21:42:20 ]
>497
目的はなに?WindowsのアプリケーションならDelphiだし、WebアプリケーションならRuby。

499 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 00:42:13 ]
ああそうでしたか、RubyでもWindowsアプリ出来るものだと思ってました。
自分が興味あるのは階層タイプのエディタ、データベースなのでそれだと
Delphiということになりますね。
WIN32APIについてはどうなのでしょう?

500 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 12:29:11 ]
どうって言われても…普通に使えますよ。というわけでくだすれDelphiスレあたりでお待ちしてます。

501 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 21:25:45 ]
いや、Cの知識が必要なのかどうかってことをきいてるんですけどね。
Delphiに限らず、いろいろな言語から使用できるのは知っていますが
COMと違って難解なので。


502 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 21:28:24 ]
Cの知識っていわれてもな
自称初心者の脳内言語で話されても困るわけで
具体的にどこの何をどのように悩んでるわけ?

503 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:02:54 ]
WindowsやるならCの知識は必須。



504 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:11:53 ]
> Windowsやる
> Windowsやる
> Windowsやる
> Windowsやる
> Windowsやる


505 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 21:49:59 ]
どこの何をどのようにと言われましても
基本的な使い方がわからないのだから質問のしようがありません ^^;
まあ現時点では無理そうなので諦めます、ありがとうございました。

506 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 00:43:35 ]
この4月から専門かよって、初めてプログラムつくって感動した。
C++とJavaやってからVB..net触ってさらに感動。


507 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 06:11:45 ]
文系の人間なんだけど、
興味がわいてプログラムの講義をとってみた。
自分が書いたHello Worldが動いたときは感動したw

508 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 15:55:20 ]
質問!!


ところで、C/C++で何作ってるんですか??

509 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 18:02:54 ]
Vectorや窓の杜を見れば?

510 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:06:45 ]
>>509 
いやいや、ここにはあんなの作れる奴いないから!

511 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 08:20:10 ]
君の中では、Vectorや窓の杜にあるソフトは
いったいどんだけ凄いんだw

512 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 18:19:55 ]
Vectorはすごくないけど窓の杜は一応すごいだろ

513 名前:デフォルトの名無しさん [2007/05/06(日) 07:05:01 ]
test



514 名前:デフォルトの名無しさん [2007/05/06(日) 11:15:09 ]
C言語はB言語で作られたって本当ですか?

515 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:25:59 ]
C言語のコンパイラはC言語によって書かれる事が殆どだ

516 名前:デフォルトの名無しさん [2007/05/06(日) 11:46:48 ]
>>515
昔、SunOSで、付属のCコンパイラで、gccコンパイルして、
安定性から、できたgccでまた、gccをコンパイル→以下繰り返し
してたときは、なんだかムズムズした。

517 名前:デフォルトの名無しさん [2007/05/06(日) 18:38:24 ]
C++(っつかプログラミング)始めたいんだけど、
Cの知識絶対必要って人

C++から初めてOKって人がいる。

俺の素人考えによると今更[手続き型]のC始めるより[オブジェクト指向]のC++の方がいいとか思うんだけど。
前者派の人は、何でそう思うの?
CからC++に移行するの大変だとか言ってるくせに、まずはCからとか言ってるのってどゆこと?

518 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:57:13 ]
オブジェクト指向とか手続き型とかもうどうでもいい

519 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:02:41 ]
>>517
C++ = C + ((C++)-C)

520 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:10:57 ]
>>517
CはC言語レベルでもプリプロセッサのせいで、C使いにも理解不能な書き方が出来る。
有名なのは #define BEGIN { 〜 #define END } ってマクロ

C++はさらに、演算子の置き換えとテンプレートのおかげで、全く別物に変身しうる能力を持ってる。
だから C言語レベルの作法から取得して欲しいという願いが現場からは出るのだろう。

単なる趣味の道具として使うなら、作法もクソもない。
好きに勉強して、好きに使えばOK


そういや begin 〜 end のpascal系言語は、そういう意味じゃ、お作法の勉強は不要だな

521 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:30:26 ]
どんな言語にも、相応のお作法はあると思うけど。

>517
Cで基礎をやっておくと、C++での苦労が多少減る部分はあるし、
Cの関数が使えなくなる訳じゃないからな。
俺はC→Java→C++で行ったから、移行にはさほど苦労しなかったが。

つーか、そもそも考え方なんて十人十色だろ。
そこに明確な理由を求めるなんて無意味じゃねーか?
そんなもん、初めからC++やって問題ない香具師も居れば、
Cをやったから今俺はC++使えるんだと思ってる香具師も居るだろうよ。w
所詮は書いた人間の主観の問題だろうさ。

522 名前:デフォルトの名無しさん [2007/05/11(金) 15:43:22 ]
C++はようするにオブジェクト指向をつかめるかどうかであり、


523 名前:デフォルトの名無しさん [2007/05/12(土) 14:04:58 ]
C言語勉強始めたばかりなのですが
わからないので質問させてください

/* s2 の指す中身がヌルでなければ一文字コピー */
while ((*s1++ = *s2++) != '\0')
; /* 空白行¥ */
↑これのwhile文はどういう意味なのでしょうか?
while文はループ処理をするのだと思っていたのですが…
こういう使い方もできるのですか?



524 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 15:38:47 ]
それは wihile文ではなく 代入が 演算子である事を利用してるわけだ
ただ、C言語ならお作法としては、

 while (*s1++ = *s2++);

を推奨する人が多いように思う。
意味は、ポインタを変更しつつ代入し、その代入データが 0 になればループ終了という

525 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 15:54:31 ]
あっと、良く見たら コメントが間違ってるよ

それは s2の中身をs1にコピーして、ヌル文字ならループ終了というコードで
バッファオーバーランの原因になり易いコード

s2 の指す中身がヌルでなければ一文字コピーなら

if(+s2) s1++ = *s2++;

こうなる


526 名前:デフォルトの名無しさん [2007/05/12(土) 16:13:34 ]
>>524-525
While(条件式)って覚えていたのですが
条件式の中でも代入の処理ができてそれをループできるのですね

while (*s1++ = *s2++);
こっちは'\0'をチェックしていないのですが
これも'\0'を見つけたらループから抜けるのですか?

あとifのの中の(+s2)というのも初めて見ました
これはどういう意味なのですか
質問ばかりですみません

527 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 16:34:34 ]
>>526
if(*s2)
の打ち損じじゃない?

あとwhileの件、代入演算子にも戻り値があって、
例えば a = (b = 3); とかやるとaにも3が入るんだけど、
while(*s1++ = *s2++) はその応用で、*s1 = *s2 の演算結果が'\0'かどうかを継続条件にしてる。(同時にポインタを先に進めてるがここはとりあえず気にしなくて良い)

つか、>>524 の書き方はトリッキーすぎると思うw
ここは初心者スレですよ?w

528 名前:527 mailto:sage [2007/05/12(土) 16:44:44 ]
ごめんスレの流れあんま読んでなかったorz

'\0' は 0 と同じだからわざわざ比較する必要がない。

529 名前:デフォルトの名無しさん [2007/05/12(土) 16:54:29 ]
>>527-528
あ、なるほど
'\0'が0として判断されて「0は偽」だからループから抜けるのですね
ありがとうございます^^

530 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:43:09 ]
vista対応してるc++開発環境ってありますか?

531 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:55:11 ]
>>527
トリッキーだけど、C言語のお作法ではこう書くんだ。
いわば文化だね

532 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 08:46:03 ]
このスレじゃJavaはえらく不評だな

533 名前:デフォルトの名無しさん [2007/05/15(火) 13:46:33 ]
質問させて下さい。

VBでフォームのControlBoxをfalseにしてフォーム右上の「最小化」「最大化」「終了」の3ボタンが
消去されるのですが、フォーム左上のアイコンも消去されます。

これを右上の3ボタンは消去、左上のアイコンは表示の状態にはできないのでしょうか?

Framework2.0からはShowIconプロパティで、3ボタンを表示している場合でも
左上のアイコンは消去できるみたいですが、逆(3ボタン消去、左上アイコン表示)は
できないものでしょうか?



534 名前:気まぐれアナスイ mailto:お腹いっぱい@気まぐれアナスイ [2007/05/15(火) 14:03:37 ]
>>490
糞本が欲しいのですがお薦めは?

535 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:31:36 ]
>>528
'\0' = 0 = 偽 = false

ということなので

while ((*s1++ = *s2++) != '\0')
; /* 空白行¥ */

while(*s1++ = *s2++)
; /* 空白行¥ */

みたいに書けると…。

このwhile文の下の空白行は、必ず一行ないと駄目ですか?
できればここは一行で書きたいところですよ、とか思ったり。

536 名前:デフォルトの名無しさん [2007/05/15(火) 14:37:17 ]
何事も根っこからはじめるべきだ
だから、アセンブリ言語からはじめてくらさい

537 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:39:36 ]
いや
while(*s1++ = *s2++) ;
と書けば1行でいいし、 お作法としては、コレは1行で書くよ

逆に2行で書いて、かつそんなコメント入れてると、馴れた人が読むのに邪魔になる

538 名前:535 mailto:sage [2007/05/15(火) 14:56:14 ]
#include <stdio.h>

int main() {
char* src[255];
char* dst[255];

*src = "helloworld\0";
*dst = "";

while(*dst++ = *src++) {;} /* ここを一行で */

printf("src:%s", src);
printf("dst:%s", dst);

return 0;
}
とやってみたのですが
while_code.c: In function `main':
while_code.c:11: error: wrong type argument to increment
while_code.c:11: error: wrong type argument to increment
というエラーが出て上手くゆきませんでした orz

539 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:04:53 ]
>>538
大きな間違いが何箇所かある
char* src[255];  <--- コレはダメ

*src = "helloworld\0"; <--- \0は書かなくても追加されるので 無駄


while(*dst++ = *src++) {;} /* ここを一行で */ <---- セミコロンを忘れてる。
作法としては
while(*s1++ = *s2++) ;
と1行に書くように。


int main() {
char msrc[255] = "helloworld";
char mdst[255];
char *src=msrc;
char *dst=mdst;
while(*dst++ = *src++);
printf("src:%s", msrc);
printf("dst:%s", mdst);

return 0;
}

540 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:12:56 ]
セミコロンを忘れてる。 は勘違い。 { ; } と中にあったんだね。

上のエラーは、 char* src[255];  というポインタ配列の名前を変更しようとしたから。

Cでは配列はポインタに代入可能で ポインタを配列のように扱えるから混交しやすいし
注意が必要

char *src がポインタ
char msrc[256] が配列

配列の中身を操作するのに src=msrc として、ポインタに配列の先頭を代入して
*src++ というように参照するわけ

541 名前:535 mailto:sage [2007/05/15(火) 15:23:42 ]
int main() {
char msrc[255] = "helloworld"; /* memory領域の確保と初期化 */
char mdst[255];
char *src=msrc; /* pointer変数とmemory領域のアドレスをbind */
char *dst=mdst;
while(*dst++ = *src++); /* strcpy */

printf("src:%s\n", msrc);
printf("dst:%s\n", mdst);
return 0;
}

上手くできました!すこし気になるところがあるのですが、
printf("src:%s\n", msrc); はmemory領域のアドレスを直接
参照しているように思えるのですが、
src (pinter変数) 越しに間接的に参照させることはできますか?

俺用語が多くて分りにくい文章になってしまってすみません orz
よろしくお願いします。

542 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:34:33 ]
>>541
文字の入れ物はあくまでも msrc であって src はポインタで
コピー直後は src/dst共、 #0 の次の位置・・・・つまり ゴミになってる

だから、再度 src = msrc のように代入しないといけないよ

このあたり、理解が難しいようなら、アセンブラとか他の言語も勉強するといい。
IDEの付いてる ツールでやってるならデバッガでアセンブラソースを見ては
ftp://download.intel.co.jp/jp/developer/jpdoc/24531904_j.pdf
でアセンブラの実行結果を追いかけるとかさ

543 名前:535 mailto:sage [2007/05/15(火) 15:47:05 ]
>再度 src = msrc のように代入

するとこんなかんじになるんですね。
helloworldhelloworld
      ^
pointer変数は矢印でどこを指しているのか気を
付けないといけないと。

あとはもう少し自分なりに調べてやっていって
みようと思います。ありがとうございました!



544 名前:535 mailto:sage [2007/05/15(火) 15:50:29 ]
helloworld#0helloworld#0
        ^
すみません。こうでした。#0の存在をいつも忘れる orz

545 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 16:49:51 ]
ちがうよ
while(*dst++ = *src++);
の後は
helloworld#0っぁえ・・・みねふじゴミいっぱい
        ^
の位置を指してるから
src=msrcとして

helloworld#0っぁえ・・・みねふじゴミいっぱい
^
と先頭に戻さないないといけないって事






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef