Laden...

Fehler bei Compilierung

Erstellt von Maddinel vor 20 Jahren Letzter Beitrag vor 20 Jahren 4.460 Views
Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 20 Jahren
Fehler bei Compilierung

Hi,

ich benutze den Borland C# Builder Personal Edtion und hab mir zu Hause einen kleinen Texteditor gebastelt. Der funktionierte bisher auch ganz normal und gut (ist aber noch nicht fertig). Der Quelltext schein komplett in Oerdnung zu sein denn die bisherige Version hab ich schon getestet,da sind keine Fehler im Source. Nun hab ich das Projekt und den C#Builder geschlossen (über Nacht,dass versteht sich ja) und wollte am näcvhsten Tag weitermachen,allerdingst ging es nichtmehr,ohne das ich auch nur irgendwas am Source Code geändert hätte. Das hatte ich schon zweimal. Er gibt dann lediglich was mit Arithmetic Exception aus. Beim ersten mal hab ich einfach alle Steuerelemente gelöscht und den Quelltext gelassen,hab die Steuerelemente wieder neu alle erstellt und schon gfings wiedeer(war aber sehr nervig). Jetzt hab ich das Prob aber schon wieder und das komische ist,ich hab das Projekt komplett kopiert(welches auf meinen Rechner+C#Builder so nichtmehr lief) und hab gerade mal hier auf dem Rechner an der Arbeit laufen lassen (gleicher C#Builder) und siehe da,hier geht es komischer weise.
Also dachte ich mir,das es eventuell was mit dem .net Framework von mir zu Huase zu tun haben könnte. Was meint ihr? Was kann das sein und was kann ich machen?

Danke schonmal an euch!!

Maddin

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

N
4.644 Beiträge seit 2004
vor 20 Jahren

Hast Da mal die Code Zeile geprüft in der die Exception ausgelöst wird? Kann es vielleicht auch sein, dass Du zur Laufzeit eine Berechnung durchführst und da vielleicht ab und zu mal durch 0 teilst?

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 20 Jahren

Also soweit ich das sehe ist da nichts irgendwo im Quelletext,was hin und wieder durch null geteilt werden könnte.

Das tollen Problem ist ja,dass die Exception in der Main-Funktion auftritt bei

Application.Run(new WinForm());

und wenn ich zu Hause da eine try catch setze geht er immer in die catch Anweisung. Hier noch nicht ein einiges mal.
Auserdemwenn er hin und wieder eine Division durch null hätte,dann müsste es ja nachdem es nichtmehr ginge, irgendwann mal wieder gehen zwischendurch,aber da ist nicht so. Wenn es erstmal nicht geht,daan bleibt das so.

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

V
842 Beiträge seit 2003
vor 20 Jahren

Hi!

Hast du mal alles was in der Klasse WinForm steht überprüft, besonders dabei den Konstruktor?
Hast du mal dein Programm in der Release-Version kompiliert? Dadurch sind bei mir mal zig Fehler aufgetaucht die in der Debug-Version gar nicht erschienen. Release ist in der Prüfung etwas strenger und akzeptiert auch nicht alles. Vielleicht findest du dann ja deinen Fehler.

Ansonsten musst du mal Quellcode schicken, am Besten alles dann kann ich es mal mit VS testen.

Code-Hacker

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 20 Jahren

So hier mal der gesamte Quelltext von MainForm.
Der Quelltext von den Anderen Forms ist nicht wichtig,da steht nix weiter drinne weil sie nur als Anzeige von Tipps dienen.


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Text;

namespace PageMan
{
	/// <summary>
	/// Zusammenfassende Beschreibung für WinForm
	/// </summary>
	public class WinForm : System.Windows.Forms.Form
	{
		/// <summary>
		/// Erforderliche Designervariable
		/// </summary>
		private System.ComponentModel.Container components = null;
		private System.Windows.Forms.OpenFileDialog openFileD;
		private System.Windows.Forms.SaveFileDialog saveFileD;
		private System.Windows.Forms.TextBox EdtPath;
		private System.Windows.Forms.Button BtnOpen;
		private System.Windows.Forms.Button BtnSave;
		private System.Windows.Forms.Button BtnLeeren;
		private System.Windows.Forms.RichTextBox rTextBox;
		private System.Windows.Forms.TextBox EdtPfad;
		private System.Windows.Forms.GroupBox groupBox1;
		private System.Windows.Forms.Button button1;
		private System.Windows.Forms.Button button2;
		private System.Windows.Forms.Button button3;
		private System.Windows.Forms.CheckBox checkTipp;
		private System.Windows.Forms.Button button4;
		private System.Windows.Forms.FontDialog fontD;

		public WinForm()
		{
			//
			// Erforderlich für die Unterstützung des Windows Forms-Designer
			//
			InitializeComponent();

			//
			// TODO: Fügen Sie nach dem Aufruf von InitializeComponent() Konstruktorcode hinzu.
			//
		}


		// globale Elemente **********************************************
		bool tipp = true;




		/// <summary>
		/// Ressourcen nach der Verwendung bereinigen
		/// </summary>
		protected override void Dispose (bool disposing)
		{
			if (disposing)
			{
				if (components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose(disposing);
		}

		#region Vom Windows Form-Designer erzeugter Code
		/// <summary>
		/// Erforderliche Methode zur Unterstützung des Designers -
		/// ändern Sie die Methode nicht mit dem Quelltext-Editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.openFileD = new System.Windows.Forms.OpenFileDialog();
			this.saveFileD = new System.Windows.Forms.SaveFileDialog();
			this.groupBox1 = new System.Windows.Forms.GroupBox();
			this.button4 = new System.Windows.Forms.Button();
			this.button3 = new System.Windows.Forms.Button();
			this.button2 = new System.Windows.Forms.Button();
			this.button1 = new System.Windows.Forms.Button();
			this.fontD = new System.Windows.Forms.FontDialog();
			this.rTextBox = new System.Windows.Forms.RichTextBox();
			this.EdtPfad = new System.Windows.Forms.TextBox();
			this.BtnOpen = new System.Windows.Forms.Button();
			this.BtnSave = new System.Windows.Forms.Button();
			this.BtnLeeren = new System.Windows.Forms.Button();
			this.checkTipp = new System.Windows.Forms.CheckBox();
			this.groupBox1.SuspendLayout();
			this.SuspendLayout();
			// 
			// openFileD
			// 
			this.openFileD.Filter = "\"txt files (*.txt)|*.txt|All files (*.*)|*.*\" ;";
			// 
			// groupBox1
			// 
			this.groupBox1.Controls.Add(this.button4);
			this.groupBox1.Controls.Add(this.button3);
			this.groupBox1.Controls.Add(this.button2);
			this.groupBox1.Controls.Add(this.button1);
			this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
			this.groupBox1.ForeColor = System.Drawing.Color.Azure;
			this.groupBox1.Location = new System.Drawing.Point(654, 56);
			this.groupBox1.Name = "groupBox1";
			this.groupBox1.Size = new System.Drawing.Size(160, 248);
			this.groupBox1.TabIndex = 5;
			this.groupBox1.TabStop = false;
			this.groupBox1.Text = "Formatierungen";
			// 
			// button4
			// 
			this.button4.Location = new System.Drawing.Point(16, 104);
			this.button4.Name = "button4";
			this.button4.Size = new System.Drawing.Size(128, 24);
			this.button4.TabIndex = 7;
			this.button4.Text = "button4";
		
			// 
			// button3
			// 
			this.button3.Location = new System.Drawing.Point(16, 80);
			this.button3.Name = "button3";
			this.button3.Size = new System.Drawing.Size(128, 24);
			this.button3.TabIndex = 6;
			this.button3.Text = "button3";
			this.button3.Click += new System.EventHandler(this.button3_Click);
			// 
			// button2
			// 
			this.button2.Location = new System.Drawing.Point(16, 56);
			this.button2.Name = "button2";
			this.button2.Size = new System.Drawing.Size(128, 24);
			this.button2.TabIndex = 5;
			this.button2.Text = "button2";
			this.button2.Click += new System.EventHandler(this.button2_Click);
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(16, 32);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(128, 24);
			this.button1.TabIndex = 4;
			this.button1.Text = "button1";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// rTextBox
			// 
			this.rTextBox.Font = new System.Drawing.Font("Courier New", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
			this.rTextBox.Location = new System.Drawing.Point(8, 64);
			this.rTextBox.Name = "rTextBox";
			this.rTextBox.Size = new System.Drawing.Size(640, 472);
			this.rTextBox.TabIndex = 8;
			this.rTextBox.Text = "";
			// 
			// EdtPfad
			// 
			this.EdtPfad.Location = new System.Drawing.Point(120, 544);
			this.EdtPfad.Name = "EdtPfad";
			this.EdtPfad.Size = new System.Drawing.Size(528, 20);
			this.EdtPfad.TabIndex = 9;
			this.EdtPfad.Text = "textBox1";
			// 
			// BtnOpen
			// 
			this.BtnOpen.BackColor = System.Drawing.Color.Tan;
			this.BtnOpen.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
			this.BtnOpen.Location = new System.Drawing.Point(8, 40);
			this.BtnOpen.Name = "BtnOpen";
			this.BtnOpen.Size = new System.Drawing.Size(120, 24);
			this.BtnOpen.TabIndex = 10;
			this.BtnOpen.Text = "Öffnen (.txt)";
			// 
			// BtnSave
			// 
			this.BtnSave.BackColor = System.Drawing.Color.Tan;
			this.BtnSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
			this.BtnSave.Location = new System.Drawing.Point(128, 40);
			this.BtnSave.Name = "BtnSave";
			this.BtnSave.Size = new System.Drawing.Size(120, 24);
			this.BtnSave.TabIndex = 11;
			this.BtnSave.Text = "Speichern unter";
			// 
			// BtnLeeren
			// 
			this.BtnLeeren.BackColor = System.Drawing.Color.Tan;
			this.BtnLeeren.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
			this.BtnLeeren.Location = new System.Drawing.Point(248, 40);
			this.BtnLeeren.Name = "BtnLeeren";
			this.BtnLeeren.Size = new System.Drawing.Size(88, 24);
			this.BtnLeeren.TabIndex = 12;
			this.BtnLeeren.Text = "Feld leeren";
			this.BtnLeeren.Click += new System.EventHandler(this.BtnLeeren_Click);
			// 
			// checkTipp
			// 
			this.checkTipp.Location = new System.Drawing.Point(664, 312);
			this.checkTipp.Name = "checkTipp";
			this.checkTipp.TabIndex = 13;
			this.checkTipp.Text = "checkBox1";
			// 
			// WinForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.BackColor = System.Drawing.Color.SteelBlue;
			this.ClientSize = new System.Drawing.Size(818, 568);
			this.Controls.Add(this.checkTipp);
			this.Controls.Add(this.BtnLeeren);
			this.Controls.Add(this.BtnSave);
			this.Controls.Add(this.BtnOpen);
			this.Controls.Add(this.EdtPfad);
			this.Controls.Add(this.rTextBox);
			this.Controls.Add(this.groupBox1);
			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
			this.MaximizeBox = false;
			this.Name = "WinForm";
			this.Text = "PageMan";
			this.groupBox1.ResumeLayout(false);
			this.ResumeLayout(false);
		}
		#endregion

		/// <summary>
		/// Der Haupteinsprungspunkt für die Anwendung
		/// </summary>
		[STAThread]
		static void Main() 
		{
			try
			{
				Application.Run(new WinForm());
			}
			catch(Exception e)
			{
             	MessageBox.Show(e.ToString());
			}
		}
		
		private void BtnLeeren_Click(object sender, System.EventArgs e)
		{

			rTextBox.Clear();
		}
		
		private void button1_Click(object sender, System.EventArgs e)
		{
			if(tipp)
			{
				 FrmTippUmbruch frmUmbru = new FrmTippUmbruch();
				 frmUmbru.ShowDialog();
			}

			string text = "<br>";
			Clipboard.SetDataObject(text,true);
			rTextBox.Paste();
		}
		
		private void button2_Click(object sender, System.EventArgs e)
		{
		   if(tipp)
		   {
			FrmTippFett frmFett = new FrmTippFett();
			frmFett.ShowDialog();
		   }

		   string text = "<b></b>";
			Clipboard.SetDataObject(text,true);
			rTextBox.Paste();
		}
		
		private void button3_Click(object sender, System.EventArgs e)
		{
			if(tipp)
		   {
			 FrmTippAuflistung frmAuflist = new FrmTippAuflistung();
			 frmAuflist.ShowDialog();
		   }

		   string text = "<ul>\n"+
									"	<li></li>\n"+
									"	<li></li>\n"+
						  "</ul>";
			Clipboard.SetDataObject(text,true);
			rTextBox.Paste();
		}
		
		


		private void checkTipp_CheckedChanged(object sender, System.EventArgs e)
		{
			if(checkTipp.Checked)
				tipp =  true;
			else
				tipp = false;
		}
		
		private void BtnOpen_Click(object sender, System.EventArgs e)
		{
			string filename;
			openFileD.ShowDialog();
			filename = openFileD.FileName;

			if(filename.Length > 0)
			{
				//Path ausgeben
				EdtPfad.Text = filename;

				StreamReader sr = new StreamReader(filename);
				rTextBox.Text = sr.ReadToEnd();
				sr.Close();
			}
		}
		
		private void BtnSave_Click1(object sender, System.EventArgs e)
		{
			 string filename;
			string text;


			saveFileD.ShowDialog();
			filename = saveFileD.FileName;

			if(File.Exists(filename))
			{
				if(filename.Length > 0)
				{
					text = rTextBox.Text;
					FileStream f = new FileStream(filename, FileMode.Create);
					StreamWriter s = new StreamWriter(f);
					s.Write(text,0,text.Length);
					s.Close();
					f.Close();
				}
			else
			{
			 using(FileStream fs = File.Create(filename, 1024))
			 {
			 text = rTextBox.Text;
			 Byte[] info = new UTF8Encoding(true).GetBytes(text);
			 fs.Write(info,0,info.Length);
			 fs.Close();
			 }
			}
		}

       }

	}
}

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

V
842 Beiträge seit 2003
vor 20 Jahren

Hi!

Hast du schon versucht dein Programm als Release und nicht als Deug zu kompiliere und mal geguckt was dann dabei rauskommt?

Für mich sieht der Code ok aus, allerdings ist es bei C# so das es dieses if:

if(variable)

gar nicht erlaubt. Sondern es muss explizit auf true oder false getestet werden, oder worauf auch immer.

Code-Hacker

N
4.644 Beiträge seit 2004
vor 20 Jahren

_Original von Code-Hacker_Für mich sieht der Code ok aus, allerdings ist es bei C# so das es dieses if:

if(variable)  

gar nicht erlaubt. Sondern es muss explizit auf true oder false getestet werden, oder worauf auch immer.

Code-Hacker

Natürlich ist das erlaubt.

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 20 Jahren

danke erstmal,aber bist du sicher mit dem if(variable) ? Weil das ging doch bei anderen Sachen bei mir bisher auch. Wie compiliere ich im Release Mode?

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

V
842 Beiträge seit 2003
vor 20 Jahren

Hi!

Du müsstest irgendwo einstellen können wie Kompiliert werden soll.
Bei mir gibt es in den Projekteigenschaften im VS einen Button ganz oben wo Projekt-Konfiguration oder sowas ähnliches steht. Musst du mal suchen bei dir. Dort drin kannst du dann in einer Tabelle die Konfiguration einstellen. Dort müsste irgendwo Debug stehen und dort musst du auf Release wechseln und diese Einstellungen übernehmen.

Das es überhaupt ging mit dieser if-Anweisung bei dir wundert mich, da C# das eigentlich nicht erlaubt, da dies eine implizite Konvertierung nach bool bedeutet und Quelle für Programmierfehler sind. Deswegen immer explizit vergleichen, also z.B. hast du eine boolsche Variable und diese soll auf flase geprüft werden:

if(boolVariable==false)
  <Anweisung>;

Code-Hacker

N
4.644 Beiträge seit 2004
vor 20 Jahren

_Original von Code-Hacker_Das es überhaupt ging mit dieser if-Anweisung bei dir wundert mich, da C# das eigentlich nicht erlaubt, da dies eine implizite Konvertierung nach bool bedeutet und Quelle für Programmierfehler sind. Deswegen immer explizit vergleichen, also z.B. hast du eine boolsche Variable und diese soll auf flase geprüft werden:

if(boolVariable==false)  
  <Anweisung>;  

Code-Hacker

C# erlaubt das!

Mein Beispiel:

bool test = false;
if(test)
    MessageBox.Show("Test ist true");
else
    MessageBox.Show("Test ist false");

Ein Beispiel von Micrososft aus dem Framwork SDK:

public static void Main() 
   {
      Console.Write("Enter a character: ");
      char c = (char) Console.Read();

      if (Char.IsUpper(c))   
         Console.WriteLine("The character is uppercase.");   
      else if (Char.IsLower(c))
         Console.WriteLine("The character is lowercase.");
      else if (Char.IsDigit(c))
         Console.WriteLine("The character is a number.");
      else
         Console.WriteLine("The character is not alphanumeric.");
   }

Char.IsUpper, IsLower und IsDigit prüfen auf einen bool Wert.

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 20 Jahren

ok,das mit dem release geht da ja auch aber das bringt mir hier ja jetzt nicht viel. hier geht ja alles.
ich werde bei mir zu Hause das .net Frame work nochmal neu installieren weil ich wüsste sonst keinen anderen Grund.

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

V
842 Beiträge seit 2003
vor 20 Jahren

Original von Noodles
C# erlaubt das!
[...]

LÖÖÖÖL!
Eben im Buch gesehen. Schreiben erst genau was ich sage und eben nochmal reingeguckt und an einer anderen Stelle im Code benutzen sie es selbst....lol.

Naja, wie gesagt, habe mich auch etwas gewundert. Weiß auch gar nicht wie ich das bisher in C# gemacht habe, habe ne ganze Zeit nicht mehr damit geproggt, wegen Schule und Arbeit.

Dennoch ist der explizite Vergleich sicherer!

Code-Hacker

445 Beiträge seit 2003
vor 20 Jahren

Hi,

is ja klar, dass es in diesem Beispiel funktioniert:
es wird ja nur auf bool verglichen.
wenn du z.B.


int i = 3;
if(i) //nicht erlaubt
    tu was;

dann funktioniert das nicht (keine implizite konvertierung von int zu bool)

Viele Grüße
www.mycsharp.de

Bitte vor dem Fragen immer in die FAQ schauen und die Suche benutzen. Danke.

N
4.644 Beiträge seit 2004
vor 20 Jahren

Falls Du mich meinst, ich bin auch nur von bool Variablen ausgegangen, denn im Bsp. ist es eine bool Variable. Das es mit int nicht funktioniert weiß ich und das hätte ich auch nie bestritten. 😉

445 Beiträge seit 2003
vor 20 Jahren

Original von Noodles
Falls Du mich meinst, ich bin auch nur von bool Variablen ausgegangen, denn im Bsp. ist es eine bool Variable. Das es mit int nicht funktioniert weiß ich und das hätte ich auch nie bestritten. 😉

Ja, das war eigentlich nur zur klarstellung gedacht. Nicht dass das jemand falsch versteht. 😉

Viele Grüße
www.mycsharp.de

Bitte vor dem Fragen immer in die FAQ schauen und die Suche benutzen. Danke.

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 20 Jahren
Nochmal wegen dem Compilierungsfehler

...
So ich hatte ja den Applicatin.Run Aufruf in der WinMain Funktion mal in try...catch gesetzt und dann komm folgende Fehlermeldung:

Siehe Bild

<a href="http://www.people.freenet.de/powersoundopel/Error.jpg"></a>

Falls der Link nicht geht hier liegt das Bild der Meldung mal:

http://www.people.freenet.de/powersoundopel/Error.jpg

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================