Od niedawna zacząłem programować w C++ builderze (Community Edition 10.3), po skompilowaniu kodu, program nie otwiera się, nie pojawia się żaden komunikat błędu. Gdy próbuję otworzyć program nie poprzez kompilator - naciskając na niego dwukrotnie ten także się nie otwiera. Na pewno nie jest to problem związany z brakiem materiału do wyświetlenia. Czy ktoś wie co mogło pójść nie tak? Dodam jeszcze że program pokazuje się w menedżerze zadań jako uruchomiony.
Pokaż ten program. Może nie zauważasz jak zamyka się konsola albo nie dałeś dyrektywy apptype ?
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <algorithm>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
TSchool *School;
//---------------------------------------------------------------------------
__fastcall TSchool::TSchool(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TSchool::FormShow(TObject *Sender)
{
fstream name_file;
string name;
name_file.open("User.txt" , ios::in | ios::out);
if(name_file.bad()==true)
{
School->Error1_label->Visible=true;
School->Error1_button->Visible=true;
}
getline(name_file, name);
if(name.size()==0)
{
School->Name_label->Visible=true;
School->Name_edit->Visible=true;
do
{
AnsiString name = School->Name_edit->Text;
}while(name.size()==0);
name_file<<name;
School->Name_label->Visible=false;
School->Name_edit->Visible=false;
}
name_file.close();
}
A to co to :
do
{
AnsiString name = School->Name_edit->Text;
}while(name.size()==0);
Jesteś pewien, że ta pętla się kończy bo wg mnie nie... W ogóle wywal ją. Jak chcesz analizować zawartość pól tekstowych to do tego służą odpowiednie zdarzenia.
A co w tej pętli jest nie tak? AnsiString musiałem dodać bo inaczej mi nie chciał się skompilować...
Author napisał(a):
A co w tej pętli jest nie tak? AnsiString musiałem dodać bo inaczej mi nie chciał się skompilować...
Jak pracujesz na formularzach musisz zmienić sposób myślenia na obiektowo zdarzeniowy.
A tutaj wygląda jak byś na coś czekał i tym samym funkcja FormShow nie kończy się a tym samym program się nie pokazuje ( wisi ).
W komponencie Name_edit użyj zdarzenia onChange .
Rozumiem pętla nigdy się nie skończy i to dlatego się nie pokazuje, ale czy dobrze myślę że trzeba wstawić tę pętlę w inny "Formularz"?
Jak masz name puste to leci w nieskończoność pętla bo się spełnia name.size()==0
Author napisał(a):
Rozumiem pętla nigdy się nie skończy i to dlatego się nie pokazuje, ale czy dobrze myślę że trzeba wstawić tę pętlę w inny "Formularz"?
Nie ma być żadnej pętli. Masz wykorzystywać zdarzenia.
Dziękuję !