見逃されているようですが(私も実際見逃していましたが),結構大事なことではないかと思います。
もちろん関数ポインタにクラスメソッドを使用するのは今も将来も駄目でしょう
おそらくはDelegateなどを導入することになるのではないでしょうか
関数ポインタをクラスのメソッドでも使えるようにしてください。
よくある質問
最新記事を配信中
タグを閉じる。> [quote="イグトランス"]ところでプリプロセッサディレクティブでABのバージョンを判別できるようになってほしいです。> > 次回のバージョンアップで、このような仕様追加を行おうと思います。)、こちらも修正しようと思います。> いえ,言ってみただけです。
アイデアを書くだけならいくらでもできますし
ここまでくると、#defineの存在意義が薄れていくのは気のせいか
まぁ、もう少し検討してみます。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。> ファイルサイズ・起動・動作が軽いのが売りなんだから、これからもそれを維持していくべきだと思います。BASICであるからには分かりやすさと使いやすさも売りでなくてはならない。ブログの方で,代入と比較のオーバーロードをどう書き分けようかという話がありましたが,そもそもBASICにおいて代入は,演算子ではなくLetステートメントだったはずです。
というわけでLetを使うのはどうでしょうか
やや難解かもしれないのが欠点と言えるかもしれません。オプションでパラメータヒント機能にそのパラメータの説明を付けてくれるとわからない関数をヘルプで探さなくてすむのでいいと思います。あとブレークポイントでプログラムが止まったときに動作が重くなるのを防いでほしいです。それとウィンドウのXpスタイルへの対応もしてほしいです。プロジェクト名に日本語を使えるようにしてほしいのには同感です。RADツールにタブコントロールやリッチエディトなどが追加してほしいです。あとプロジェクト名に日本語が使えるようにもしてほしいです。CDECLでコールバックしてくるDLLもあるので、CDECLでのエクスポートだけでなく、エクスポートしない関数でもCDECLが使えるともっといいと思います。CDECL関数の関数ポインタによる呼び出しは、後回しでもかまいません。
(外部からしか呼び出されないと思うから
参考までにoysterさんが言っていることを自分なりに訳してみました。英語は得意ではないですし,私の訳も英文もなにかあればどしどし指摘してください。国際化対応版のABとそのドキュメントが用意してほしいです。メニューは理解できましたし,コンパイルしてEXEが作れると思いました。Win32プログラミング講座のとおりに行ってF7を押しましたが,ウィンドウがフラッシュし,あっという間に消えました。そう,Win32プログラミング講座のとおりにはなりませんでした。ハードディスクのどこにもEXEは作られませんでした。
Win32プログラミング講座のそのページの内容はAB3を元にしていますね
現在とはコンパイル時のウィンドウなどが違うのが気になりますが,おそらく関係ないでしょうね
どうせAB4でもF7でコンパイルできるはずですし
というわけで済みません,私には原因は分からないです。ところでABも国際化対応への取り組みはあります。
ABの国際化版もそのうち公開されるのではないでしょうか
ファイルサイズ・起動・動作が軽いのが売りなんだから、これからもそれを維持していくべきだと思います。
MAJORはそのままでも良いと思いますが・・・
MINORに関しては、比較演算が出来ないと、存在意義があまり無いような気がしますので、#ifを含めた使用の再検討をお願いします。#defineはdebugやユーザ毎にロジックの仕様を変更するにも便利なので、大変助かっています。ところでプリプロセッサディレクティブでABのバージョンを判別できるようになってほしいです。次回のバージョンアップで、このような仕様追加を行おうと思います。)、こちらも修正しようと思います。いっそのこと#ifディレクティブを作り,
そこではConst定数と数値リテラルを比較でき,_AB_VERはコンパイラが定義済みの定数という扱いなんてことも
いえ,言ってみただけです。
アイデアを書くだけならいくらでもできますし
ここまでくると、#defineの存在意義が薄れていくのは気のせいか
まぁ、もう少し検討してみます。ところでプリプロセッサディレクティブでABのバージョンを判別できるようになってほしいです。いっそのこと#ifディレクティブを作り,
そこではConst定数と数値リテラルを比較でき,_AB_VERはコンパイラが定義済みの定数という扱いなんてことも
いえ,言ってみただけです。
アイデアを書くだけならいくらでもできますし
> 特殊ステートメント(キーワード)で色を変更する際に、文字列も強制置換して欲しいです。私は IF, FOR, DIM などのキーワードは大昔からの習慣により大文字で書くようにしています。FOR→Forと勝手に置換されるとプログラムの見栄えが悪くなるので、できれば今のままがよいです。或いは、オプショナルにしてほしいです。イグトランスの話に乗っかっての希望です。特殊ステートメント(キーワード)で色を変更する際に、文字列も強制置換して欲しいです。ご検討よろしくお願いします。
11でエディタの色を自由に設定できるようになりましたね
そこで独自に黒背景風の色にしてみて思ったのですが,全て特殊ステートメントの色付けを適用してほしいです。
(というわけで「特殊ステートメント」から「キーワード」などと名称も変更することになるでしょうね)
よくある質問
最新記事を配信中
タグを閉じる。> これはプログラムの構造に因る面が大きいと思います。> 条件を書かずに済むからです。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。何かあれば、Ifで制御してます。自分は前判定反復文を使うときは、Ifでやってます。
理由は特にありませんが・・・・
私はDo文です。
イグトランスさんと同じで、条件を書かずに済むことの他に、後判定反復文の方が使う機会が多いからというのもあります。While文は前判定反復文ですし、Do文は後判定反復文なので、イグトランスさんが書いてますけど、場合によって適切な方、大抵はWhile文を使ってます。自分はDo文を使っています。理由は打つ文字数が少なくできるからです。これはプログラムの構造に因る面が大きいと思います。ただ、その場合Whileを使うことが多いです。条件を書かずに済むからです。
殆ど同じ働きをするDo文とWhile文について、皆さんはどちらを主に使いますか
僕はDo文です。
なんとなくと言う理由で
良かったら意見ください。
よくある質問
最新記事を配信中
タグを閉じる。> > というわけで早速試してみました。> しかし最後のEndが無いとアクセス違反になってしまいます。> 個人的には関数の呼び出し方式が一致していないのではと勘ぐっていますが検証していません。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。というわけで早速試してみました。しかし最後のEndが無いとアクセス違反になってしまいます。個人的には関数の呼び出し方式が一致していないのではと勘ぐっていますが検証していません。
よくある質問
最新記事を配信中
タグを閉じる。
> > それはともかくこれが件のトピックですね
一応書いておきます。
> 大きな変化はAB2からAB3へのときだけでもう十分でしょう
> > 個人的には無理してGosubの用い方に制限を加えるくらいなら,むしろ現状維持でも構わないと思っています。> 無理して廃止するほど価値が無いとは思っていません。
全くと言ってよいほど使っていないくせに言いますが
> それが無理ならせめて猶予期間として暫くのバージョンで将来使えなくなると言う警告を出したらどうかと思います。> > 私の希望はExitと現方式の両方が使用可能であることです。> いつかオブジェクト(クラス・構造体等)を返せるようになったとき,現方式の方が効率のよい実装が容易と思われるためです。
> でもその際どうやってコンストラクタを呼ぶかという問題がありますけどね
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
それはともかくこれが件のトピックですね
一応書いておきます。なんにせよ一番大事な事は現在との互換性の確保であるはずです。
大きな変化はAB2からAB3へのときだけでもう十分でしょう
個人的には無理してGosubの用い方に制限を加えるくらいなら,むしろ現状維持でも構わないと思っています。無理して廃止するほど価値が無いとは思っていません。
全くと言ってよいほど使っていないくせに言いますが
それが無理ならせめて猶予期間として暫くのバージョンで将来使えなくなると言う警告を出したらどうかと思います。私の希望はExitと現方式の両方が使用可能であることです。いつかオブジェクト(クラス・構造体等)を返せるようになったとき,現方式の方が効率のよい実装が容易と思われるためです。
#C++では名前付き戻り値の最適化(NRVO)に苦労しているようですから
でもその際どうやってコンストラクタを呼ぶかという問題がありますけどね
おそらく、ローカルに向けたGosubや、そこから抜けるためのreturnは無くなるでしょう
しかし、グローバルに向けたGosubや、そこから戻るためのreturnが無くなるとは限らないと考えています。または、Label表記をSub表記にして、一切ローカル変数の使用をしなければ同じように動かすことも可能だと思います。
>関数内でGoSubを使うなどという荒業はあまりないですよね
Gotoは絶対に必要ですけど
>ということは、関数内に限り、Returnステートメントを違う意味で持たせる、逆の視点から言うと、グローバル領域に限り、GoSubステートメントとReturnステートメントを組み合わせるという仕組みにはできそうですね
0ではReturnを廃止し、新しい意味を持たせたいとも思っていたので、このまとめ方で良さそうかも
候補として検討してみます。と山本さんはおしゃっていました。
0ではGoSubステートメントとReturnステートメントは廃止されすのでしょうか
僕としては残してほしいのですが
よくある質問
最新記事を配信中
com コミュニティ フォーラム一覧 -> サイトへの要望&お問い合わせ
タグを閉じる。> 言いだしっぺなのに時間がかかっておりましたが、ようやく新しいバナーとしました。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。言いだしっぺなのに時間がかかっておりましたが、ようやく新しいバナーとしました。ホームページからリンクするためバナーを使いました。バナーを有効に使わせていただきました。即席ですが、バナーを作ってみました。ご利用ください。自分も希望します。
でも上にあるトップへのリンク画像がバナーに使えそうですね
comのリンクバナー希望です。
自分のホームページよりこちらにリンクを張らせていただいてますが
com移転に伴ってリンク先は修正したのですが、リンクバナー
がデスカバーソフトのままになっています。探したのですが見当たりませんでしたので書き込みいたしました。に文字がお気に入りです。
小さく切り出して・・・
よくある質問
最新記事を配信中
タグを閉じる。> > 例によって直接リンクするとアクセス違反が出ると思いますが、更新すればちゃんと落とせるとおもいます。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。の96さんの意見を参考に作りました。
(ソース含む版)
精巧に本物に似させるという作業が疲れました。例によって直接リンクするとアクセス違反が出ると思いますが、更新すればちゃんと落とせるとおもいます。
よくある質問
最新記事を配信中
com コミュニティ フォーラム一覧 -> サイトへの要望&お問い合わせ
タグを閉じる。
> > 初心者や分類がつかめない投稿であるならば、投稿はここにと冷たくあしらうわけにはいかないですよね
> > 簡単な回答が可能ならば回答し、追求を要す投稿内容ならば投稿場所の示唆をするのがよい方法だとおもいます。> > 個々の掲示板に、書く内容についての説明があるとよいと思います。
> フォーラム一覧には説明があるが、トップページから直接掲示板に飛んできた方は > 説明を読むことができないため
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。> 個々の掲示板に、書く内容についての説明があるとよいと思います。
> フォーラム一覧には説明があるが、トップページから直接掲示板に飛んできた方は
> 説明を読むことができないため
説明は、フォーラム一覧より簡単なもののほうがいいと思います。
> 初心者や分類がつかめない投稿であるならば、投稿はここにと冷たくあしらうわけにはいかないですよね
> 簡単な回答が可能ならば回答し、追求を要す投稿内容ならば投稿場所の示唆をするのがよい方法だとおもいます。個々の掲示板に、書く内容についての説明があるとよいと思います。
フォーラム一覧には説明があるが、トップページから直接掲示板に飛んできた方は
説明を読むことができないため
「AB5開発中・・・」のトピックは開発者(山本さん)が皆さんに向けてアナウンスしているのですがそこに要望などを書いているので誤解されていると思います。
希望(のぞみ)
開発者からのアナウンス
ABユーザ開発の報告アナウンスのほかに
開発元への今後の要望事項が含まれると言うことでしょうか
開発者アナウンスには「AB5開発中
」のトピックが存在することも影響があったと思います。
それがあるからAB(5)への要望も少なからず開発者アナウンスへ流れて行ったのではないでしょうか
開発者アナウンスが開発者へのアナウンスと誤解されているのかもしれないので名前を希望さんのようにもう少しわかりやすくする必要があると思います。
希望(のぞみ)
たしかに頓珍漢(語弊があるかな)ですね
「開発者アナウンス」を「開発者からのアナウンス」とか「開発者からのメッセージ」とかにすれば
(また波及をよぶかな
超がつく初心者では
開発者に頼りたいのかな
やはり、やんわり示唆する方法が望ましいのでしょうか
ほかの方はどう思うのでしょうか
分類がつかめない投稿ならしょうがないですが、開発者アナウンスはActiveBasic製ソフトウェアなどを紹介する場所だと説明があるので要望は仕様提案にするべきだと思い投稿しました。
希望(のぞみ)
初心者や分類がつかめない投稿であるならば、投稿はここにと冷たくあしらうわけにはいかないですよね
簡単な回答が可能ならば回答し、追求を要す投稿内容ならば投稿場所の示唆をするのがよい方法だとおもいます。開発者アナウンスにABへの要望があったりして仕様提案とかぶったりしているのでトピックの投稿場所をはっきりさせたほうがいいと思います。
よくある質問
最新記事を配信中
com コミュニティ フォーラム一覧 -> サイトへの要望&お問い合わせ
タグを閉じる。> お世話になります。> > 高信期さん返信ありがとうございます。> > BBCodeエディタなるものの考えは、思いもよらない発想と感じます。
> メールの送信・受信から、コミュニティフォーラム送信・受信への飛躍の時でしょうか
> そうすると、UNDOや検索・置換機能や中断・仮保管機能等も
> 枠が広ければメモ帳等の補助機能なしでも投稿に支障がないと感じます。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。お世話になります。高信期さん返信ありがとうございます。以前は大変お世話になりました。BBCodeエディタなるものの考えは、思いもよらない発想と感じます。
メールの送信・受信から、コミュニティフォーラム送信・受信への飛躍の時でしょうか
そうすると、UNDOや検索・置換機能や中断・仮保管機能等も
枠が広ければメモ帳等の補助機能なしでも投稿に支障がないと感じます。
いっそのことHTMLエディタならぬBBCodeエディタを作ると便利かも
いつもお世話になります。イグトランス (egtra)さん返信ありがとうございます。以前は大変お世話になりました。私も外部からコード等を途中に挿入したり、「貼り付け」は使用しています。「タグ」挿入機能が非常に便利なためすべて外部で作成はしていません。
送信直前のプレビュー確認後の手直しや、投稿後の修正では、入力エリア上で文章やコード、データ等は折り返され、行数が倍増するためインデントやカラムあわせ等厄介だと感じます。>私は長くなりそうなときにはメモ帳などで書いて,それを入力欄へ貼り付けています。
メモ帳くらいの機能は必要なのでしょうか
本投稿くらいであれば支障はあまりないのですが、もう少し、入力エリアが広ければと願っています。私は長くなりそうなときにはメモ帳などで書いて,それを入力欄へ貼り付けています。4 お世話になります。6 再度の投稿です、この投稿エリアが現在のメッセージ入力の大きさです。8 気のせいか前回投稿時に比べもっと狭くなったように感じます。入力中は全体のイメージがつかめません。どうかよろしくお願いいたします。お世話になります。
「トピックの新規投稿」および「返信」、「編集」の[メッセージ]の入力枠
が狭いように感じています。設定で可能ならお教えください。
単なるコメントなら十分だと思いますが、コード等の編集等ではプレビュー
を確認しながら、カラム合わせをしての投稿になります。プレビュー並みの入力レイアウトだと非常に助かります。
よくある質問
最新記事を配信中
タグを閉じる。
> 場違いだからここで聞くな
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
とかが参考になるかと
知りたいことがあったら、まずウィキさんかググルさんに問い合わせようね
場違いだからここで聞くな
今日現文で、話題が「最新の若者言葉」になりました。
今最新の渋谷界隈での若者言葉は何ですか
出来れば渋谷界隈の人答えてください。
(渋谷界隈の人じゃなくても構いません)
このトピックでの若者言葉は今日の分だけしか、ノートに書くことが出来ません。
(明日ノート点検だから)
どなたかお願いします。
よくある質問
最新記事を配信中
タグを閉じる。> 別件になりますが,ポインタ型と整数型相互の暗黙の型変換にも警告を出すようにするべきだと思います。> オプションでエラーにできても良いくらいだと思います。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。別件になりますが,ポインタ型と整数型相互の暗黙の型変換にも警告を出すようにするべきだと思います。オプションでエラーにできても良いくらいだと思います。これのオーバーロードを解決できるようにして欲しいと思っています。もし解決できるようになれば、例えば次のような、Stringクラスに間違えてLong型を指定したときに、アクセス違反にならずに済みます。もしこの仕様にするのであれば、再定義した型がオーバーロードで見つからなかった場合、定義元の型で解決することもしてほしいです。逆に言えば、もし、再定義した型が見つかれば、優先的にそちらでオーバーロードを解決できるようにしてほしいということです。特に目立ったデメリットが浮かばないので、何か見落としがあったら指摘していただきたいです。
よくある質問
最新記事を配信中
タグを閉じる。> ヘルプの説明は殆どが随分前に書かれた物なので、過信してはいけません。> > 当時は、固定文字列も全てString型に直して結合し、BytePtr型として実行するという出鱈目な事をやっていたのでChr$関数を含む文字列でもうまく動いていたのですが、 > 今はString型はクラス化され、現状として実験段階の部分がかなりあります。
> > ただ、ヘルプの内容の薄さについてはちょっと困っていますが
> > 追伸:プログラミングはパズルです。
ひとつのピースが合わなかったら別のピースを探す所からはじめましょう
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。ありがとうございました。ヘルプの説明は殆どが随分前に書かれた物なので、過信してはいけません。
当時は、固定文字列も全てString型に直して結合し、BytePtr型として実行するという出鱈目な事をやっていたのでChr$関数を含む文字列でもうまく動いていたのですが、今はString型はクラス化され、現状として実験段階の部分がかなりあります。AB5の正式版が出るまでは、AB424か、あるいはもう少し安定しているAB413を使う事を推奨します。
ただ、ヘルプの内容の薄さについてはちょっと困っていますが
追伸:プログラミングはパズルです。
ひとつのピースが合わなかったら別のピースを探す所からはじめましょう
変な書き方になってしまってすいません。
言いたかったことは、ヘルプにあるMessageBox関数の説明を見ただけでは、改行方法にExを使った方法がわからないということです(MsgBox関数の説明でもChr$関数の改行への使い方(あるいは使えるという説明)が載っていないのと同じように)
少なくとも初心者か、あまり熟練していないような私には、改行方法をいちいち聞かなければ作業が進められない、というところがあります(仮にもインターネットに繋げられない人には使い方がわからず仕舞いになってしまう恐れがある)
そのため、そのような方法をヘルプに少しずつでも記述するとよいかな、と思っています。
> 山本さんが見ているなら、ちょっと要望として出したいのですが、ヘルプの説明で、Chr$関数の組み合わせで改行できます、とだけあからさまに書いてあるだけだと、MessageBoxの時にExをつけるという説明がMessageBoxにもないので、ちょっと困惑するところがあると思うのです・・・
「Ex 表記による文字列」という項目がヘルプにありますけど
ありがとうございます。うまくいきました。
山本さんが見ているなら、ちょっと要望として出したいのですが、ヘルプの説明で、Chr$関数の組み合わせで改行できます、とだけあからさまに書いてあるだけだと、MessageBoxの時にExをつけるという説明がMessageBoxにもないので、ちょっと困惑するところがあると思うのです・・・
次のように書けばエラーは出ません。\r\n\r\n処理に関するエラーか不正操作が行われた可能性があります。諸事情で抜粋ですが、以下のコードでバグ(アクセス違反)が発生します。なお、これをほかの行へ移して実行した場合も、ここで動作が止まるので、バグとして報告しました。確認した限りだと、MsgBoxだと何も起こりません。またエラーメッセージも載せておきます。
よくある質問
最新記事を配信中
タグを閉じる。
> SetFilePointerなどを使ってファイルを読み書きする位置を移動する方法は, > 1件あたりのデータの大きさが固定であるか、あるいはなんらかのほうほうで目的のデータがどこにあるかあたりをつけることができないと, > 使いにくいと思うのですがそれは平気でしょうか
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。1件あたりのデータの大きさが固定であるか、あるいはなんらかのほうほうで目的のデータがどこにあるかあたりをつけることができないと,
使いにくいと思うのですがそれは平気でしょうか
詳しくはヘルプを参照して下さい。もし違ってたらすいません。かなり長いデータファイル(1万行)があります。
そのデータファイルの最後のデータを素早く詠み込む方法はありますか
現在,データファイルの頭(最初)から素直に詠み込んでいるので
最後のデータ位置を詠み込むまで結構時間がかかってしまっているためです。よろしくお願いします。
よくある質問
最新記事を配信中
タグを閉じる。> AB5CP3のプロジェクト エディタを使用してアイコンを作成していますが何点か不具合があるのではと思います。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。僕は、作られたばかりなので不安定なのは仕方ないと割り切って、ペイントと@icon変換でアイコンを作っています。
こっちの方が色がきれいですし、リソースにも一応埋め込めるので
AB5CP3のプロジェクト エディタを使用してアイコンを作成していますが何点か不具合があるのではと思います。色が上手く指定できない。たとえば灰色を指定しても黒になってしまう。編集した通りに保存されない。16*16(16色)と32*32(16色)の両方を編集していて切り替えながら編集をしたり保存をしたりを繰り返していると、他のタイプに影響されて崩れることがある。良く症状がつかめていないのですが、何か変と言う感じです。
よくある質問
最新記事を配信中
タグを閉じる。> 次のようにすれば16進数に出来ます。txtから再変換するのは効率が悪いので、元のファイルから直接求めています。> うまく応用してください。バグがあったら教えてください。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。うまくできました。いろいろありがとうございました。次のような感じになるかと思います。'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。Print "入力ファイルのサイズが変ですが、終了しました。ただし、変換前の入力ファイルのサイズが5で割り切れないとき、変換後の逆変換が上手にいかない可能性があります。
#元ファイルの0
4倍程度のファイルサイズが気になるなら素直にBASE64でいい気もしますが
32進数、うまくできました。
>・・・それでいいなら少し頑張ってみますが、どうしましょうか
ファイルは軽いほうがいいので、お願いします。
String型を使ってもいいなら、丁度カンマで区切られているしValが役に立ちますが、「Byte配列に、ファイルから数字ではない文字を読み込むまでデータを読み込み続ける」関数を作るのが少し面倒だったんですよね
1バイトを2バイト32進数に変換するだけなら元を16進数に変換する奴のToHexの部分を
のようにするだけでいいのですが、これだとファイルサイズが元の2倍になります。
「5バイト読み込み、うまく変換して8バイト書き込む」という過程を踏めば、ファイルサイズは元の1
6倍程度に収まるのですが、変換も逆変換も少し面倒です。
それでいいなら少し頑張ってみますが、どうしましょうか
> 10進から元に戻すのはたまに(入力が)3桁になったりして面倒くさいから勘弁
Val関数を使えばよいかと
すばやい回答ありがとうございます。教えてください。表現するための記号さえあれば、どんなに基数が大きくても理論上作れる。
>10進から元に戻すのはたまに(入力が)3桁になったりして面倒くさいから勘弁
そうですよね・・・
ありがとう御座います。
)は作れるのでしょうか
また最高で何進数ぐらいでしょうか、教えてください。'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。
10進から元に戻すのはたまに(入力が)3桁になったりして面倒くさいから勘弁
元に戻すやり方を教えてください。お願いします。すばやい回答ありがとう御座います。非の打ち所がありません。ありがとう御座いました。次のようにすれば16進数に出来ます。txtから再変換するのは効率が悪いので、元のファイルから直接求めています。'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。10進数の場合は値によって桁数が変わるので、ここではカンマで区切る事にします。うまく応用してください。'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。なお、この二つのコードはきちんと動くか確かめてません。バグがあったら教えてください。うまくできました、ありがとう御座います。
txtの2進数のデータを10進数か16進数に変換したのですが、どうすればいいのですか
教えてください。次のような手順を踏めばいいと思います。ファイルを開く。入力ファイルからデータを読み込む。データを変換する。出力ファイルに書き込む。読み込んでいないデータがあれば、2に戻る。ファイルを閉じる。
コードは、次のようになるかと
'ファイルを開く。Print "出力ファイルを新規作成できませんでした。'入力ファイルのサイズを調べる。
よくある質問
最新記事を配信中
タグを閉じる。> 返信、遅くなってすいません。zip]サンプルはこんな感じです。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
> Vistaではまともにサポートされない拙劣なおもちゃだけどな
> 今回はGLでも仕方ないが、Windowsで開発するつもりなら未来がないAPIはできるかぎり避けた方が良い。
ネイティブなOpenGLのサポートをやめるという話ですね
大幅に変更され、DirectXがより主体となるものに変更されました。
CADやCAEソフトなんぞはライセンス料が非常に高く、DirextXを使用したものに買い換えるための設備投資費が膨大になる問題があり、OpenGLのサポートが切れるからといってこれまで培ってきた技術を捨てて
DirextXにシフトするということは急にはできなかったのでしょう
これはOpenGL MCDと呼ばれるものでXPに搭載されているものと同等なものです。ソフトウェアレンダリングのみをサポートしています。Vistaが実際に市場に投入されるまではXPより性能が劣化するという噂がありました。
しかし、OpenGLのいくつかの製品のベンチマークの結果では
あまりVistaとXPの性能に差は無いという結果が出ています。また、特定の条件ではVistaの方が性能があがる場合も報告されているみたいです。
これはVistaになってアーキテクチャが変更された恩恵が
これを使用するとOpenGLの性能は10%程度低下するようです。余談ですが、日本の企業ってWindowsのシェアがかなり高いようです。なくならないんじゃないと思います。
販売ターゲットを個人向けに絞ろうとする動きに思えますね
OpenGLそのものについての話はここまでということで
Vistaではまともにサポートされない拙劣なおもちゃだけどな
今回はGLでも仕方ないが、Windowsで開発するつもりなら未来がないAPIはできるかぎり避けた方が良い。返信、遅くなってすいません。サンプルはこんな感じです。有益なOpenGLに関する情報は以下のサイトで得られます。
(かなり個人的な選定ではありますが、、、)
ユビキタスソリューションのテキスト
私の場合、NeHe Productionsのチュートリアルが英語で書かれて、全部理解することはできませんでしたが、ソースコードを追うだけでもかなり勉強になりました。皆さん、返信ありがとうございます。DX9が使えない理由はハードウェアが対応してないからです。友人のもそうです。MSから落としてきたものを入れてもエラーで強制終了です。
何かを交換すればいいと聞いたことがあるのですが
OpenGLが使いたい理由は、DXは使ったことがあるので使ったことがないものを
使ってみたいだけです。
ABのバージョンは4
> その友人はインターネットしていない、という選択肢もある。
確かにその友人が、パソコンは持ってるけどネットはしていない という低い確率はあるだろうな
友人が無事につながる環境であれば、バージョンアップしてみるプランもあるという事だ。その友人はインターネットしていない、という選択肢もある。
ここの部分にだけレスすると
dllは使えないので、OpenGLを使おうと思って調べてみたのですが
0cランタイムをインストールするのは非常に簡単ですよ
MSのサイトに行きダウンロードするだけです。
友達にこのサイトを教えてあげたほうが早いのでは
> 友人へ誕生日プレゼントとして、ゲームをABで作ってあげたいのですが、dllは使えないので、OpenGLを使おうと思って調べてみたのですが
0は使用したことがあります。> 全部、検索してもよくわからなかったので教えてください。
というより自力で実装する範囲が多いので入門にはお勧めしますが、バリバリ、ゲームを作りたい人には煩わしい事が多すぎます。
どうしてもということであれば、サンプルのっけますが
その場合はお使いのABのバージョンを教えてください。
友人へ誕生日プレゼントとして、ゲームをABで作ってあげたいのですが、dllは使えないので、OpenGLを使おうと思って調べてみたのですが
0は使用したことがあります。全部、検索してもよくわからなかったので教えてください。
よくある質問
最新記事を配信中
タグを閉じる。> DimやEnd Ifのような言語のキーワードは,自分もエディタで補正が欲しいです。> 実は,End IfやElseなど複数行ブロックを閉じるステートメントに限られますが,AB5のエディタで既にペアステートメント補間として部分的に実現されています。> > それ以外の識別子(関数,変数,クラスなど)は現在のメンウマ補完のようなものがメンば以外一般に使えるようになればと思います。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。DimやEnd Ifのような言語のキーワードは,自分もエディタで補正が欲しいです。実は,End IfやElseなど複数行ブロックを閉じるステートメントに限られますが,AB5のエディタで既にペアステートメント補間として部分的に実現されています。それ以外の識別子(関数,変数,クラスなど)は現在のメンウマ補完のようなものがメンば以外一般に使えるようになればと思います。
僕は、エディタは入力したとおりに入力されればいいと思っているので必要だとは思いませんが・・・
と宣言しておくと、小文字の場合に認識するようになります。推奨はしません。小文字を変換しない理由は、例えばActiveBasicでは次のような表記が認められています。このような場合は逆に勝手に変換されると困るわけです。
#これを解消するいくつかの(3つかそこらの)案が浮かんでくるわけですが、#実装するとなると速度面で難点があったり、あるいは単に難しかったりするわけです。
#(簡単なら、僕なら勝手に実装してもらいますが
・自動的な/手動での切り替えを可能にしておく←重くならない。・IMEのように変換できるようにしておく←変換予測テーブルの実装ってどうすんだ。あと重くならない。
・大文字/小文字の区別をなくす←これ、滅茶苦茶困るんじゃないか
分かりやすく整列させるといいと思います。みたいに関数などを入力するときに自動的に整理させるようにすればいいと思います。Sleepなどは最初のSが大文字じゃないといけないので自動で整理すればらくだと思います。
よくある質問
最新記事を配信中
タグを閉じる。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
」が発生するので、おかしいと思いましたが整数除算ですか
助かりました。
これは見事に半年ほど前に私がはまったことと一致していますね
説明は省略させていただきますが、除算(/)ではなく、整数除算演算子(¥)を使う事で正しく計算する事ができます。整数しか入らない型には、整数除算を使うのが安全です。コメント部はABが計算した結果です。
よくある質問
最新記事を配信中
タグを閉じる。> あけましておめでとうございます。> 今年も一年よろしくお願いします。
> > ところで、皆さんは実行速度を上げるにはどうしていますか
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
ゆちボン(あるる)
> まともに読める(しかし遅い)コードをコメントアウトして、それと等価で高速なコードを書いておくとかそういう方法ならたまに取ったりしますが
その方法、僕もします。
>アセンブリ言語で書く場合は、割り算を掛け算に直して計算するとかしなければ
> 普通はとても読みやすいコードになるんですがね
> でもアセンブリ言語の場合は、大抵、> 効率性(資源を無駄使いしない事)と実行速度は高くても保守性や移植性が低かったりと
> 非個人で開発する場合には導入は難しいのですが
う~む、高速化も難しいのですね
> 一般的に一番大事なのは小手先の技術力ではなくて、他人にとって読みやすいコードをいかにして書くかってことだと思います。わかりました。ありがとうございます。
まともに読める(しかし遅い)コードをコメントアウトして、それと等価で高速なコードを書いておくとかそういう方法ならたまに取ったりしますが
アセンブリ言語で書く場合は、割り算を掛け算に直して計算するとかしなければ
普通はとても読みやすいコードになるんですがね
でもアセンブリ言語の場合は、大抵、効率性(資源を無駄使いしない事)と実行速度は高くても保守性や移植性が低かったりと
非個人で開発する場合には導入は難しいのですが
一般的に一番大事なのは小手先の技術力ではなくて、他人にとって読みやすいコードをいかにして書くかってことだと思います。
ゆちボン(あるる)
> と、ここまで書いたのは本当に実行速度が求められるときに関して必要なことであって、> 実行速度がそれほど重視されない場合は書きやすさ・読みやすさを優先するべきだとは思います。
やっぱりそうですよね
汚いコードだとやる気さえなくなってしまいますよね
速度を上げるべきところを関数化して、そこをアセンブリ言語で記述したDLLで置き換えるとか
アセンブリ言語を使えば、足し算を行うのと同じ時間で3倍・5倍・9倍の値を求めることが可能な演算(LEA)があったりとかあるので便利だったりします。
ただし、ABより速いって程度の速度なら普通に出ますが、本格的に最適化をしようとすると
ペアリングがどうとかAGIストールだのパイプラインストールだのパーシャルレジスタストールだの
色々制約があったりして、最速コードを組み上げるのは結構難しかったりするのですが
ABだけでやるなら、本当にその記述で速度が上がっているのかどうかを確認したりします。
(数百万回実行してそれに要した時間を見るとか、実行ファイルを逆アセンブラにかけて解析するとかね
lstrcatだと文字列がどこで終わってるか判定する必要があるので、長い文字列を扱う場合に重くなるんですよね
連結する文字列の長さがはっきりしている場合は、memcpyの方がいいと思います。
と、ここまで書いたのは本当に実行速度が求められるときに関して必要なことであって、実行速度がそれほど重視されない場合は書きやすさ・読みやすさを優先するべきだとは思います。
ゆちボン(あるる)
あけましておめでとうございます。今年も一年よろしくお願いします。
ところで、皆さんは実行速度を上げるにはどうしていますか
極力Stringを使わないようにしています。
よくある質問
最新記事を配信中
タグを閉じる。
> まともに読める(しかし遅い)コードをコメントアウトして、それと等価で高速なコードを書いておくとかそういう方法ならたまに取ったりしますが
> > > アセンブリ言語で書く場合は、割り算を掛け算に直して計算するとかしなければ > 普通はとても読みやすいコードになるんですがね
> > でもアセンブリ言語の場合は、大抵、 > 効率性(資源を無駄使いしない事)と実行速度は高くても保守性や移植性が低かったりと > 非個人で開発する場合には導入は難しいのですが
> > > 一般的に一番大事なのは小手先の技術力ではなくて、他人にとって読みやすいコードをいかにして書くかってことだと思います。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
> まともに読める(しかし遅い)コードをコメントアウトして、それと等価で高速なコードを書いておくとかそういう方法ならたまに取ったりしますが
その方法、僕もします。
>アセンブリ言語で書く場合は、割り算を掛け算に直して計算するとかしなければ
> 普通はとても読みやすいコードになるんですがね
> でもアセンブリ言語の場合は、大抵、> 効率性(資源を無駄使いしない事)と実行速度は高くても保守性や移植性が低かったりと
> 非個人で開発する場合には導入は難しいのですが
う~む、高速化も難しいのですね
> 一般的に一番大事なのは小手先の技術力ではなくて、他人にとって読みやすいコードをいかにして書くかってことだと思います。わかりました。ありがとうございます。
まともに読める(しかし遅い)コードをコメントアウトして、それと等価で高速なコードを書いておくとかそういう方法ならたまに取ったりしますが
アセンブリ言語で書く場合は、割り算を掛け算に直して計算するとかしなければ
普通はとても読みやすいコードになるんですがね
でもアセンブリ言語の場合は、大抵、効率性(資源を無駄使いしない事)と実行速度は高くても保守性や移植性が低かったりと
非個人で開発する場合には導入は難しいのですが
一般的に一番大事なのは小手先の技術力ではなくて、他人にとって読みやすいコードをいかにして書くかってことだと思います。
> と、ここまで書いたのは本当に実行速度が求められるときに関して必要なことであって、> 実行速度がそれほど重視されない場合は書きやすさ・読みやすさを優先するべきだとは思います。
やっぱりそうですよね
汚いコードだとやる気さえなくなってしまいますよね
速度を上げるべきところを関数化して、そこをアセンブリ言語で記述したDLLで置き換えるとか
アセンブリ言語を使えば、足し算を行うのと同じ時間で3倍・5倍・9倍の値を求めることが可能な演算(LEA)があったりとかあるので便利だったりします。
ただし、ABより速いって程度の速度なら普通に出ますが、本格的に最適化をしようとすると
ペアリングがどうとかAGIストールだのパイプラインストールだのパーシャルレジスタストールだの
色々制約があったりして、最速コードを組み上げるのは結構難しかったりするのですが
ABだけでやるなら、本当にその記述で速度が上がっているのかどうかを確認したりします。
(数百万回実行してそれに要した時間を見るとか、実行ファイルを逆アセンブラにかけて解析するとかね
lstrcatだと文字列がどこで終わってるか判定する必要があるので、長い文字列を扱う場合に重くなるんですよね
連結する文字列の長さがはっきりしている場合は、memcpyの方がいいと思います。
と、ここまで書いたのは本当に実行速度が求められるときに関して必要なことであって、実行速度がそれほど重視されない場合は書きやすさ・読みやすさを優先するべきだとは思います。あけましておめでとうございます。今年も一年よろしくお願いします。
ところで、皆さんは実行速度を上げるにはどうしていますか
極力Stringを使わないようにしています。
よくある質問
最新記事を配信中
タグを閉じる。
> 隣接行列を使ったグラフ探索のプログラムを作りたいのですが
> 手も足もでません。
どなたか助けていただけないでしょうか
> > 実行時のコマンドラインは次の書式に従う。
> ただし、オプション指定で縦型探索と横型探索を切り替えられるようにすること
> > 実行時のコマンドラインは次の書式に従う。
> > > > これらを作るうえでのヒントのようなものもあるのですが、さっぱりで
> > 状態空間をファイルから取り込むため、隣接行列で表現した状態空間のサイズは可変、 > (たとえば、状態数5ならば、25個)である。したがって、メモリは動的に確保する必要がある。> また探索時に容易に扱えるようにするため、隣接行列は2次元配列であることが望ましい。> しかし、2次元の動的確保は難易度が高いので、1次元配列の動的確保を応用することで考える。> このマクロを利用すれば、1次元配列で確保したデータを2次元として扱うことができる。cは次にあります。
> ここにはのせきれなかったので
txt のフォーマットは次のようになっています。
(線がはいっていないのでややこしいかもしれませんが
こういう説明で伝わっているかわかりませんが、 > よろしくおねがいします。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
まずあなたは、何がわかりませんか
・コマンドラインの取得方法
あるいは、(ここがC言語系の掲示板ではないということを承知で)全部作れといっていますか
マルチは嫌われますよ
隣接行列を使ったグラフ探索のプログラムを作りたいのですが
手も足もでません。
どなたか助けていただけないでしょうか
といったフォーマットに従った状態空間が記述された。
テキストファイルを読み込んで、隣接行列を動的に作成し、さらにその状態空間をfwrite()を用いてバイナリ形式のファイルにする。実行時のコマンドラインは次の書式に従う。メモリ上に復元し、経路探索を行う。
ただし、オプション指定で縦型探索と横型探索を切り替えられるようにすること
実行時のコマンドラインは次の書式に従う。
これらを作るうえでのヒントのようなものもあるのですが、さっぱりで
状態空間をファイルから取り込むため、隣接行列で表現した状態空間のサイズは可変、したがって、メモリは動的に確保する必要がある。また探索時に容易に扱えるようにするため、隣接行列は2次元配列であることが望ましい。しかし、2次元の動的確保は難易度が高いので、1次元配列の動的確保を応用することで考える。
1次元配列を状態数2個確保し、2点の座標を指定することで、要求する要素へ
このマクロを利用すれば、1次元配列で確保したデータを2次元として扱うことができる。cは次にあります。
ここにはのせきれなかったので
お手数おかけします。txt のフォーマットは次のようになっています。
これはデータ構造などででてくる有向グラフを隣接行列で示した場合、ゴールの状態3からスタート地点の状態0に(3→0)
となっていた場合に、状態0~3までのリンク先をあらわしたものです。
単に、机上において、隣接行列で表現すると
(線がはいっていないのでややこしいかもしれませんが
これと同じ意味で、(状態2のリンク先はなにもないので、まっしろ)
となっています。
こういう説明で伝わっているかわかりませんが、よろしくおねがいします。
よくある質問
最新記事を配信中
タグを閉じる。
> はじめまして
> > 次のことを質問させて下さい。4になりません。4になり、正常です。
> > もしよろしければ、原因と対処方法を教えて > 頂けませんか
視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。
話に出てきた2
4は,コンピュータで普通にSingleやDoubleを使うと正確に表現できませんでしたが,それはコンピュータ特有のことではなく,日常で人間が使う十進法でも有限桁で計算するなら同じことが起こります。9となってしまう(1にならない。)という具合です。
十進法では無限小数にならない値も,二進法では無限小数になる場合がある(2
#コンピュータが無限小数を扱えないからこういうことになるんだと言えば,やっぱりある意味コンピュータ特有の事柄かもしれません。そういう意味で,「全て10倍した値で保持いておいて,出力する時に10で割る」などの十進法ベースの小数点数演算は,決して正確な計算ができるようになるわけではありません。
単に,打ち切り誤差の発生が普通の人間の直感と一致するようになるだけです(まあこれは魅力的なことですが)
>コンピュータでは、正確な数値計算は、たとえ簡単な計算であっても
>できないということでしょうか
正確に計算できるものも多くあります。
扱う数値が、必ず10進数表記の時に有限桁になる数で、最大桁数と値の範囲が分かっている場合は
10進数での固定小数点演算/浮動小数点演算で正確に計算できます。扱う数値が0又は正の整数の場合は、約43億までの数ならDWord型で保持できます。QWord型を用いればもう少し大きな数まで正確に扱えます。
扱う数値が整数の場合は、約-21
5億までの数ならLong型で保持できます。Int64型を用いればもう少し大きな範囲の数まで正確に扱えます。
ただし、円周率や√2を始めとする無理数を含む場合や複素数・四元数などを扱う場合は、特殊な(数の特性を利用した固有の)方法を用いる場合を除いて正確に演算する事は困難です。ありがとうございました。質問のあて先は、以後気をつけます。自分では、質問箱の方に出したつもりでおりました。続きなものですからもうひとつだけ質問させて下さい。(以降は、質問箱に致しますのでご容赦下さい。
コンピュータでは、正確な数値計算は、たとえ簡単な計算であっても
できないということでしょうか
バグではありません。> a,bはdouble型なので、何回もの演算を行わない限りは15~16桁の表示でも上手く動いているように見えます。
> そもそもコンピュータ内部では2進数で数値を扱っているため、2
4等の数値を普通に扱えばどうしても誤差が生じてしまいます。
> 丸め誤差といいますが
としてみてください。> 対処法としては、全て10倍した値で保持いておいて、出力する時に10で割るという方法等が挙げられます。
> 質問はプログラミング質問板の方でしましょう
それはcだけがsingle型になっているためです。バグではありません。a,bはdouble型なので、何回もの演算を行わない限りは15~16桁の表示でも上手く動いているように見えます。
そもそもコンピュータ内部では2進数で数値を扱っているため、2
4等の数値を普通に扱えばどうしても誤差が生じてしまいます。
丸め誤差といいますが
としてみてください。対処法としては、全て10倍した値で保持いておいて、出力する時に10で割るという方法等が挙げられます。
質問はプログラミング質問板の方でしましょう
はじめまして
次のことを質問させて下さい。
とすると、答えが
4になりません。
とすると、答えは、2
4になり、正常です。
もしよろしければ、原因と対処方法を教えて
頂けませんか
よくある質問
最新記事を配信中
タグを閉じる。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。DimやEnd Ifのような言語のキーワードは,自分もエディタで補正が欲しいです。実は,End IfやElseなど複数行ブロックを閉じるステートメントに限られますが,AB5のエディタで既にペアステートメント補間として部分的に実現されています。それ以外の識別子(関数,変数,クラスなど)は現在のメンウマ補完のようなものがメンば以外一般に使えるようになればと思います。
僕は、エディタは入力したとおりに入力されればいいと思っているので必要だとは思いませんが・・・
と宣言しておくと、小文字の場合に認識するようになります。推奨はしません。小文字を変換しない理由は、例えばActiveBasicでは次のような表記が認められています。このような場合は逆に勝手に変換されると困るわけです。
#これを解消するいくつかの(3つかそこらの)案が浮かんでくるわけですが、#実装するとなると速度面で難点があったり、あるいは単に難しかったりするわけです。
#(簡単なら、僕なら勝手に実装してもらいますが
・自動的な/手動での切り替えを可能にしておく←重くならない。・IMEのように変換できるようにしておく←変換予測テーブルの実装ってどうすんだ。あと重くならない。
・大文字/小文字の区別をなくす←これ、滅茶苦茶困るんじゃないか
分かりやすく整列させるといいと思います。みたいに関数などを入力するときに自動的に整理させるようにすればいいと思います。Sleepなどは最初のSが大文字じゃないといけないので自動で整理すればらくだと思います。
よくある質問
最新記事を配信中
タグを閉じる。視覚に障害をお持ちの方や、確認コードが読めない場合は管理者へご連絡下さい。画像上に表示されている確認コードを入力してください。この確認コードは大文字・小文字を区別します。"という文字列を作る。
とすれば同等の事が出来ますよ
メモリの開放が必要ありませんし
最近は自分もまともにAPIなどを使うのでBytePtrを使い始めました。
BytePtr型は文字列判定などもしっかりできるのでけっこう使いやすいですね
String型でもできるのかもしれませんけど、以下のように書けるのがなんとなく嬉しいです。"という文字列を作る。BytePtr型って面倒なのかもしれませんけど、加工するのは簡単だと、思います。最近は自分もまともにAPIなどを使うのでBytePtrを使い始めました。
BytePtr型は文字列判定などもしっかりできるのでけっこう使いやすいですね
> > そういえば、事前に文字数が分からないっていう状況になったことがないですね
> フックプロシージャを使えば文字数もわかるらしいのですが、> そこまで手間をかけるつもりはありませんから、このようにByte配列を率直に使うという程度のことです。
言われてみたら確かな文字数は分からないですね
> #ところでSingleのほうで山本様が好意的な回答を寄せていただけました。
楽しみですね
> 私はスクリプティング言語や関数型言語など専ら高級言語路線を歩んでいます。> そういうわけでABでもString型を多用したくなるのは当然の事なのです。僕は主に x86 のアセンブリ言語を扱うことが多いため、低い次元で手軽に扱えてC言語との親和性も高い BytePtr 文字列に偏りがちになっています。イグトランスさんとの対比で、おもわず「なるほど」と頷いてしまいました (^^;
> Stringは参照カウント式にして、現Stringで頻繁に行われる値渡しでも速度低下を抑えられるようにし、僕がイマイチ C# に馴染めないのはそこなんですよね
頭の中で「文字列=バイトの列」という固定観念が完成してしまっているので、わざわざ2種類の文字列型を準備することに抵抗を感じるのです。
おなじプログラミングの世界、さらには言語すら同じなのに、自分と対称的な立場に立って、対称的に考える人がいるということを改めて実感し、感動を覚えつつ
私はスクリプティング言語や関数型言語など専ら高級言語路線を歩んでいます。そういうわけでABでもString型を多用したくなるのは当然の事なのです。
> そういえば、事前に文字数が分からないっていう状況になったことがないですね
フックプロシージャを使えば文字数もわかるらしいのですが、そこまで手間をかけるつもりはありませんから、このようにByte配列を率直に使うという程度のことです。
'その他は省略
Stringは参照カウント式にして、現Stringで頻繁に行われる値渡しでも速度低下を抑えられるようにし、実現できるかどうかはともかくですが
#ところでSingleのほうで山本様が好意的な回答を寄せていただけました。#ありがとうございます。
理由は確保とか解放とかする必要性がなくなりますからね
しかし、イグトランスさんが言ったようにCやアセンブリだと配列を使っているわけで、現在アセンブリ言語を勉強している僕にとってString型を含む関数は移植が面倒なだけです。
やっぱりBytePtr(個人的にバイトプターと読んでる
)に慣れていたほうがいいのでしょうか
メリットといえば、確保、解放が自動というあたりでしょうか
あまり神経質にならずに文字列を扱えます。
ですから、WinAPI関連ではなく、文字列自体を操作したいときに使いますね
文字列自体を操作したい時ですか
BytePtr型だとサイズが小さい場合、メモリの再確保をしなくちゃいけないなど、ちょっと煩わしいですね
つまり事前に文字数がわかる場合にはまず間違いなくString型でAPI関数を包み込んでいます。
そうでない場合はByte配列を使うことも止むを得ませんが
そういえば、事前に文字数が分からないっていう状況になったことがないですね
文字数を把握できないっていう状況になってないからString型の利便性が分からないんでしょうか
これがABのかなり痛い点の1つだと思っています。事ある度に言ってきましたが、これに対する私の案は「演算子多重定義をできるようにしてStringを単なるクラスにする」というものです。特別扱いをやめてしまえば少しは素直になってくれないかというわけです。
クリティカルセクションの処理だとかどういうことをやってるかほとんど分からないんですけど、HeapAlloc()関数とかmemcpy()関数を使ってるみたいなのでBytePtr型をクラスにしちゃえばよさそうですよね
' メモリに関する関数は隠蔽(' 確保されているメモリのサイズを返す。' メモリが確保されているなら解放する。' メモリ確保の関数も隠蔽した方がいい。' でもAPI関数を使うときにユーザーがメモリを確保できないと困る。' 文字列の長さをバイト数で返す。' 文字列から指定された位置の文字コードを返す。
' 文字列バッファに文字列をコピー
' 文字列バッファに数値を文字列に変換したものをコピー
' 文字列バッファに文字列を追加
' 文字列バッファをBytePtr型に変換する、訳じゃなくポインタを返す。' 文字列から特定の位置の文字列を取り出す。' 文字列の長さを文字数で返す。
必ずではないかも
弄くりだしたら結構面白くてクラスが継承し始めました。(確保・解放を気にせず使えるからです。
確保・解放を気にせず使えるのは便利ですよね
でも、自分はBytePtr(バイタープターと呼んでます)に慣れすぎちゃって、確保・解放を自分で管理してないと不安になります。(確保・解放を気にせず使えるからです。私はその文を完全無視するつもりでいます。時代に逆行しているとしか思えないからです。今時文字列を単なるByte配列(に相当するもの)として扱う言語と言えばCとアセンブリ言語くらいです。うっかりメモリ確保で誤ってしまったり解放し忘れていたりバッファオーバーフローを起こしそうになったり、何と面倒です。
というのは私が文字列型のある言語に慣れてしまったからでしょうか
しかしそんなことに頭を振り回している暇があったら、プログラムのアルゴリズムや見た目(UI)を凝りたいです。つまり事前に文字数がわかる場合にはまず間違いなくString型でAPI関数を包み込んでいます。
そうでない場合はByte配列を使うことも止むを得ませんが
これがABのかなり痛い点の1つだと思っています。事ある度に言ってきましたが、これに対する私の案は「演算子多重定義をできるようにしてStringを単なるクラスにする」というものです。特別扱いをやめてしまえば少しは素直になってくれないかというわけです。勿論バイナリデータにはStringを使う気は毛頭ありません。上記は全て文字列に対しての話です。
ヘルプファイルにはこう書かれてますね
文字列 / バイナリデータを扱う場合は、特に理由がない限り、プログラマーが任意的にメモリ確保、解放を行い、BytePtr型として文字列データを管理する手法を推奨します。
メリットといえば、確保、解放が自動というあたりでしょうか
あまり神経質にならずに文字列を扱えます。
ですから、WinAPI関連ではなく、文字列自体を操作したいときに使いますね
しかし、String型の仕様って凄く曖昧なんですよね
長い間String型を扱っていないと、なかなかうまく扱えないと思います。
ヘルプファイルに書かれているように、無理に使う必要もないでしょう
皆さん、標準データ型である String ってどのくらい使ってますか
また、どういった時に使いますか
自分は皆無と言っていい程String型を使ったことがなくて、String型の使用目的が分かりません。
よくある質問
com コミュニティ :: トピックを表示 - 一番最後の位置からファイルデータを詠込む方法はありますか
最新記事を配信中
一番最後の位置からファイルデータを詠込む方法はありますか
前のトピックを表示 :: 次のトピックを表示
題名: 一番最後の位置からファイルデータを詠込む方法はありますか
かなり長いデータファイル(1万行)があります。
そのデータファイルの最後のデータを素早く詠み込む方法はありますか
現在,データファイルの頭(最初)から素直に詠み込んでいるので
最後のデータ位置を詠み込むまで結構時間がかかってしまっているためです。よろしくお願いします。
トップに移動
長方形の、左上隅と、右下隅の座標を管理します。左上隅の X 座標を指定します。左上隅の Y 座標を指定します。右下隅の X 座標を指定します。右下隅の Y 座標を指定します。基本型とはコンパイラが認識できる変数の種類のことをいいます。
符号付き8ビット整数型
符号無し8ビット整数型
符号付き16ビット整数型
符号無し16ビット整数型
符号付き32ビット整数型
符号無し32ビット整数型
符号付き64ビット整数型
符号無し64ビット整数型
Byte型データを示す符号無し32ビット整数型
Word型データを示す符号無し32ビット整数型
DWord型データを示す符号無し32ビット整数型
QWord型データを示す符号無し32ビット整数型
型が不明なデータを示す符号無し32ビット整数型
文字列 / バイナリデータを扱うString型データは、基本型の中でも特別なデータ型にあたります。他の基本型と比較し、下記の相違点があります。・データサイズが可変長である。・データを格納するためのメモリ確保、解放が自動的に行われる。・データを格納するためのメモリがヒープ領域に設けられる。・データ部の前部分(通常はプログラマーから見えない)にデータサイズを格納するための32ビット値(4バイト)が存在する。String型変数のメモリ確保は変数宣言時に行われます。また、値が代入されると以前のデータは自動的に破棄され、新しいデータ用のメモリが確保されます。データの破棄は、グローバル変数についてはプログラム終了時に、ローカル変数については関数抜け出し時に自動的に行われます。文字列 / バイナリデータを扱う場合は、特に理由がない限り、プログラマーが任意的にメモリ確保、解放を行い、BytePtr型として文字列データを管理する手法を推奨します。
【2Dシューティング】爆発を演出しよう〜