thread cpu



  • hallo liebe gemeinde,

    auch auf die gefahr hin arg belächelt zu werden muss ich fragen, weil es für mich momentan ein massives problem darstellt.
    Woher kommt es, dass, wenn ich mein projekt kompiliere, ich keine fehlermeldung bekomme, aber auch nicht meine exe datei, sondern das CPU-Tab aufgeht mit den threads drin und immer eine bestimmete "jmp" anweisung angezeigt ist.
    Bisher habe ich es so handhaben können, dass ich dann ein zweites mal kompiliert habe und dann meist meine exe datei erstellt wurde. nun ist es so, dass cih immer in den cpu-tab hineinlaufe.

    Desweiteren möchte ich gerne wissen, wie ich innerhalb eines Forms auf Daten eines anderen Forms im Pojekt zugreifen kann, also um beispielsweise auf einem sich öffnenden Eigenschaften-Fenster aus dem Hauptprogramm Werte von Komponenten heraus zu ziehen und in EditFelder zu setzen.
    EDIT: OK in der FAQ habe ich grade gelesen, dass ich aus dem Hauptprogramm heraus in der anderen Form Dinge setzen kann, also bsp im Mein_cpp sowas schreibe ,wie:

    Form2->Label1->Caption = "aus dem hauptprogramm";
    

    Kann ich das auch andersherum..?

    Vielen dank für eure hilfe.

    grüße
    göck



  • Hallo

    goeck schrieb:

    Woher kommt es, dass, wenn ich mein projekt kompiliere, ich keine fehlermeldung bekomme, aber auch nicht meine exe datei, sondern das CPU-Tab aufgeht mit den threads drin und immer eine bestimmete "jmp" anweisung angezeigt ist.
    Bisher habe ich es so handhaben können, dass ich dann ein zweites mal kompiliert habe und dann meist meine exe datei erstellt wurde. nun ist es so, dass cih immer in den cpu-tab hineinlaufe.

    Vermutlich weil du F8 anstelle von F9 drückst.

    OK in der FAQ habe ich grade gelesen, dass ich aus dem Hauptprogramm heraus in der anderen Form Dinge setzen kann, also bsp im Mein_cpp sowas schreibe ,wie: ...
    Kann ich das auch andersherum..?

    Ja das geht auch andersrum, wenn du es richtig machst.

    bis bald
    akari



  • Vermutlich weil du F8 anstelle von F9 drückst.

    Sorry, ich muss dich enttäuschen...ob ich F9 drücke oder auf das Play-Icon...immer kommt der Thread und bleibt immer an einer JMP anweisung stehen....es ist zum heulen heute....

    Danke für eure Hilfe.
    Göck



  • Hallo

    Dann kann ich mir nur noch vorstellen das dein Code noch während des Initialiseren der Anwendung eine Exception verursacht. Möglicherweise in einem Konstruktor?

    bis bald
    akari



  • so, da ich immer noch nicht hinter die geheimnisse gekommen bin, werde ich euch mal meine bisherige arbeit zur durchsicht da lassen. Ich hoffe, jemand findet was greifbares...

    Main CPP

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Com_Port_1.h"
    #include "Com_Port_1_Einstellungen.h"
    
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "VaClasses"
    #pragma link "VaComm"
    #pragma link "VaTerminal"
    #pragma link "VaBuffer"
    #pragma link "VaSystem"
    #pragma link "VaControls"
    #pragma link "VaDisplay"
    #pragma link "cgauges"
    #pragma link "cspin"
    #pragma link "perfgrap"
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    	Label3->Caption = "";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ComboBox1Change(TObject *Sender)
    {
    	VaComm1->DeviceName = "COM"+IntToStr(ComboBox1->ItemIndex+1);
    	VaComm1->PortNum = ComboBox1->ItemIndex+1;
    	VaComm1->Open();
    	if(VaComm1->Active())
    	{
    		Button1->Enabled = true;
    		Button2->Enabled = true;
    		Memo1->Lines->Add("COM"+IntToStr(ComboBox1->ItemIndex+1)+" geöffnet");
    	}
    	else
    		Memo1->Lines->Add("COM "+IntToStr(ComboBox1->ItemIndex+1)+"ist belegt oder existiert nicht.");
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Close(TObject *Sender, TCloseAction &Action)
    {
    	VaComm1->Close();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	if (Button1->Caption == "Start")
    	{
    		Button1->Caption="Stop";
    		// Puffer der Schnittstelle wird geleert
    		VaComm1->Close();
    		VaComm1->Open();
    	}
    	else
    	{
    		Button1->Caption="Start";
    		StatusBar1->SimpleText = "Lesen gestoppt";
    	}
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    	if (Button2->Caption == "Start")
    	{
    		Button2->Caption="Stop";
    		// Wenn Schreiben erfolgreich war, gebe Feedback, wenn nicht, dann neg. Feedback in StatusBar
    		if (VaComm1->WriteText("12"))
    			StatusBar1->SimpleText = "Schreiben erfolgreich";
    		else
    			StatusBar1->SimpleText = "Schreiben gescheitert";
    	}
    	else
    	{
    		Button2->Caption="Start";
    		StatusBar1->SimpleText = "Schreiben gestoppt";
    	}
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::ComboBox1CloseCom(TObject *Sender)
    {
    	VaComm1->Close();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Clear1Click(TObject *Sender)
    {
    	Memo1->Clear();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Speichernunter1Click(TObject *Sender)
    {
    	SaveDialog1->DefaultExt="txt";
    	SaveDialog1->Filter = "Text Dateien (*.txt)|*.txt";
    	SaveDialog1->Execute();
    	Memo1->Lines->SaveToFile(SaveDialog1->FileName);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::SendCommand(TObject *Sender, char &Key)
    {
    // Wenn Enter gedrückt wurde, wird ein Sendevorgang ausgelöst
      switch (Key)
      {
      case VK_RETURN:
      {
    	// Wenn Schreiben erfolgreich war, gebe Feedback, wenn nicht, dann neg. Feedback in StatusBar
    	if (VaComm1->WriteText(Label3->Caption))
    		StatusBar1->SimpleText = "Schreiben erfolgreich";
    	else
    		StatusBar1->SimpleText = "Schreiben gescheitert";
    	Key = 0;
    	Memo1->Lines->Append("");
    	Label3->Caption = "";
      }
      case VK_BACK:
    	 Label3->Caption = Label3->Caption + "BACK";
      default:
      {
    	 Label3->Caption = Label3->Caption + Key;
      }
      }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::ReceiveMessage(TObject *Sender, const AnsiString Data)
    {
    	if(Button1->Caption == "Stop")
    	{
    		//Ab jetzt wird aus dem Puffer gelesen
    		AnsiString inTemp = Data;
    		if (inTemp == NULL)
    			StatusBar1->SimpleText = "Lesen gescheitert";
    		else
    		{
    			// Schreibe alles vom Port kommende auf Memo1
    			Memo1->Lines->Add(inTemp);
    
    			int inTempInt = StrToIntDef(inTemp, 333);
    			if (inTempInt == 333)
    			{
    				StatusBar1->SimpleText = "Lesen nicht erfolgreich (StrToInt Error)";
    			}
    			else
    			{
    				// Beshreibe Graph auf zweitem Tab
    				PerformanceGraph1->DataPoint(clMenuText, inTempInt);
    				PerformanceGraph1->Update(); 
    				CGauge1->Progress = inTempInt/10.24;
    				StatusBar1->SimpleText = "Lesen erfolgreich";
    			}
    		}
    	}
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Einstellungen1Click(TObject *Sender)
    {
    	Form2->Edit1->Text = VaCapture1->DataStart;
    	Form2->Edit2->Text = VaCapture1->DataFinish;
    
    	Form2->ShowModal();
    }
    //---------------------------------------------------------------------------
    

    und die der entsprechende Header

    //---------------------------------------------------------------------------
    
    #ifndef Com_Port_1H
    #define Com_Port_1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <Menus.hpp>
    #include <XPMan.hpp>
    #include <ExtCtrls.hpp>
    #include "VaClasses.hpp"
    #include "VaComm.hpp"
    #include "VaTerminal.hpp"
    #include "VaBuffer.hpp"
    #include "VaSystem.hpp"
    #include "VaControls.hpp"
    #include "VaDisplay.hpp"
    #include <Dialogs.hpp>
    #include <ExtDlgs.hpp>
    #include "cgauges.h"
    #include "cspin.h"
    #include "perfgrap.h"
    #include <TabNotBk.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
    	TStatusBar *StatusBar1;
    	TXPManifest *XPManifest1;
    	TLabel *Label1;
    	TLabel *Label2;
    	TComboBox *ComboBox1;
    	TButton *Button1;
    	TButton *Button2;
    	TVaComm *VaComm1;
    	TGroupBox *GroupBox1;
    	TGroupBox *GroupBox2;
    	TTimer *Timer1;
    	TMainMenu *MainMenu1;
    	TMenuItem *Datei1;
    	TMenuItem *Speichernunter1;
    	TMenuItem *panel1;
    	TMenuItem *Clear1;
    	TSaveDialog *SaveDialog1;
    	TLabel *Label3;
    	TTabbedNotebook *TabbedNotebook1;
    	TMemo *Memo1;
    	TPerformanceGraph *PerformanceGraph1;
    	TCGauge *CGauge1;
    	TVaCapture *VaCapture1;
    	TMenuItem *Einstellungen1;
    	void __fastcall ComboBox1Change(TObject *Sender);
    	void __fastcall Close(TObject *Sender, TCloseAction &Action);
    	void __fastcall Button1Click(TObject *Sender);
    	void __fastcall Button2Click(TObject *Sender);
    	void __fastcall ComboBox1CloseCom(TObject *Sender);
    	void __fastcall Clear1Click(TObject *Sender);
    	void __fastcall Speichernunter1Click(TObject *Sender);
    	void __fastcall SendCommand(TObject *Sender, char &Key);
    	void __fastcall ReceiveMessage(TObject *Sender, const AnsiString Data);
    	void __fastcall Einstellungen1Click(TObject *Sender);
    private:	// Benutzer-Deklarationen
    public:		// Benutzer-Deklarationen
    	__fastcall TForm1(TComponent* Owner);
    
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    und hier das ganze für die eingebundene Form

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Com_Port_1_Einstellungen.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
    	: TForm(Owner)
    {
    	TabbedNotebook1->Width = Form2->ClientWidth;
    	TabbedNotebook1->Height = Form2->ClientHeight;
    }
    //---------------------------------------------------------------------------
    

    header

    //---------------------------------------------------------------------------
    
    #ifndef Com_Port_1_EinstellungenH
    #define Com_Port_1_EinstellungenH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <TabNotBk.hpp>
    //---------------------------------------------------------------------------
    class TForm2 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
    	TTabbedNotebook *TabbedNotebook1;
    	TLabel *Label1;
    	TEdit *Edit1;
    	TLabel *Label2;
    	TEdit *Edit2;
    private:	// Benutzer-Deklarationen
    public:		// Benutzer-Deklarationen
    	__fastcall TForm2(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm2 *Form2;
    //---------------------------------------------------------------------------
    #endif
    

    Vielen Dank!!!!!



  • Mir ist aufgefallen, dass ich immer bei Aufruf der Datei cc3270mt.dll stehen bleibe. Im debug fenster in der unteren leiste stehen in blauer schrift die aufgerufenen dateien, die laufen beim kompilieren durch und der thread fehler taucht immer erst bei aufruf dieser datei auf. habe auch schon versucht sie zu ersetzen durch einen neue, aber gleiches verhalten.

    help!!!



  • Kann es sein, dass dort ein Breakpoint gestzt ist? Geht das Fenster auch auf, wenn du im Release-Modus compilierst?



  • Ich meine, da ist kein Haltepunkt. Ich habe euch mal ein Screenshot gemacht. Wenn ich mal so doof fragen darf..Release Mode heißt, statt F9 nehme ich Shift+Str+F9.

    www.sgoecker.de/pics/c++builder.JPG


Anmelden zum Antworten