• 締切済み

DELPHI

質問させてください。 WEBでサンプルプログラムを見ていたら以下の以下のような ソースがありました。 ----------- 省略 ----------- While not DM.bDeActive do begin ; End; ----------- 省略 ----------- DM.bDeActiveは他のフォームが処理中ならという意味あいなのですが、 ループ内の";"の処理内容がわかりません。 ご存知の方、宜しくお願いいたします。

みんなの回答

回答No.1

それはおそらく、プログラミング上で「空文」といわれる命令ではないでしょうか。 空文はどんなしょりもしません。 空文は「何もしない」ということを明示的に示す場合に使われます。 たとえば if x=10 then begin   処理;   処理; end else begin   ; end; こうすれば、elseの時は何もしないと言うことを示せますし、あとからelseの場合に処理を追加したいときに、その処理が行いやすかったりします。 と、思います。

toopeaan
質問者

お礼

返信ありがとうございます。 なるほど納得です。 私が見たサンプルソースを見ると 他のフォームが処理中の時は ずっとループする形になり他のフォームが処理が終了しだい 処理を開始すると理解できますね。 なるほどなっとくです。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Delphi .net ListBoxで上下キーで移動したい

    Delphi .net WEB版での作成です。 LISTBOXを作成するソースがあります。 --- while 条件 do begin LstBox1.Items.Insert(Row,Text); LstList.Items.Item[Row].value := LstValue; end; --- リストボックスは作成されますが、 上下キーで項目の移動ができません。 この作成をPage_Load の度に行えばできるのですが 作成処理は重いので、作成は1回のみで行いたいです。 どのようにすればよろしいのでしょうか?

  • pascalにおけるwhile文の条件について

    「cがA,B,Cのどれかの場合はwhile文の内容を繰り返す」というプログラムは while c in ['A','B','C'] do begin ~ end; と書けますが、「cがA,B,Cのどれかで無い場合はwhile文の内容を繰り返す」というプログラムはどのように書けばよいのでしょうか。私は while not c in ['A','B','C'] do begin ~ end; だと思ったのですが、エラーが発生したのでどうやら違うようです。 わかる人がいれば教えてください。よろしくお願いします。

  • Form_Load 終了後

    Form_Load  省略 End Sub フォームが表示された後、 private sub test  do   省略  loop while() End sub test関数内の処理(do...loop)を処理したいのですが フォームロード関数終了(End sub)後にtest関数の処理をしたい 場合どのようにすれば、良いのでしょうか  よろしくお願いします Timer関数以外で対応したいと考えています

  • FirebirdへのDelphiによるデータ入力

    Deldhi2010とFirebird2.5を使っています。 下記のコードでデータを入力しているのですが、実行中の他のプログラムで入力済みのデータが見えません。また、二つのPCで入力していくとTest_Noが二重に登録されます。入力したデータがデータベースに反映されていないように見えます。しかし、表示コードにもトランザクションを適応すると問題は解決しますが、理由がわかりません。ご指導よろしくお願いいたします。 (入力コード) procedure TForm.ButtonRegClick(Sender: TObject); var I:Integer; begin if not TIBTransaction.InTransaction then IBTransaction.StartTransaction; try with TIBQuery do begin Close; SQL.Clear; SQL.Add('select max(Test_No) from TESTDB'); Open; I:=FieldByName('max').AsInteger; // Close; SQL.Clear; SQL.Add('insert into TESTDB (Test_No,TempText) values (:TN,:TT)'); ParamByName('TN').AsInteger:=I+1; ParamByName('TT').AsString:='Test'; ExecSQL; end; IBTransaction.Commit; except IBTransaction.Rollback; ShowMessage('Reg Error !!'); end; (表示コード) with TStringGrid do begin RowCount:=1; Rows[0].Clear; end; with TIBQuery do begin Close; SQL.Clear; SQL.Add('select * from TESTDB order by Test_No'); Open; I:=0; First; while not Eof do begin inc(I); TStringGrid.RowCount:=I; TStringGrid.Cells[0,I-1]:=IntToStr(FieldByName('Test_No').AsInteger); TStringGrid.Cells[1,I-1]:=FieldByName('TempText').AsString; Next; end; end;

  • Delphi6 ループ中にキー入力

    Delphi 6 です。 for next などのループの中で、stringgridのセルをEnterキーで選択させたい時、選択されるまで(キーが押されるまで)処理を進めたくない方法は、どうするんでしょうか? flg:=false; for i:=1 to 100 do begin ~諸々の処理で flg:=true; ~ if flg=true then x[i]:= stringgridの選択されたRow番号(はじめからフォーカスされている番号でなく) ~諸々の処理で flg:=false; ~ end;

  • エクセルのHTMLのループ取得でフリーズする

    標題の件で、エクセルのマクロでMSHTMLを用いてあるサイトの1ページ目、2ページ目・・・とループ処理でHTMLを取得する際、3回目以上のループからマクロがフリーズ(フリーズする際のループ回数はランダムです)してしまいまい、フリーズせずに全ページを取得できるようにプログラムを直したいです。 【使用プログラム】※・・・は記載省略 ' ' // ・・・ Sub sample() ・・・ Do While ・・・ ・・・ Call untilReady(htmlDoc) ・・・ Loop End Sub Sub untilReady・・・ ※このSubの中身はサイト"エクセルの神髄"様  (http://excel-ubara.com/excelvba5/EXCELVBA222.html)  の"MSHTML.HTMLDocumentを使った方法です。"記載部の  Sub untilReady~End Subまでとほぼ同じで、  DoEventsとIf Now()~の間に sleep 100 を入れています ・・・End Sub ' ' // 回答者にはお礼しか言うことが出来ませんが、よろしくお願いします。

  • Delphiのマルチスレッドの割り込み処理について

    Delphiのマルチスレッドの割り込み処理について教えて欲しいのですが、ファイルをスレッドオブジェクトで作成して クラス名.Execute関数内でSynchronizeメソッドを使用しています。 本にはSynchronizeメソッドは「渡したメソッドが実行され終了するまで待ちます」と書いてあり、テストプログラムを作成してもそうでした。ということはSynchronizeメソッドは普通の関数と一緒のような気がしてしまうのですが、違うのでしょうか? Procedure MyThread.Execute begin Synchronize(AAA); AAAの処理が終了するまで待機している end; Procedure TmyThread.AAA; begin 'したい処理' end;

  • Delphi for文

    これって、Delphiのバグですか?特性ですか? procedure TForm1.Button1Click(Sender: TObject); begin test(); end; //-------------------------- procedure TForm1.test(); var k,x:integer; begin paintbox1.Canvas.pen.Color:=clBlack ; x:=0; for k:=1 to 3 do begin paintbox1.Canvas.moveto(x,0); paintbox1.Canvas.lineto(x,paintbox1.Height); x:=x+2; end; end; forループ内にブレークポイントを付けて「k」の値の変化を見ると、3,2,1と逆順になります。 「x:=x+2」を「x:=x+k」に変更すると、1,2,3と普通の順になります。 なぜ、こうなるのか? 対処法はありますか? Delphi Ver6・ターボDelphi どちらも同じ状況です。

  • Do whileでExitせず、ループの最初に戻る方法

    よろしくお願いします。 環境 Excel 2003 Do whileのループ内で、Exitのような記述方法で、ループの最初に戻る方法はありますでしょうか? イメージは以下のような形です。 Sub hoge() r = 0 rr = 5 Do While r < 6 'ここに戻る If r = 3 Then 'ここでDo while の最初に戻る End If Loop End Sub よろしくお願いいたします。

  • プログラム実行中に強制停止させる方法

    再び失礼します。 現在以下のようなソースコードを実行しています。 while true do print "commando?\n" command = gets if command == "end" then break end end ループから抜け出すために、getsメソッドを用いて、 endと入力されればループを抜けるという感じにしたいのですが うまく抜け出せず、無限ループに陥ってしまいます。 質問内容は、このように、getsメソッド実行中(?)にプログラムの強制停止を したいのですが、そのような方法はありますでしょうか。(例えばctrl+???とか) 実行環境は、terapadを使用してソースコードを書き、rubyコマンドプロンプトで rubyコマンドを使って実行しています。 それではよろしくお願いいします。 ※投稿確認したのですが、ソースコードにうまくインテンドが挿入されていません・・ 見づらくて申し訳ございません

    • ベストアンサー
    • Ruby
このQ&Aのポイント
  • 初心者でも分かるファナック30i MODEL Bを使用した設備で、メインプログラムを追加して使い分ける方法を解説します。
  • メインプログラムを追加することで、製品によって異なるプログラムを使えるようになりますが、リセットボタンを押すと元のメインプログラムに戻ってしまう問題があります。
  • 追加したメインプログラムを使っているときに、リセットボタンを押しても追加したプログラムに戻す方法についても解説します。
回答を見る

専門家に質問してみよう