質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

受付中

デバッグで Abnormal program termination が必ず出る。

MaeharaKenji
MaeharaKenji

総合スコア83

C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

0グッド

0クリップ

648閲覧

投稿2019/11/23 10:33

編集2019/11/23 21:27

現在、embarcadero RAD Studio 10.3でプログラミングを行っています。

exeファイルと同じディレクトリ内のSaveFile.txtを読み込むプログラムをデバッグする時に、ステップ実行していくと必ず”Abnormal program termination”が発生して、RAD Studioごと強制終了してしまうのですが、回避方法などはありませんでしょうか?

下のプログラムで、最初の行からステップ実行していくと、”string line;”の宣言のところで出てきます。

また、”string line;”を一番最初のステップに変えても起こります。
なにかstring型の宣言と関係はありますでしょうか?

こちらのgithubサイトにコードがありますが、RAD Studioをお持ちの方で、他の方のPCでも同様の現象は発生していますでしょうか?

多少、他の開発環境(Atmel Studioのマイコン開発)でも、組み込みOSを扱ったプログラムでも、デバッグ機能で数値確認などが上手くできない現象などを経験したことが多少あるのですが、PCアプリ開発ではこのような現象はいつも起こるような現象でしょうか?
デバッグなどで便利な機能や方法などアドバイスもお願いします。

c++

1using namespace std; 2 3void __fastcall TTCP_Client::FormCreate(TObject *Sender) 4{ 5 6 AnsiString filename = "SaveFile.txt"; 7 8 ifstream fin; 9 fin.open(filename.c_str(), ios::in); 10 11 if( !(fin.fail()) ) 12 { 13 string line; 14 string line02; 15 16 while(getline(fin,line)) 17 { 18 //cout << "[" << line << "]" << endl; 19 //line02 << "[" << line << "]" << endl; 20 line = "[" + line; 21 line = line + "]\r\n"; 22 line02 = line02 + line; 23 } 24 25 AnsiString str(line02.c_str()); 26 ShowMessage(str); 27 } 28 else 29 { 30 StatusBar1->Panels->Items[0]->Text = "Save file does not exist!"; 31 } 32 33}

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2019/11/23 12:11

C++ でしたらご質問のタグも C++ にして頂けますか.
MaeharaKenji

2019/11/23 21:28

わかりました。ありがとうございます。

回答1

0

回答初めてなので,言葉足らずだったら,申し訳ありません。
また,回答になっているかわかりませんが,自分の開発環境(Embarcadero10.3.3)で試してみた結果を報告します。
「結果」
上記ソースコードのままでは,エラーが表示されたため,エラーを除去して実行した結果,「Abnormal Program termination」は表示されませんでした。

「調査結果」
「Abnormal Program termination」のキーワードで調べてみましたが,「abort()」関数が呼ばれているみたいです。どのように解決するかも調べましたが,そこまでは見つけられませんでした。力及ばず,すいません。会社の開発環境がEmbarcadero10.3と同じなので,年明けにでもまた試してみます。

下記に修正したソースコードを記載しておきます。
Project1.cpp

C++

1//--------------------------------------------------------------------------- 2#include <vcl.h> 3#pragma hdrstop 4#include <tchar.h> 5//--------------------------------------------------------------------------- 6USEFORM("Unit1.cpp", TCPClient); 7//--------------------------------------------------------------------------- 8int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) 9{ 10 try 11 { 12 Application->Initialize(); 13 Application->MainFormOnTaskBar = true; 14 Application->CreateForm(__classid(TTCPClient), &TCPClient); 15 Application->Run(); 16 } 17 catch (Exception &exception) 18 { 19 Application->ShowException(&exception); 20 } 21 catch (...) 22 { 23 try 24 { 25 throw Exception(""); 26 } 27 catch (Exception &exception) 28 { 29 Application->ShowException(&exception); 30 } 31 } 32 return 0; 33} 34//---------------------------------------------------------------------------

Unit1.cpp

C++

1//--------------------------------------------------------------------------- 2 3#include <vcl.h> 4#pragma hdrstop 5 6#include "Unit1.h" 7 8using namespace std; // stringを使用するため 9#include <iostream> // cin,coutを使用するため 10#include <fstream> // ifstream,ofstreamを使用するため 11//--------------------------------------------------------------------------- 12#pragma package(smart_init) 13#pragma resource "*.dfm" 14TTCPClient *TCPClient; 15//--------------------------------------------------------------------------- 16__fastcall TTCPClient::TTCPClient(TComponent* Owner) 17 : TForm(Owner) 18{ 19} 20//--------------------------------------------------------------------------- 21void __fastcall TTCPClient::FormCreate(TObject *Sender) 22{ 23 AnsiString filename = "SaveFile.txt"; 24 25 ifstream fin; // ファイル読み込み用ストリーム 26 // SaveFile.txtのオープン(読み取り) 27 fin.open(filename.c_str(), ios::in); 28 29 // ファイルオープンが成功の場合(SaveFileが存在した場合 ) 30 if( !(fin.fail()) ) 31 { 32 string line; 33 string line02; 34 35 // SaveFile.txtのEOFまで 36 while(getline(fin,line)) 37 { 38 //cout << "[" << line << "]" << endl; 39 //line02 << "[" << line << "]" << endl; 40 line = "[" + line; 41 line = line + "]\r\n"; 42 line02 = line02 + line; 43 } 44 45 AnsiString str(line02.c_str()); 46 ShowMessage(str); 47 } 48 // SaveFileが存在しない場合 49 else 50 { 51 // 画面フォームのStatusBar1上にパネルがいくつあるかわからないため 52 // Items[0]でエラーになるため,↓に書き換え 53 //StatusBar1->Panels->Items[0]->Text = "Save file does not exist!"; 54 55 // StatusBar1にパネルがいくつあるかわからないため, 56 // SimpleTextプロパティに変更 57 StatusBar1->SimpleText = "Save file does not exist!"; 58 } 59} 60//---------------------------------------------------------------------------

Unit1.h

C++

1//--------------------------------------------------------------------------- 2 3#ifndef Unit1H 4#define Unit1H 5//--------------------------------------------------------------------------- 6#include <System.Classes.hpp> 7#include <Vcl.Controls.hpp> 8#include <Vcl.StdCtrls.hpp> 9#include <Vcl.Forms.hpp> 10#include <Vcl.ComCtrls.hpp> 11//--------------------------------------------------------------------------- 12class TTCPClient : public TForm 13{ 14__published: // IDE で管理されるコンポーネント 15 TStatusBar *StatusBar1; 16 void __fastcall FormCreate(TObject *Sender); 17private: // ユーザー宣言 18public: // ユーザー宣言 19 __fastcall TTCPClient(TComponent* Owner); 20}; 21//--------------------------------------------------------------------------- 22extern PACKAGE TTCPClient *TCPClient; 23//--------------------------------------------------------------------------- 24#endif

投稿2019/12/28 01:41

dem0nmichik0

総合スコア37

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。