Laden...

Forenbeiträge von Franknstein Ingesamt 529 Beiträge

19.10.2004 - 22:21 Uhr

Die Events muss man doch glaube ich Explizit werfen, oder? Was währe, wenn du den Event nicht entfernst sondern einfach nicht wirfst?

17.10.2004 - 23:01 Uhr

Hm,
Ich hatte des früheren in einem Programm das Problem, dass sich der Thread ums Verecken nicht mit Thread.Abort hat beenden lassen. Seitdem ich das aber so mache, wie ich das beschrieben habe, hatte ich nie wieder so Probleme....
Lag warscheinlich daran, dass ich die Exception innerhalb der while-Schleife abgefangen habe, und nicht die Schleife unterbrochen habe.... kann das sein?

17.10.2004 - 13:12 Uhr

Wenn du einen Thread töten willst machst du das so:


private void F()
{
        try
        {
                while(true) //Das Thread.IsAlive ist fürn Eimer weil der Thread nix mehr tuen würde währe er nicht alive
                {
                        Console.WriteLine("Thread von {0} lebt noch .. ", id);
                        Thread.Sleep(1000);
                }
        }
         catch(ThreadAbortException)
        {
               Console.WriteLine("Jetzt wird der Thread gestoppt");
               //return; Für den Notfall, sollte auch ohne gehen
        }
         //Oder
        catch(ThreadInterruptedException) //Weiß nicht ob das richtig geschrieben wird
        {
               Console.WriteLine("Jetzt wird der Thread abgebrochen");
               //return;
        }
}

Du sagt zwar dem Thread, dass er sich abbrechen soll. Der Thread bekommt auch die Threadabortexception, aber er kann sie ja nicht abfangen und weiß daher auch nicht, dass erbrechen soll. Nun bekommt der Thread die Threadabortexception und springt deshalb aus der Whileschleife aus.

13.10.2004 - 21:09 Uhr

Was du vielleicht probieren könntest, währe ein Benutzer zu verwenden der die Lese und Schreibrechte besitzt. Dann brauchst du dich in deinem Programm nur noch explizit an dem PC mit dem Benutzer anzumelden und du hast Lese und Schreibrechte fast als einziger(halt bis auf den Admin des Netzwerkspcs).
Ob und wie das funktionieren könnte, ist mir jedoch nicht bekannt.

12.10.2004 - 18:30 Uhr

Ich denke dazu braucht du ein Gerätchen, welches die SMS verschickt wie ein Handy: Nennt sich M20 und ist von der Firma Siemens. Wenn du das hast, dann hast du gewonnen....

09.10.2004 - 00:18 Uhr

Original von Noodles

Original von Franknstein
Den SQL würde ich so bauen:

  
string.Format("SELECT tn, tnID, dPN, FIX FROM kits WHERE kitID = '{0}'", KitId);  
  

Was hat das für einen Sinn? So ist die Query immer noch nicht sicher.

Stimmt,
Aber schneller.... Falls es sicherer sein sollte, lange ein KitId.Replace("'", "'"), oder?

Zurück zum Thema:
Sicher dass du nicht die Verbindung öffnen musst?
con.Open() nachdem du den Connectionstring zugewiesen hast, könntest du mal versuchen. Sonst guck mal hier:
http://www.google.de/search?hl=de&ie=ISO-8859-1&q=C%23+ADO.net+.mdb&btnG=Suche&meta=
Wobei die eigentlich immer das selbe machen wie du....


//...
try
{	
        OleDbConnection con = new OleDbConnection();
	con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\VS.NET\Tecc\States.mdb";

	string command = "SELECT * FROM kits WHERE kitID = " + KitID;
        con.Open(); //Verbindung öffnen

	OleDbDataAdapter adapter = new OleDbDataAdapter(command, con);
	DataSet ds = new DataSet();
	adapter.Fill(ds,"kits");

	if(ds.Tables["kits"].Rows.Count > 0)
	{
	        TN = (string)ds.Tables["kits"].Rows[0]["tn"];
		TID = (string)ds.Tables["kits"].Rows[0]["tID"];
		DPN = (string)ds.Tables["kits"].Rows[0]["dPN"];
		Fix = (string)ds.Tables["kits"].Rows[0]["fix"];
                //u.s.w.
	}
	else
	{
		ErrorMessage = "No entry with this KitID found !";
	}

        con.Close();
}
catch(Exception err)
{
       MessageBox.Show(err.Message + "Stack: " + err.StackTrace);
}
//..

Das SELECT COUNT habe ich mal aus Faulheit weggelassen....

08.10.2004 - 19:10 Uhr

Ich würde mal behaupten, dass alles was irgentwie was mit Datenbanken zu schicken hat, hier her gehört....

Den SQL würde ich so bauen:


string.Format("SELECT tn, tnID, dPN, FIX FROM kits WHERE kitID = '{0}'", KitId);

Mach auf alle Fälle das * raus....

Vermutlich ist es auch schneller wenn du anstatt zu prüfen ob irgentwelche Rows in der DataTable sind, einen Count durchführst:(Weil du dann den ganzen anderen Kram nicht ausführen musst)


string.Format("SELECT count(*) FROM kits WHERE kitID = '{0}'", KitId);

Edit:
Smilies deaktiviert

08.10.2004 - 18:57 Uhr

Ok vielen Dank für deine schnelle Hilfe! Ich hätte da noch ewig dran gesucht und vielleicht dieses XML rausgehauen und durch eine Textdatei ersetzt...... 😁

08.10.2004 - 15:22 Uhr

So findet er nichtmal Nodes........

Original von Horego

einfach mal anschauen und debuggen dann kommst du von selber drauf 🙂

gruß Horego

Eben nicht...Der Debugger meint, es gäbe keine Items in der Attribute-Collection.....

08.10.2004 - 15:15 Uhr

Wende dich mal an cdr, der ist der Spezialist für so etwas....

08.10.2004 - 15:14 Uhr

Ich verwende das 10-Fingerlangsamhacksystem, weil ich kann das nicht so gut. Meine Kumpels/innen die den ganzen Tag chatten sind ca doppelt so schnell.

07.10.2004 - 22:21 Uhr

Hallo,
Der Fehler ist mir zwar sehr sehr sehr peinlich, aber ich weiß wirklich nicht woher der kommen soll:

Ich habe ein XML-Dokument, oder besser eine XmlNode von der ich ein Attribut auslesen möchte, was aber fehlschlägt. Es kommt immer eine "Object not set to a Reference"-Exception.
Das ist mein Code zum auslesen:


try
{
        //Ein bisschen Quelltext
        this.Values = new Hashtable();
        this.cdoc = new XmlDocument();
	this.cdoc.Load(Path + "\\config.xml");
	XmlNodeList nodes  = this.cdoc.GetElementsByTagName("data");
	for(int i = 0; i < nodes.Count; i++)
	{
		//Hier laufe ich gleich in die Exception bei nodes[i].Attributes["key"].InnerText
                this.Values.Add(nodes[i].Attributes["key"].InnerText, nodes[i].InnerText);
	}
}
catch(Exception err)
{
	//Fehler wird hier von mir behandelt(d.h. protokolliert)
}

Und da ist das zugehörige XML:


<?xml version="1.0" encoding="utf-8" ?> 
<data>
	<value key="test" description="Das hier ist ein Testschlüssel">Testwert</value>
</data>

Scheinbar bin ich zu dumm....
Weiß jemand woher das kommen sollte?

07.10.2004 - 20:02 Uhr

In wie weit währe es denn legal, wenn ich mir mit einer TV-Karte bei Viva Plus/TTV Sonntags abends die Rockclips mitschneide, in das MP3-Format konvertiere und dann höre?

07.10.2004 - 17:13 Uhr

Wie? Also ich fasse zusammen:
Du hast eine Textbox txtName und einen Button btSave sowie ein DataGrid dgNames.
Nun willst du, dass der Inhalt aus der Textbox in das DataGrid eingetragen wird, falls jemand auf den Button btSave drückt?

  1. btSave.OnClick-Event abfangen
  2. folgenden Code anfügen:

DataRow row = dgNames.NewRow();
row[0].Text = txtName.Text;
dgNames.Rows.Add(row);

07.10.2004 - 17:08 Uhr

Ich bin mir zwar nicht 100% sicher, dass du das meinst was ich meine, aber versuch mal das:
Fang doch einfach den OnDataChange-Event der DataTable ab und verhindere, dass ein leerer Row in die DataTable kommt.....

07.10.2004 - 17:05 Uhr

Irgentwer hier im Forum wollte mal den Titel von irgentwelchen Fenstern herausfinden. Dort war dann wo der (CString) hin soll einen Stringbuilder und es hat alles einwandfrei gefunzt. Oder war es doch ein LPSTR oder ein LPCSTR?

Edit vielleicht funzt es ja auch mit einem CString?

29.09.2004 - 20:50 Uhr

Wenn du nach Hooks suchst, findest du z.B. das:
http://www.syncfusion.com/FAQ/WinForms/FAQ_c70c.asp
(How can I use Hooks in .net?)

28.09.2004 - 20:57 Uhr

**Besten Dank für deine Hilfe! **
Das war wiedermal ein typischer Dummheitsfehler(von mir):
Ich habe ein Funktion welche mir einen SqlDataReader zur DataTable ummappt. Jetzt habe ich die Funktion ein bisschen modifiziert, sodass ich das DataTable von dem SqlDataReader.GetSchemaTable() erzeugt bekomme. Nun ging erstmal garnichts mehr.
Nach einem geringen Denkaufwand bin ich darauf gekommen, dass ja die GetSchemaTable den TableName modifiziert. Nun habe ich einfach einen neuen Tablename vergeben und es ging wieder. Das habe ich dann auf meine andere Funktion(welche das besagte Problem mit dem DataGrid hatte) übertragen und es funktioniert.

Also ich fasse zusammen:
Der GetSchemaTable hat meinen Tablename geändert, sodass ich diesen wieder ändern musste damit das Datagrid was anzeigt.

28.09.2004 - 19:38 Uhr

Hallo,
Ich weiß nicht mehr weiter. Ich kann mir folgendes Verhalten nicht erklären:
Ich habe ein DataGrid. In dieses lade ich die Tabelleninhalte. Falls eine Tabelle leer ist, dann will ich nur die Spalten(Column) der Tabelle anzeigen. Aber das klappt nicht. Es wird garnichts angezeigt, falls eine Tabelle mal keine Zeilen(Rows) haben sollte. Was ich mir nicht erklären kann ist, dass das DataGrid immernoch nichts anzeigt, falls ich dort wo die Spalten in die DataTable eingefügt werden, Standartzeilen einfüge falls keine Zeilen in der DataTable vorhanden sind.

Es sind Todsicher Spalten in der DataTable vorhanden, denn diese lasse ich wo anders ausgeben. Und die Standartzeilen sind laut Debugger auch vorhanden.

Habe ich da irgentwas übersehen? Kennt jemand das Problem?

--
mfg
Franknstein

28.09.2004 - 14:33 Uhr

Ist im Prinzip das gleiche was NoOneKnows macht:
http://www.mycsharp.de/wbb2/thread.php?threadid=2999&sid=

Du musst halt zusätzlich ein paar Daten aus der XML auslesen(bzw die überhaupt mitspeichern)

27.09.2004 - 17:28 Uhr

Bau dir doch eine Funktion, welche dir für alle Controls die Eigenschaften niederschreibt:
(Dann lädst du eine Version deines Controls, rückst die Controls zureckt im Designer und lässt das XML schreiben. Dannach kannst du ja wieder deine Allgemeinversion mit dem XML verwenden)


System.Text.StringBuilder builder = new System.Text.StringBuilder();
builder.Append("<!-- Dein XML-Header -->");
builder.Append("<Controls>");
foreach(Control c in this.Controls)
{
	builder.AppendFormat("<{0} X='{1}' Y='{2}' W='{3}' H='{4}'>{5}</0>", c.Name, c.Location.X, c.Location.Y, c.Width, c.Height, c.Text);
}
builder.Append("</Controls>");

Natürlich ist dies nur der allergröbste Beispielcode.....

27.09.2004 - 14:42 Uhr

Du könntest die Eigenschaften, welche die Controls haben, in einer XML-Datei abspeichern. Dann erstellst du die Controls im Designer und weißt ihnen dann beim Programmstart die Eigenschaften wie Position, Größe, Sichtbarkeit etc. zu, welche du aus der XML-Datei geladen hast.

Natürlich könntest du auch die Controls dynamisch nach den XML-Dateien erstellen lassen, aber das währe halt ein etwas größerer Aufwand.....

26.09.2004 - 12:38 Uhr

Meinst du vielleicht sowas in der Richtung?


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

namespace ColorListBox
{
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.ComboBox lstColor;
		private string []data;
		private Color []color;

		private System.ComponentModel.Container components = null;

		public Form1()
		{
			InitializeComponent();
			data= new String[10]{"Red","Blue","Green","Yellow","Black",
								"Aqua","Brown","Cyan","Gray","Pink"};
			lstColor.DataSource= data;
			color= new Color[10]{Color.Red,Color.Blue,Color.Green,Color.Yellow,Color.Black,
							   Color.Aqua,Color.Brown,Color.Cyan,Color.Gray, Color.Pink};
		}

		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		private void InitializeComponent()
		{
			this.lstColor = new System.Windows.Forms.ComboBox();
			this.SuspendLayout();
			this.lstColor.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
			this.lstColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
			this.lstColor.Font = new System.Drawing.Font("Microsoft Sans Serif", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
			this.lstColor.Location = new System.Drawing.Point(8, 16);
			this.lstColor.Name = "lstColor";
			this.lstColor.Size = new System.Drawing.Size(272, 31);
			this.lstColor.TabIndex = 0;
			this.lstColor.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.MeasureItemHandler);
			this.lstColor.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.DrawItemHandler);
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(288, 273);
			this.Controls.Add(this.lstColor);
			this.Name = "Form1";
			this.Text = "ColorListBox Demo by Sanjay Ahuja";
			this.ResumeLayout(false);
		}
		#endregion

		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void DrawItemHandler(object sender,  DrawItemEventArgs e)
		{
			e.DrawBackground();
			e.DrawFocusRectangle();
			//e.Graphics.DrawString(data[e.Index],new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold),new SolidBrush(color[e.Index]),e.Bounds); Den Text willst du ja nicht
	
		}
		private void MeasureItemHandler(object sender, MeasureItemEventArgs e)
		{
			e.ItemHeight= 22;
		}
	}
}

Kannst du als ID nicht den Index der Items verwenden?

26.09.2004 - 00:24 Uhr

Dort wo du testen willst, ob nur Zahlen eingetragen sind:


try
{
     Convert.ToInt32(deineTextBox.Text)
}
catch(Exception)
{
     e.Handle = false; // e oder wie auch immer deine Eventvariable heißt
}

Oder du fängst den Keypressevent ab, und dann machst du(womit du verhinderst, dass Nichtzahlen nicht eingetragen werden)


if ("1234567890\b".IndexOf(e.KeyChar.ToString())<0)
     e.Handled = true;

24.09.2004 - 17:06 Uhr

Huch...
Dann ist das bei JDBC wohl was anderes(oder ich kann warscheinlich kein Englisch)

Connection pooling is a technique of creating and managing a pool of connections that are ready for use by any thread that needs them.

This technique of "pooling" connections is based on the fact that most applications only need a thread to have access to a JDBC connection when they are actively processing a transaction, which usually take only milliseconds to complete. When not processing a transaction, the connection would otherwise sit idle. Instead, connection pooling allows the idle connection to be used by some other thread to do useful work.

In practice, when a thread needs to do work against a MySQL or other database with JDBC, it requests a connection from the pool. When the thread is finished using the connection, it returns it to the pool, so that it may be used by any other threads that want to use it.

23.09.2004 - 20:59 Uhr

Wenn du eine Datenbankverbindung in deinem Programm verwendest, dann führst du ja nicht pernament Transaktionen durch. Die restliche Zeit, wenn du zwar zur Datenbank verbunden bist, aber keine Transaktionen durchführst, dann ist deine Verbindung "IDLE"... Das Connectionpooling erlaubt es also, eine Verbindung die IDLE ist, von einem anderen Thread aus zu verwenden um Transaktionen durchzuführen. Damit soll man angeblich den Datenbankserver schonen.

Wie das genau mit der Anwendung gemeint ist, ist mir nicht so ganz klar. Warscheinlich meinen die, dass man den Datenbankzugriff in eine (statische) Klasse kapseln soll. Diese Klasse würde dann im Konstruktor eine Datenbankverbindung öffnen, und später auch wieder schließen....

--
mfg
Franknstein

23.09.2004 - 20:42 Uhr

Original von cdr

>

Hat der nicht noch ein paar Bugs?

22.09.2004 - 19:57 Uhr

Die IO-Exception sagt aus, dass man nicht von einer Festplatte mit dieser Funktion auf eine andere Festplatte Dateien verschieben kann. Ob das wirklich so ist, oder warum das so ist, weiß ich nicht.
Warum willst du denn die Dateien nicht rekursiv verschieben?

21.09.2004 - 22:44 Uhr

Kann man irgentwie die VisualStyles wieder deaktivieren? (Außer Anwendung neu starten und die VisualStyles nicht aktivieren)

--
mfg
Franknstein

17.09.2004 - 17:25 Uhr

Irgent wer (ich meine es war NoOneKnows) hat mal in einem Post geschrieben, dass cdr einen Assemblyzusammenpacker erwähnt habe, mit dem man DLLs in ein Assembly mit einpacken könne.
Leider kenne ich den Link und Beitrag dazu nicht mehr.....

--
mfg
Franknstein

30.08.2004 - 17:56 Uhr

Ja, das kann ich dir kurz beschreiben:
Du legst ein DataGridTableStyle mit DataGridColumnstyles an. Wie das genau geht, kannst du der MSDN entnehmen, ich kann jetzt kein Beispiel anführen, denn ich muss gleich weg

--
mfg
Franknstein

28.08.2004 - 10:29 Uhr

Also, wenn ich eine neue Datenbankverbindung mit neuem Tabbed und so weiter anlege, dann crasht das Programm wenn ich eine zweite Verbindung aufbauen will:
Das Programm macht folgendes beim Verbindungsaufbau:

-Datenbankverbindung erzeugen und global in eine ArrayList legen
-Ein neues Tab anlegen
-Ein Usercontrol laden, und im neu angelegten Tab anzeigen
-Das Usercontrol fürt einen Show auf die Datenbank aus, um die Datenbanken herauszufinden
-Die Datenbanken werden in ein Listview gepackt

Und alles das wird fehlerfrei abgearbeitet!

Ok, dann werde ich das mal mit Win2000 am Montag testen!

Besten Dank für deine Hilfe

--
mfg
Franknstein

27.08.2004 - 21:13 Uhr

Meinst du, dass das die Lösung ist?
Wie groß sind denn die Datenmengen, die du so in das Dataset schaufelst?
(Ich will dir helfen das zu lösen, denn eine ähnliche Aufgabe könnte auch bald auf mich zu kommen.)

--
mfg
Franknstein

27.08.2004 - 21:09 Uhr

Besten Dank für deine Hilfe!
Der Fehler kommt seltsamerweise nur dann, wenn ich eine Aktion(Verbindung herstellen) ein zweites Mal ausführe. Das heißt dass der Fehler irgentwo beim zweiten Ausführen auftritt.
Des weitern heißt dass, das ich mal ein bisschen auskommentieren muss!

Kann der Fehler damit zusammenhängen, dass ich von VS2001 auf VS2003 umgestiegen bin. Oder damit dass ich von Win2k auf WinXP upgegraded habe?
Mit .net2001 und Win2000 hat ja noch alles funktioniert.

--
mfg
Franknstein

27.08.2004 - 00:16 Uhr

Was zählt denn überhaupt alles als externe Komponente?
Ich verwende irgentwelche Forms, UserControls, Controls und die MagicDockingLibrary(kann ich zimlich sicher ausschließen, denn die habe ich komplett auskommentiert).

edit 1, 2:
Rechtschreibfehler wurden entfernt von mir

--
mfg
Franknstein

26.08.2004 - 21:56 Uhr

Ich bekomm hier folgenden Fehler den ich mir garnicht erklären kann:

An unhandled exception of type 'System.Runtime.InteropServices.SEHException' occurred in system.windows.forms.dll

Additional information: External component has thrown an exception.

Ich habe schon überall im Programm Debugausgaben gemacht und alle werden ordnungsgemäß angezeigt/abgearbeitet. Daher weiß ich nicht wo der Fehler auftritt. Der Debugger stoppt in der Appcation.Run(). Ein Try-Catch um die Application.Run fördert nur zu Tage, was ich eh schon weiß:
Der Fehler tritt laut Stacktrace in der Run-Methode auf.

Ich vermute daher, dass die Exception irgentwo in der Nachrichtenschleife fliegt. Kann das überhaupt sein? Was könnte ich gegen diesen Fehler tuen?

--
mfg
Franknstein

26.08.2004 - 14:36 Uhr

Original von ernie04
Also, ich weiss ja nicht, aber die Sicherheitsinformationen werden ja auch von Microsoft auf der Website gepostet und da gibbet dann auch einen Link, um den Bugfix zu installieren. Wo ist das Problem? Vor alem mit SP2 ist der IE um einiges besser geworden.

Ich frag mich manchmal, warum Computerleute Windows einsetzen, wenn Sie die ganze Zeit nur darüber meckern... kopfschüttel

Ich würde sofort und augenblicklich auf Linux umsteigen, währe es besser. Aber wenn man nicht über ein Produkt meckert und schimpft, dann wird das nie bssser.

Ja, der IE ist mit dem SP2 wohl besser geworden, aber wenn ich mir den Updateprozess ansehe, dann wird mir übel. Gegen die Webseite habe ich ja überhaupt garnichts auszusetzen, aber dass man sich dann durch eine rieseige Sammlung an Updates kämpfen muss, wenn man die Updates nicht zwei Tage lang herunterladen will, ist ja das allerletzte.

Ok, es gibt noch das Autoupdate......

mfg
Franknstein

26.08.2004 - 14:13 Uhr

Eigentlich solle das mit System.XML möglich sein....

--
mfg
Franknstein

25.08.2004 - 23:47 Uhr

Original von seth

Nimm Mozilla ist eh viel besser. Man kann ohnehin alles ersetzen bei Windows wenn man unbedingt will.

...
...
mozilla und co sind ja bewiesenermaßen auch net BUGFREI 😉 ...

Ja, aber es kommt auf der Webseite von mozilla.org eine Warnmeldung, dass der Browser eine Sicherheitslücke hat, und man bitte auf einen Link klicken soll um ein Update zu installieren. Wenn man auf den Link klickt, dann kommt eine dicke rote Warnmeldung, die man erst nach 5 sek anklicken kann, dass es potenziell gefährlich ist, diese Pakete auszuführen, und ob man sich wirklich sicher ist, dass man das tuen will. Da klickt man auf OK, das Update wird installiert, dann noch den Browser neu gestarten und alle bekannten Bugs sind entfernt.

Also nach meiner Meinung ist der Mozzi der beste Browser. Der Opera ist Spielzeug und den IE kann man wegen den Sicherheitslücken in die Tonne geben, falls man nicht immer mal updaten will!

mfg
Franknstein

25.08.2004 - 19:18 Uhr

Wie der HTML-Output zu bewerkstelligen ist, kann ich dir nicht sagen. Aber das wist du selber wissen:


string array = "var deinarray = new Array(";

while(deinDataReader.Read())
{
  array += string.Format("\"{0}\"", deinDataReader.GetString(0));
}
array = array.Substring(0, array.Length - 1); //Kann auch -2 sein, musst du probieren
array += ");";

Das Substring entfernt das letzte Komma

--
mfg
Franknstein

23.08.2004 - 13:06 Uhr

Ich glaube nur, dass im .net-Framework nach jedem malloc ein free kommt aber dennoch ist die Kirche wichtig. (Zur allgemeinen Belustigung wenn an der Kirb wieder alle bombenvoll sind z.B. oder für die Amis, damit sie einen Vorwand haben die Islamisten auszubomben)

Ob es außerirdisches Leben gibt, ist mir relativ egal. Aber niemand wird irgentwann einmal behaupten können, dass es keine Außerirdischen gibt.

--
mfg
Franknstein

22.08.2004 - 20:57 Uhr

p[0] = (clr >> 16) & 0xff;

Was bringt der Indexoperator hinter dem p? Gehen kann das ja wohl nicht, denn du kannst nicht dem ersten Arrayteil eines nicht vorhandenen Arrays einen Wert geben.

Was würde passieren, wenn du aus dem p[0] ein p machst?

--
mfg
Franknstein

22.08.2004 - 14:11 Uhr

Du nimmst interfaces nur dann wenn du sie brauchst. Du brauchst sie zum Beispiel, wenn du forderst, wie Klassen aufgebaut sein müssen. Das kannst du zum Beispiel gut Plugins mit realisieren. Plugin laden -> ins Interface casten und dann die entsprechenden Methoden aufrufen. Dazu gibt es hier schon ein paar Themen.

Aber meist verwendet man Interfaces zur Komunikation zwischen Klasseninstanzen. Also stell dir vor, du hast zwei Fenster in deinem Programm. Dann implementiert das Fenster 1 ein Interface und gibt dem Fenster 2 eine Instanz des Interfaces. Dann kann Fenster2 die im Interface definierten Methoden aufrufen. (Und damit zum Beispiel dafür sorgen, dass das Fenster1 sich schließt....)

--
mfg
Franknstein

22.08.2004 - 01:35 Uhr

Also,
Interfaces sind in erster Linie eine Beschreibung vom Mindestaufbau einer Klasse, die ein Interface "implementiert". Also erbt diese Klasse dieses Interface und implementiert die im Interface festgesetzten Funktionen und Felder. Dazu ein Beispiel:


interface IView
{
  void PrintTokens(string Tokens);
  string GetTokens();
}

class Test : IView  //Muss alle Methoden aus IView implementieren
{
  //...
  void main(object args[])
  {
   //
  }
  private void PrintTokens(string Tokens)
  {
     Console.WriteLine(Tokens);
  }

  public string GetTokens() //Ich mach die Implementationen immer public, ka ob man   das muss
  {
    return Console.ReadLine();
  }
}

Nun kann man damit aber noch mehr machen, nämlich von einer Klasse mittels eienr Interfaceinstanz eine Funktion in einer anderen Klasse aufrufen, die eine Instanz der ersten Klasse besitzt:


interface IView
{
  void WriteMsg(string Msg);
}

class Test1 : IView
{
  public void main
  {
     Test2 t = new Test2((IView) this);
  }

  public  WriteMsg(string Msg)
  {
     Console.WriteLine(Msg);
  }
}

class Test2
{
  Test2(IView interface)
  {
     interface.WriteMsg("Hallo in Klasse Test1");
  }
}

In Test1 implementiere ich ein Interface. Denn rufe ich irgentwo in Test1 eine Funktion auf, die Test2 instanziiert. Dabei wird dem Konstruktor ein in das Interface gecasteter this mitgegeben, damit man aus der Test2 auf die Interfaceimplementationen in Test1 zugreifen kann.

Ok, das ist jetzt nicht sehr informativ, ich will das morgen überarbeiten, aber nun bin ich sooo müde

mfg
Franknstein

20.08.2004 - 23:48 Uhr

Ich polle immer. Denn der einzige Nachteil des pollens ist der, dass man nicht sofort weiß, dass was neues da ist. Es ist auch nicht so, dass du damit extrem die DB belasten würdest. Natürlich solltest du beim pollen nur gucken, ob was neues da ist. Ich verwende dazu immer einen "select count(spalte) from tabelle1" alle 10 sek. Mein Vertrauen auf Events hat nämlich schon schwer gelitten....

Mal eine andere Frage:
Kann die Yukon Trigger an Clients werfen?

--
mfg
Franknstein

20.08.2004 - 23:26 Uhr

Wie hast du das jetzt gelöst?
Könntest du vielleicht dazu ein bisschen Quelltext posten?

--
mfg
Franksntein

20.08.2004 - 23:24 Uhr

Leck mich am Buckel, vielleicht solltest du dir mal ein anderes Studienfach suchen. BWL oder so. Da muss man nämlich nicht nachdenken sondern nur stumpfsinnig auswendiglernen. Ich nehm dir ja noch nichtmal üblel, dass du die Vorlesungen geschwänzt hast.....

Aber was ich garnicht abhaben kann, ist wenn Leute blöd fragen, weil sie noch nichtmal google bedienen oder englisch können. Aber ich will nicht so sein:
http://sol-biotech.com/code/WinDirectoryListing.cpp (zwei Minuten suchen)

Edit
Und sagen es würde nicht funktionieren zählt nicht, ich habs mit DevC++ und dem MinGW getestet. Nur des schreiben in die Datei fehlt.

--
mfg
Franknstein

19.08.2004 - 23:20 Uhr

Warscheinlich indem du das Panel löscht, und die Grafik direkt auf die Form zeichnest...
Oder du verwendest DoubleBuffers. Allerdings hilft das nur gegen das Flackern und nicht wie du warscheinlich beschrieben hast, gegen die Schlieren....

edit:
hier gucken für die GDI:
http://www.syncfusion.com/FAQ/WinForms/default.asp#3


mfg
Franknstein