Laden...

Forenbeiträge von sheitman Ingesamt 1.047 Beiträge

07.11.2006 - 11:25 Uhr

wie sieht denn UpdateQuantity aus?

07.11.2006 - 10:46 Uhr

Der Code ist so richtig wie er ist.

das macht mich jetzt aber stutzig...

problem oben war ja, er konnte SqlConenction nicht serialisieren weil ein member das nicht unterstützt...
und da du das ja auch net zum client schicken mußt, sondern alles auf dem server machst, muß das aus deiner verbinden methode aus der parameterliste raus, siehe 1. post

drum, hast du was geändert damit es auf einmal geht?

bzw. hattest du noch anderes problem?

07.11.2006 - 10:17 Uhr

dein code oben is auch bissl fehlerhaft^^

erstmal rufst du verbinden auf, die methode erwartet aber ein SqlConnection object als parameter, aber du gibst garkeins mit...

nichts mitgeben is der richtige weg, also den parameter raus nehmen dann soltle das eigentlich gehen

[WebMethod]
public void Verbinden() {
    SqlConnection cnn = new SqlConnection();
    cnn.ConnectionString="Data source=w4de3qsy0000901\\SQLEXPRESS;"
                +"initial catalog=Kontakte;"
                +"user id=;"
                +"password =;"
                +"Integrated Security=SSPI";
    cnn.Open();
}

07.11.2006 - 09:47 Uhr

naja... im grunde stellt man sich sicher auch die frage warum lagerst du die eine methode umbedingt aus...^^

ok... aber wir nehmen das jetz mal so hin und schaun mal was wir mit dem adapter machen...

der adapter wurde ja sicher zu designzeit festgelegt und wird sich nicht nochmal ändern...
er muß nun irgendwie in die collections klasse... was haben wir denn da für möglichkeiten:

  • dem constructor als parameter mitgeben
  • über ein property setzen
  • der methode als parameter mitgeben

da der adapter sich nicht nochmal ändern wird, wäre das beste wohl dem konstruktor mitzugeben

Main-Form


namespace ServiceMgmt {
    public partial class Main : Form {
    
        //neu hinzugefügt
        private Collection thisCollection;
        
        public Main() {
            InitializeComponent();
            //neu hinzugefügt
            thisCollection = new collection(tNSNAMES_NEWTableAdapter)
            
            listBox1.Items.AddRange(new string[] { "Server", "Clients" });
            listBox1.SelectedIndex = 0;
        }

        private void Main_Load(object sender, EventArgs e) {          
        }

        private void btnAbfrage_Click(object sender, EventArgs e) {
            //verlagert in konstuktor           
            //collection thisCollection = new collection();
            grdResults.DataSource = thisCollection.datenAbfragen(txtServiceName.Text, listBox1.SelectedItem.ToString());
        }
    }
}

collection

namespace ServiceMgmt {
    
    public class collection : Abfrage {
        
        //brauchen wir nicht mehr
        //Main ThisMain = new Main();
        
        //hinzugefügt
        //typ mal prüfen ob der richtig ist
        private TableAdapter tableAdapter;
        
        //hinzugefügt
        //typ mal prüfen
        public collection (TableAdapter adapter) {
            this tableAdapter = adapter;
        }

        public DataTable datenAbfragen(string servicename, string clients) {
            
            StreamWriter rw = new StreamWriter("C:\\Temp\\test.log");
            ArrayList arrLst = new ArrayList();
            ArrayList arrPosit = new ArrayList();          
            
            //aus bedingung raus gezogen
            TNSNAMES_NEWDataTable test = new TNSNAMES_NEWDataTable();

            if (clients == "Clients") {                
                //geändert
                tableAdapter.FillClients(test);
            } else {
                tableAdapter.FillServers(test);
            }
            
            //aus bedingung raus gezogen
            foreach (DataRow row in test) {
                    arrLst.Add(row[0].ToString());
            }

            foreach (string str in arrLst) {
                try {
                    //änderung
                    //object erstellt und variable zugewiesen, spart erzeugung von 2. objekt
                    ServiceController sc = new ServiceController(servicename, str);
                    arrPosit.Add(str + sc.DisplayName + sc.Status);
                } catch (InvalidOperationException) {
                    //wann wird die geworfen?
                }
            }

            //obj müßten ja strings sein da oben string hinzugefügt wurden
            //warum schreibst du nicht oben in der schleife schon in die datei?
            foreach (object obj in arrPosit) {
                rw.WriteLine(obj.ToString() + servicename + " ist installiert");
            }

            DataTable dtatb = new DataTable("Ergebnisse");
            DataColumn dtacl = new DataColumn("Status des Server");
            DataRow dtaRow;
            dtatb.Columns.Add(dtacl);

            foreach (string str in arrPosit) {
                dtaRow = dtatb.NewRow();
                dtaRow["Status des Server"] = str;
                dtaRow.Table.Rows.Add(dtaRow);
            }
            return (dtatb);
        }
    }
}

hab mal paar änderungen gemacht
den typ vom tableadapter mußt du mal noch anpassen, da hast du wohl nen eigenen
anstosten hab ich noch bissl aufgeräumt
du hattest bei if...else identischen code teilweise drin, den hab ich rausgezogen
bei "foreach (string str in arrLst)" hast du 2x ein objekt gebaut um auf dessen member zuzugreifen, geändert in einmal erzeugen und merken und darauf zugreifen

deine 4 foreach-schleifen könnte man eigentlich auch zusammen fassen...
naja was auch fehlt ist fehlerbehandlung vom streamwriter und das schließen von dem... sonst wirst du teilweise nur halbe strings drin haben 😉

das sähe dann so aus

ServiceController sc = null;
string str = "";
string strPosit = "";
DataTable dtatb = new DataTable("Ergebnisse");
DataColumn dtacl = new DataColumn("Status des Server");
DataRow dtaRow;
dtatb.Columns.Add(dtacl);
foreach (DataRow row in test) {
	//1. foreach
	str = row[0].ToString();
	//2. foreach
	try {					
		sc = new ServiceController(servicename, str);
	} catch (InvalidOperationException) {
	}
	if(sc==null) {
		continue;
	}
    strPosit = str + sc.DisplayName + sc.Status;	
    //3. foreach	
	try {
		rw.WriteLine(strPosit + servicename + " ist installiert");
	} catch {}
	//4.foreach
	dtaRow = dtatb.NewRow();
	dtaRow["Status des Server"] = strPosit;
	dtaRow.Table.Rows.Add(dtaRow);
}
sw.Close();

07.11.2006 - 09:08 Uhr

wo is jetzt das problem genau?

06.11.2006 - 17:24 Uhr

ok... hoffe du hast gesehen was bei dir etwas unsauber war...

alles was du von der form in deiner methode brauchst, übergibst du per parameter an die methode... damit kennt nur deine form die klasse collection und nicht andersrum, so wie es sein soll

als rückgabe empfiehlt sich dann ja deine datatable, die du dann im form selbst als datasource verwendest
das anbinden machst du in der methode btnAbfrage_Click, nach dem methodenaufruf

alternative für parameter wäre folgendes:
du kannst beider klasse collection dem konstruktor parameter mitgeben oder aber auch properties definieren die du von der form aus setzen kannst

das lohnt aber nur bei daten wo dies auch sinn macht, z.b. weil sie bei jeder abfrage immer gleich sind und sich nicht ändern

dann macht es auch sinn das objekt von collection sich in form zu merken, und nicht jedesmal neu zu erzeugen

06.11.2006 - 17:09 Uhr

strings kannst du nicht färben, da ein string nur eine zeichenkete ist, nur eine aneinanderreihung von zeichen

was du meinst ist darstellung von strings... nun ist die frage darstellen womit?

in einer textbox?
zweifarbig geht da glaub nicht (da gabs hier mal ne diskussion wegen highlighting o.ä.), aber mit einer rtf box geht das

wenn es ums reine zeichnen geht hast du ja DrawString schon selbst genannt

nachtrag:
wie talla schon sagt
einmal DrawString in Weiß für "Visual"
einmal DrawString in Schwarz für "Studio"

06.11.2006 - 17:07 Uhr

Original von Rockpriest
Oh stimmt. Das hab ich noch gar net gewusst, dass des auch geht. Wieder was gelernt heute. Ich werd mich ab jetzt zurückhalten mit unqualifizierten Hilfen 🙂 Und überlass das lieber Leuten die ne Ahnung davon haben. ach was... mach dich net so runter
manchmal merkt man halt dinge von selbst nicht... nehms als hinweis hin und fertig =)

anworten sind gern gesehen und helfen oft einen anderen blickwinkel auf etwas zu bekommen

06.11.2006 - 17:01 Uhr

ja die lösung liegt ja auf der hand... du änderst deine methode datenAbfragen dahingehend, das sie einen parameter bekommt...

du mußt eines bei oo bedenken: es geht meisten darum wer kennt wen und hat damit zugriff auf seine öffentlichem methoden/properties etc...

ich weiß nun nicht genau was in txtServicenName drin stehen soll...

aber du könntest da ja erstmal dahingehend ändern...

public void datenAbfragen(string servicename)

und entfernst

string servicename = txtServiceName.Text;

dann änderst du noch btnAbfrage_Click zu

private void btnAbfrage_Click(object sender, EventArgs e) {
    collection thisCollection = new collection();
    thisCollection.datenAbfragen(txtServiceName.Text);            
}

gleiches prinzip müßtest du bei

ThisMain.listBox1.SelectedItem.ToString()

anwenden

du solltest auch ganz schnell

Main ThisMain = new Main();

entfernen
an allen ecken wo dann der compiler hängen bleibt, müßtest du parameter für einführen

zweck des ganzen ist es, das collection keinen verweis auf Main mehr enthält
Main füttert collection mit daten, läßt es was ausführen und wertet dan ndie ergebnisse aus

um den ansatz zu beurteilen können müßte ma nerstmal wissen was du überhaupt machen willst udn welceh daten dabei auf der form sind und wofür die gedacht sind

06.11.2006 - 16:41 Uhr

kannst du mal kurz aufzeigen wie klasse a und b zusammen hängen?

also am anfang hast du ja Program, das warscheinlich dann a erzeugt und anzeigen läßt

wer erzeugt nun b?

falsl b aus a heraus erzeugt wird, z.b. durch nen button klick willst du was bestimmtes machen was b erledigen soll, dann übergib im konstruktor von b doch einfach den wert der in der textbox von a steht =)

06.11.2006 - 16:30 Uhr

Original von FZelle
@svenson:
Warum muss immer alles portable sein?
Das ist genauso falsch, wie immer alles proprietär zu halten.

es ging ihm darum das es vorkommen kann das ein webservice auch von einem java-client oder c++-client, php-client etc. angesprochen wird...

nehm mal den webservice von amazon... den kann man auch von .net aus und java aus nutzen, aber weißt du worin er letzlich implementiert ist?
das kann was ganz anderes sein wie php...

und damit das untereinander funktioniert muß man drauf achten was man heraus reicht...

06.11.2006 - 16:25 Uhr

was habt ihr denn alle gegen ini dateien?
paßt doch...

zum ver- und entschlüsseln nehm den cryptostream und dann biste auch ruck zuck fertig
wie gesagt in der msdn (deine offline hilfe mit suchfunktion 😉) ist zu der klasse ein beispiel drin

mußt dir nur noch was ausdenken wie du das mit dem schlüssel machst =)

06.11.2006 - 15:48 Uhr

So sieht z.Bsp mein Code jetzt aus

öhm dir is schon klar dsa du da redundanz drin hast?

Max_Min_Mean_field ist statisch und auch public, von daher von außerhalb zugreifbar über den klassennamen... alles genauso wie bei deiner klassenmethode

beides geht

Max_Min_Mean_field.Add("item über klassenattribut");
Get_List_Max_Min_Mean().Add("item über klassenmethode");

Leider weiss ich nicht genau, wie ich das ambesten anstelle.

wenn du ne methode hast die da updaten soll und die als parameter ne liste hat, also sowas hier

public void UpdateDatabase(List<string> liste) {
  ...
}

und aufrufen is dann ganz einfach wie immer

List<string> meineListe = new List<string>();
meineListe.Add("Hallo");
meineListe.Add("Du");
UpdateDatabase(meineListe);

06.11.2006 - 14:53 Uhr

hab noch was gefunden was wohl helfen sollte

**ListBox.TopIndex-Eigenschaft **
Ruft den Index des ersten sichtbaren Elements in der ListBox ab oder legt diesen fest.

06.11.2006 - 14:45 Uhr

Gehe ich richtig davon aus, das es "technisch" garnicht möglich ist so wie ich es mir vorgestellt habe?

jep

das problem ist, das du ein sqlconnection übergeben willst
das heißt ja, das diese auf dem client serialisiert wird, und zum webservice geschickt wird
dann wolltest du wohl auf dem client weiter mit arbeiten...

das geht so aber nicht

was svenson meinte ist, das du alle datenbankfunktionalitäten im webservice selbst verrichtest und zwischen client und webservice nur daten austauschst...

bsp wäre z.b. das du eine funktion möchtest die kunden aufgrund von angegeben namen zurück gibt
dafür schreibst du dir ne methode im webservice mit entsprechenden parameter, diese macht die datenbankabfrage und gibt z.b. kunde[] zurück

auf dem client rufst du dann nur noch diese methode auf

dann hast du hinter der bühne als übertregenen daten einmal den wert des parameters und einmal das kunde[]

06.11.2006 - 14:34 Uhr

Original von Kovu17
Was sind Cryptostreams?

Definiert einen Stream, der Datenstreams mit kryptografischen Transformationen verbindet.

würde also passen
nähere infos und beispiel in der msdn hilfe =)

06.11.2006 - 14:18 Uhr

kleiner Tippfehler Update hoppla, schon berichtigt =)

06.11.2006 - 14:13 Uhr

hm, hab grad mal gegooglet und da traf ich öfters auf aussagen das man mittels oledb nicht in exceldateien zeilen löschen kann... nur leermachen könntest du sie mittels update

edit: böses insert weg gemacht^^

06.11.2006 - 14:07 Uhr

öhm kann es sein das dein sql-statement falsch is?

probier mal

cmd2.CommandText = "DELETE FROM [Ergebnisse$]";
06.11.2006 - 14:04 Uhr

knnst du eventuell dne quellcode deines controlls posten?

06.11.2006 - 13:41 Uhr

druc kdas bild doch mal mit nem anderen programm aus und vergleich es
dann siehst du ja obs nicht vielleicht doch am bild liegt

06.11.2006 - 13:28 Uhr

zur eigentlichen frage des blinkens:

du meinst bestimmt so flackern... schalt mal DoubleBuffering ein, dann sollte das weg sein

einfach im konstruktor

DoubleBuffered = true;

mal schreiben

06.11.2006 - 13:21 Uhr

hm, naja eine möglickeit wäre kurz den index auf das elfte element zu setzen und dann auf das sechste...^^

06.11.2006 - 12:31 Uhr

die listbox scrollt doch automatisch zu dem selektiertem index...

versteh nicht ganz was dein problem ist...

06.11.2006 - 09:54 Uhr

stimmt, hab ich garnet gesehen^^

deine methode datenAbfragen solltest du in die Klasse Main verschieben und entsprechend ändern. in deinem button_click rufst du die dann nur noch auf

anstelle von einer listbox solltest du eventuell in erwägung ziehen mit radiobuttons oder ein dropdownlist zu arbeiten... nimmt man imho eher für "wähle 1 aus x"


private void datenAbfragen() {
  //eventuell in konstruktor verlagern...
  AbfrageTableAdapters.TNSNAMES_NEWTableAdapter thisAdapter = new AbfrageTableAdapters.TNSNAMES_NEWTableAdapter();

  ArrayList arrLst = new ArrayList();
  if (listBox1.SelectedValue.ToString() == "Server") {
    arrLst.Add(thisAdapter.GetDataClients().ToString());
  } else {
    arrLst.Add(thisAdapter.GetDataServers().ToString());
  }
  grdResults.DataSource = arrLst;
}

private void btnAbfrage_Click(object sender, EventArgs e) {
  datenAbfragen();
}

06.11.2006 - 09:44 Uhr

und wo taucht da jetzt

thisMain.listBox1.Items.AddRange(new string[] { "Server", "Clients" });

auf?

änder mal dein Main() in


public Main() {
  InitializeComponent();
  listBox1.Items.AddRange(new string[] { "Server", "Clients" });
  listBox1.SelectedIndex = 0;

}

du solltest aber die listbox noch so einschränken das auf jeden fall nur 1 auswählbar ist und nicht keins oder mehrere

03.11.2006 - 14:07 Uhr

Spanisch, Englisch, Chinesisch oder Indisch. Da hast du weltweit die größte Zielgruppe.

rofl

03.11.2006 - 09:29 Uhr

Wenn ein Client jetz disconnected wo trage ich ein dass er auch aus der Client Liste removed wird?

wie wärs eine eigene art protokoll zu bauen... wenn der client sich vom server disconnecten möchte schickt er einen entsprechenden bfehl zum server der ihn dann aus der liste nimmt

so kannst du dein chatprogramm auch erweitern um merh als nur chatten zu ermöglichen =)

was ich vermisse is ne klasse server beim server und client beim client... das wäre ja etwas logischer vom oo-design her

der client:
klasse client, die methoden hat zum senden/empfangen von daten zu/von einem server
klasse/struct server, die nur ip, port etc. enthält

der server:
klasse server, der methoden zum empfangen/senden von daten zum/vom client hat
klasse client mit daten wie ip,port etc.

ab und an passiert es mal das die ausgabe bissl seltsam ist
bsp: server und ein client
ich schreibe test, bekomm test angezeigt
ich schreibe t, bekomm test angezeigt...

problem is folgendes:

sn.Read(buffa, 0, 15);
Console.WriteLine(Encoding.ASCII.GetString(buffa));

Read gibt dir ein int zurück, das angibt, wieviel zeichen wirklich gelesen wurden...
da du aber immer den gesammten buffer ausgibst, hast du noch fragmente von älteren nachrichten drin die länger waren als die akutelle

von daher eher sowas benutzen

int num = sn.Read(buffa, 0, 15);
Console.WriteLine(Encoding.ASCII.GetString(buffa,0,num));

jetzt bleibt aber noch ein problem... immer wenn du daten empfängst schreibst du diese in eine neue zeile, was dir aber gesendete texte zerreißt (max.15 zeichen pro zeile momentan), darum solltest du nur mit Write arbeiten, und sobald aus dem steam nichts mehr kommt einen zeilenumbruch machen

dafür hab ich 2 änderungen machen müßen
beim server, klasse handler methode check

while (client.net.DataAvailable) {
  int num = client.net.Read(buffer, 0, 15);
  msg = Encoding.ASCII.GetString(buffer, 0, num);
  schicke(msg); //Nachricht weiterleiten
}

beim client, klasse server, methode receive

if (sn.DataAvailable==true)
{
  while (sn.DataAvailable) {
    int num = sn.Read(buffa, 0, 15);
    Console.Write(Encoding.ASCII.GetString(buffa, 0, num));
  }
  Console.WriteLine();
}

zu guter letzt zum thema codingstyle:

if (sn.DataAvailable==true)

da gibts extra nen eintrag in der faq glaub...

if (sn.DataAvailable)

lieber benutzen

also im großen und ganzen nochmal dein oo-design überdenken und bei lese und schreiboperationen drauf achten wie mit dem puffer gearbeitet wird

nachtrag:
du solltest noch exceptionmanagement hinzufügen bzw. verbessern

so wirft z.b. dein senden eine ioexception wenn er versucht zu nem cleint zu schicken der garnicht mehr da ist
darüber könntest du den entsprechednen client aus der liste wieder nehmen
allerdings solltest du diese exception dann im senden behandeln z.b.

03.11.2006 - 09:10 Uhr

auf dem 1. blick find ich die klassenbezeichnungen etwas seltsam... wieso ist im client eine klasse server?

03.11.2006 - 08:55 Uhr

Original von juetho
Hallo,

ich arbeite (fast ausschließlich) mit #D und kann auch innerhalb einer Methode einzelne Teile als Region zusammenfassen.

Gruß Jürgen

naja geht mit visual studio auch 😉

02.11.2006 - 16:28 Uhr

hm, und welche assemblies von boo brauch man letzten endes dann für die anwendung?

02.11.2006 - 15:59 Uhr

du mußt übrigens jedes comobject was du direkt oder indirekt nutzt wieder frei geben
d.h. auch dein workbook, dein sheet, sogar eigentlich die sheets und workbooks-collection
also alles einzeln immer ner variable zuweisen und am ende freigeben

dann sollte das auch ohne probleme klappen

02.11.2006 - 15:22 Uhr

kann durchaus sein das man da einiges raus nehmen kann... hat mir dmals überlegt ob man da verhalten bestehnder klassen beibehalten soll (also von wegen exception wenn schon closed und so) oder nur das was man selbst brauch...

naja ansonsten nutz es als inspiration^^

aber mich würde mal interessieren wie das zusammenspiel boo und c# realisiert wird...

02.11.2006 - 15:17 Uhr

habs grad gefunden

using System;
using System.IO;
using System.Windows.Forms;
using System.Text;

namespace Archiv {
	
	public class TextboxWriter : StringWriter {

		private TextBox _txtBox;
		private bool _isOpen;
		private static UnicodeEncoding _encoding;

		public TextboxWriter() : this(new TextBox()) {}
		public TextboxWriter(IFormatProvider formatProvider) : this(new TextBox(), formatProvider) {}
		public TextboxWriter(TextBox txtBox) : this(txtBox, null) {}

		public TextboxWriter(TextBox txtBox, IFormatProvider formatProvider) : base(formatProvider) {
			if (txtBox == null) {
				throw new ArgumentNullException("txtBox");
			}
			_txtBox = txtBox;
			_isOpen = true;
		}
 
		public override Encoding Encoding {
			get {
				if(TextboxWriter._encoding == null) {
					TextboxWriter._encoding = new UnicodeEncoding(false,false);
                } 
				return TextboxWriter._encoding;
			}
		}

		public override void Close() {
			this.Dispose(true);
		}

		protected override void Dispose(bool disposing) {
			this._isOpen = false;
			base.Dispose(disposing);
		}

		public TextBox GetTextBox() {
			return _txtBox;
		}

		public override string ToString() {
			return _txtBox.Text;
		}

		public override void Write(char value) {
			if (!this._isOpen) {
				throw new ObjectDisposedException(null,"Writer closed");
			}
			_txtBox.AppendText(value.ToString());
		}


		public override void Write(string value) {
			if (!this._isOpen) {
				throw new ObjectDisposedException(null,"Writer closed");
			}
			if(value != null) {
				_txtBox.AppendText(value);
			}
		}

		public override void Write(char[] buffer, int index, int count) {
			if (!this._isOpen) {
				throw new ObjectDisposedException(null,"Writer closed");
			}
			if (buffer == null) {
				throw new ArgumentNullException("buffer");
			}
			if (index < 0) {
				throw new ArgumentOutOfRangeException("index");
			}
			if (count < 0) {
				throw new ArgumentOutOfRangeException("count");
			}
			if ((buffer.Length - index) < count) {
				throw new ArgumentException();
			}
			this._txtBox.AppendText(new string(buffer, index, count));
		}
	}
}

verwendent mittels


System.Windows.Forms.TextBox _txtOutput;
...
System.Console.SetOut(new TextboxWriter(_txtOutput));

implementation hab ich vorrangig von ner .net klasse abgeschaut und da dann nur die textbox reingebastelt...

02.11.2006 - 15:05 Uhr

schreibt boo selbst direkt auf die console oder schreibt es auf die console über .net?
weil die kannst du ja umleiten...

edit: ok scheint so als ob print so implementiert ist das es Console.Writeln aufruft... von daher beig einfach Console.out um... ich hatte mir eine neue klasse g ebaut die von textwriter erbt und in eine textbox schreibt

02.11.2006 - 13:58 Uhr

Original von cadi
Naja, in begrenztem Rahmen. Da ja nicht alles was man in einem "normalen" Programm so macht als Activity vorliegt und mans sonst alles in "CodeActivities" packen muss.. das ist dann aber kein geklicke mehr, sondern programmieren-

nagut, aber man hat auch wieder etwas zum "zusammen klicken"^^

Original von cadi
Ja: es wird aus einem Diagramm ein Programm erzeugt.
Nein: hat nix mit Klassendiagrammen zu tun.

naja den vergleich mit klassendiagramme meinte ich eher vom prinzip her

man ersteltl klassendiagramme und kann sich über gewisse tolls die rümpfe der klassen generieren, was die einzelnen methoden machen muß mandann noch programmieren

es gab dann noch eine art diagrammtyp wo man die abläufe regeln konnte, aber daraus konnte man nichts generieren

wenn ich das workflow richtig verstanden habe macht man damit aber genau das
man designt sich das verhalten sozusagen und ein "prgramm" setzt das dann um 🙂

02.11.2006 - 12:45 Uhr

und daraus könnte man dann eine benutzbare assembly machen?
sozusgen programme "zusammenklicken"?

scheint für mich eine weiterentwicklung der klassendiagramme zu sein auf deren basis bestimmte tools die codegrundgerüste der klasse erstellt haben...

02.11.2006 - 11:25 Uhr

Original von cadi
Stell es dir inetwa vor, wie ein ausführbares Fluss-Diagram..

ah ja... also ich bastel mir dann so ein diagramm (hab da mal welche gesehen die einem programmablaufplan ähnlich sah) und das kann dann direkt ausgeführt werden?

dann könnte man ja ganze programmteile schreiben nur durch angabe solch eines diagrammes...

lieg ich da richtig?
habt ihr mal ein visuelles beispiel parat?

02.11.2006 - 10:59 Uhr

http://www.divil.co.uk/net/

hat einige nette componenten aber recht teuer find ich und kein großes bundle (nur rabatt)

02.11.2006 - 10:57 Uhr

könnte mir jemand mit einfachen worten erklären worum es sich bei dem workflow eigentlich handelt?

steh da aufm schlauch irgendwie...

01.11.2006 - 15:37 Uhr

"Entwarnung": Soeben haben wir herausgefunden (nach elendig langem suchen), dass die OnPaint Methode eines Buttons im Compact Framework (sorry, hätte ich vielleicht erwähnen sollen unglücklich ) nicht überschrieben werden kann...

ja bleibt ja nun noch die möglichkeit sich in das paint-event einzuklinken, wie schauts denn damit aus?

01.11.2006 - 15:03 Uhr

hm, muß (?) in der überschriebenen methode nicht

base.OnPaint(e);

auftauchen an erster stelle?

01.11.2006 - 13:44 Uhr

Was gibt es zu gewinnen:
Nichts. Es soll einfach Spaß machen und ihr könnt zighundert User von eurem Können überzeugen

hm, wie wärs wenn der gewinner nen besonderen forentitel erhält?

01.11.2006 - 12:38 Uhr

gleiche breite bekommst du z.b. durch monospaced fonts, das sind solche wo jedes zeichen die gleiche breite hat
das wird üblicher weise z.b. bei editoren gern verwendet

mach dir mal mit "cmd" ne neue konsole auf, klick oben in der titelbar mit rechter maustatse drauf und auf eigenschaften... dann siehst du welche schriftart eingestellt ist
standard ist wohl eine rasterschrift, ansonsten gibts bei mir noch lucida console... sieht fast genauso aus

01.11.2006 - 07:50 Uhr

ich wußte bis eben garnicht das es sowas gibt^^

aber mir reicht der normale auch vollkommen... bin bb-codes auch gewohnt 😉

27.10.2006 - 09:14 Uhr

hm, das hat ich oben aber auch schon mal erwähnt mit mit dem typ Array... =)

26.10.2006 - 15:45 Uhr

naja biginteger funktioniert ja genauso... da arbeitest du auch größtenteils mit string und intern macht der das dann über arrays =)

26.10.2006 - 13:24 Uhr

also auf die schnelle fallen mir da 2. sehr wichtige ein:

  • c# ist eine komplette objektorientierte sprache
  • das .net framework hat unmengen an klassen die sehr viel funktionalität abdecken

zudem sei gesagt das du auch vb.net benutzen kannst, es gibt ja sehr viele sprachen mit denen du .net lauffähige assemblies erstellen kannst
wäre auch ein pluspunkt

von daher betracht es mal unter dem gesichtspunkt was bringt dir das .net framework und was bringt dir die gewählte sprache

ich glaube übrigens kaum das .net code schneller ist als vb6 code, aber du wirst in vb6 viel mehr frickelarbeit haben als mit .net, weil du teilweise eben dafür schon klassen hast

26.10.2006 - 09:17 Uhr

Original von Qwald
Hallo,
alternativ kannst du auch Strings verwenden.

Es gibt diverse Klassen, die schnell mit Strings rechnen können, wobei man beliebig große Zahlen mit beliebig großer Genauigkeit rechnen kann.
Diese Klassen sind auch noch recht schnell. Immer wenn du SSL verwendest, werden mit Zahlen im Maßstab 10^300 (300 Stellen) oder größer gerechnet, und zwar auf die letze Zahl genau.

(Beliebig Groß: Je nach Platz auf dem Heap)

kannst du auch ein Beispiel oder Namen solcher Klassen nennen?

BigInteger ist übrigens ein guter Tip. In Java gibts die Klasse schon mitgeliefert, frag mich warum das bei .NET nicht der Fall ist o.O

25.10.2006 - 10:36 Uhr

die beste und einfachste lösugn ist einfach folgende:
schau dir genau an was der flschenhals bei dir ist und kauf dir entsprechend neue hardware

alels andere is gefrimmel und schränkt dich woanders wieder ein 😉

eventuell kannst du ne zeilang leben mi tdienste abschalten, hintergrundanwendungen schließen, niedrige details usw. aber dsa drückt den spielspaß enorm.

schau dir an was du für ne cpu hast, grafikkarte und ram und handle entsprechend

ich fänds toll wenn bei neuen spielen immer ein hardwaregutschein mit bei liegt^^