-PR-
解決済み

Delphi6で、実行後、一時停止をしたい。

  • 困ってます
  • 質問No.859384
  • 閲覧数82
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 91% (159/174)

Delphi6を使ってPascalを勉強しています。
Delphi6でプログラムを記述し実行すると、MS-DOSが出てきて実行します。
しかし、実行した後すぐに終了してしまうので困っています。
合っているのか確認できません。

そのために一時停止用に型宣言のときに、 x:string; 
end.の前に  readln(x)  を付けて止めるようにしているのですが、
プログラムによって止まるのと止まらないのがあります。
どうしてなのでしょうか。
↓は止まりません。どうしたら止まってくれますか?

配列にデータを追加するプログラムです。

program ng;
{$AppType Console} uses
SysUtils;

var
 i, j, n, dat : integer;
 a : array[1..100] of integer;
 {一時停止のため変数名}
 x:string;

begin

{配列にデータを入力する}

 n := 6;
 a[1] := 20; a[2] := 30; a[3] := 60;
 a[4] := 70; a[5] := 80; a[6] := 90;
 writeln('(1)現在の配列の内容');
 for i := 1 to n do write(a[i]:3);
 writeln;
 writeln('(2)挿入するデータ?');
 read(dat);

 repeat
   writeln('(3)挿入する位置?');
   read(i);
 until(i < n) and (i > 0);

{配列への挿入}

 for j := n downto i do a[j+1] := a[j];
 a[i] := dat;
 n := n+1;

{挿入後の配列を表示}

 writeln('(4)挿入後の配列の内容');
 for i := 1 to n do write(a[i]:3);

 {一時停止のためのread文}
 readln(x)
end.
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル9

ベストアンサー率 52% (47/90)

たぶん挿入するデータと挿入場所をread()で呼んでいるからでしょう。

read で読む場合は、データ入力後enterを押してはいけません。
しかし、データ入力の際、enterをおすので、キーバッファにenterが残ってしまいます。
その残ったenterが readln(x)で読み込まれ、終了してしまいます。

データ入力のたびにenterを押すのであれば readln()で入力しましょう。

以下修正点

 readln(dat); <------

 repeat
   writeln('(3)挿入する位置?');
   readln(i); <-----------
 until(i < n) and (i > 0);


これでどうでしょうか?
お礼コメント
kiiro3

お礼率 91% (159/174)

回答有難うございます!
readln にしたらきちんと止まってくれました。
とても助かりました。ありがとうございました♪
投稿日時 - 2004-05-16 01:00:29
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ