Laden...

Forenbeiträge von Tankian Ingesamt 81 Beiträge

13.06.2005 - 23:08 Uhr

Hallo,

und zwar dreht sich meine Frage eben um XCopy Deployment.
Wie wird dabei eine Art Installation, bzw. Deinstallation durchgeführt?

Nehmen wir zum Beispiel an, dass meiner Anwendung spezielle Dateitypen zugewiesen werden sollen, oder das meine
Anwendung im ContextMenu des Explorers auftauchen soll, etc.. eben alles typischer Beispiele für einen Registry-Eintrag.

Da man ein Programm nun nur noch kopieren muss, müsste man sich dann halt beim ersten Aufruf des Programms selbst um die
Einträge kümmern, soweit kein Problem. Aber was ist beim Löschen? Es wird ja angepriesen, dass man nur noch das Verzeichniss
löschen muss und die Anwendung ist deinstalliert? Wo nehme ich da die Registry-Einträge wieder raus?

Mir ist natürlich sehr wohl bewusst, dass man die Registry nicht mehr benutzen soll, aber gibt es überhaupt einen
vollwertigen Ersatz? Meine Frage dreht sich aber nicht nur im Speziellen um die Registry, könnte genauso gut ein
Dienst sein, den das Programm mit sich bringt.

Wie wird sowas also verwirklicht?

grüße

30.05.2005 - 16:00 Uhr

Meiner Meinung nach ist der größte Vorteil von C# eben, dass es mit .NET entwickelt wurde und
sozusagen das Framework wieder repräsentiert.

So meine ich mal gelesen zu haben, dass es lange Zeit nicht sicher war ob Visual Basic.NET
überhaupt Generics bekommen würde (zwar gibts die jetzt in VB.NET, aber deren Syntax is
sowas von derart abscheulich - eigene Meinung).

Ein anderes Beispiel wäre Mono, Möglichkeit zur Kompilierung von C#-Code gabs von Anfang an,
VB.NET kam erst nach und nach dazu.

grüße

29.05.2005 - 22:28 Uhr

Original von snoopy
Wie sieht es mit Mono aus, auf Linux speziefische Funktionen zuzugreifen? fork, oder exec ? popen? Sprich die Linux speziefischen C funktionen.

Guck dir dazu mal die Klasse Mono.Unix.Syscall an.

Original von Nostalb
Bei mir funktionierts, welche Version verwendest du?

Klappte bei mir ebenfalls, mit Version 0.5.1 und 0.6 nicht, wobei es vor 1/4 Jahr mal geklappt hat ..
edit: Hab grad Version 0.7 installiert, mit der das bereits wesentlich besser funktioniert 🙂 ..

grüße

29.05.2005 - 17:14 Uhr

Falls ich dich richtig verstanden habe, könntest du dein Projekt ja hosten lassen. Bekommst je
nachdem welchen Host du benutzt Dienste wie CVS, Subversion, ich glaub sogar Webspace
mit PHP/MySQL, etc ..

Zwei bekannte Vertreter:
http://sourceforge.net/
http://berlios.de

Du könntest die Projektverwaltung auch selbst aufsetzen,
dazu könntest zum Beispiel trac verwenden.

grüße

29.05.2005 - 17:01 Uhr

Da SharpDevelop auf SourceForge.net gehostet wird, würde ich halt dort zu suchen
beginnen. Wenn dann wirst es dort finden, denke also nicht, dass es bereits raus ist.
http://sourceforge.net/projects/sharpdevelop/

grüße

28.05.2005 - 22:08 Uhr

Hallo,

falls dir für die Arbeit .NET 2.0 zur Verfügung steht, würde ich dir empfehlen mal einen Blick
auf die Klasse OptionalFieldAttribute zu werfen. Ansonsten bleibt dir wohl nichts anderes übrig,
als ISerializable selbst zu implementieren.

grüße

MSDN Magazine: Advanced Serialization

24.05.2005 - 23:14 Uhr

Hallo Tankian,

OT: Wo kaufst du deine PCs? Die Zeiten, in denen man eine Windows-Lizenz mitkaufen "musste", sind doch schon längst vorbei.

Ich bau sie mir in der Regel selbst zusammen, insofern bekomm ich eigentlich nur
mehr Angebote von Werbung etc.. mit. Kann also auch gut sein, dass ich mich irre ..

Dann wird es sich halt tomuc83 nicht zulegen, bzw. all jene Leute die ähnlich
viele Vorurteile haben aber wissen, wie man WindowsXP installiert.

24.05.2005 - 18:12 Uhr

Original von tomuc83:
ich glaub ich werd Lonhorn so lang wie möglich beukutieren!

Und spätestens sobald du dir einen neuen PC kaufst, hast es dann doch wieder. Ich schätze mal
80% der Benutzer is es recht egal, welches Betriebssystem sie vorinstalliert haben, hauptsache
alle bisherigen Spiele und Anwendungen laufen .. und somit ist der Erfolg von Longhorn ja quasi
genauso vorprogrammiert.

Kann übrigens auch nicht bestätigen, dass Longhorn dermaßen unstable ist. Bei mir liefs eigentlich
immer ohne Probleme (außer ich hab mal ein versucht ein anderes .NET Framework zu installieren)
und konnte z.B: sogar meinen Brenner nutzen, hab aber einen etwas älteren Build ..

23.05.2005 - 15:05 Uhr

Hallo,

danke hat bestens funktioniert. Aber warum meine Version nicht, bzw wie
wendet man [MarshalAs(UnmanagedType.LPStruct)] denn sonst an?

grüße

22.05.2005 - 22:45 Uhr

Hallo,

hab heute vergeblich versucht einen Wrapper um eine C-API zu basteln, habe irgendwie Probleme
beim Marshalling schätze ich mal, da die Werte vollkommener Blödsinn sind, aber keine Exception
oder ähnliches auftritt.

Ich hoffe mal, ihr könnt C soweit, das ihr folgenden Code versteht, dürfte aber eigentlich kein Problem sein.


#include <stdlib.h>
#include <stdio.h>

typedef struct {
	int pay;
	int hours_of_work;
} Employee;

Employee* createEmployee(int pay, int hours_of_work) {
	Employee* employee = (Employee*)malloc(sizeof(Employee));
	
	employee->pay = pay;
	employee->hours_of_work = hours_of_work;
	
	printf("pay:  %i \n", pay);
	printf("work: %i \n", hours_of_work);
	
	return employee;
}

void deleteEmployee(Employee* employee) {
	free(employee);
}

using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential)]
internal struct Employee 
{
	public int Pay;
	public int HoursOfWork;
}

public class AppEntry 
{
	[DllImport("Employee", EntryPoint="createEmployee")]
	[return: MarshalAs(UnmanagedType.LPStruct)]
	private static extern Employee CreateEmployee(int pay, int hoursOfWork);
	
	[DllImport("Employee", EntryPoint="deleteEmployee")]
	private static extern void DeleteEmployee([MarshalAs(UnmanagedType.LPStruct)] Employee employee);

	public static void Main() {
		Employee e = CreateEmployee(5, 5);
		
		Console.WriteLine("Pay:         {0}", e.Pay);
		Console.WriteLine("HoursOfWork: {0}", e.HoursOfWork);
		
		DeleteEmployee(e);
	}
}

Ausgabe:
pay: -16805528
work: 5
Pay: 154019616
HoursOfWork: 153581768

gewünschte Ausgabe:
pay: 5
work: 5
Pay: 5
HoursOfWork: 5

Wo könnte der Fehler liegen?

Schonmal danke.

19.05.2005 - 18:00 Uhr

Original von herbivore

  
foreach (String str1 in astr1) {  
   foreach (String str2 in astr2) {#  
      if  (str1 == str2) {  
         goto breakOuter;  
      }  
   }  
}  
breakOuter:  
  

Wenn ich mal bei solchen Konstruktionen angekommen bin,
habe ich daraus immer zumindestens folgendes geschrieben:


public static bool FindString(string[] str1, string[] str2) {
    foreach (string s1 in str2) {
        foreach (string s2 in str2) {
            if(s1 == s2) {
                return true;
            }
        }
     }

    return false;
}

Bzw. hab dann eben entsprechend ummodelliert, damit ich zumindestens auf ein
Ergebniss wie oben gekommen bin. Womit wir wieder beim Thema sind, ob ein
return besser ist als ein break, goto, .. 😉

grüße

16.05.2005 - 20:50 Uhr

Das C# unter Windows schneller als Java ist, ist aber irgendwie auch nicht zu verdenken. Um einen
fairen Vergleich zu bekommen, müsste man das ganze auch noch unter Solaris testen ..

Übrigens ist die zum Test herangezogene gcc-Version veraltet. Die aktuelle 3.4.* Version soll in Punkto
Geschwindigkeit noch einiges drauflegen (heise.de) und wird somit C# sehr wohl wieder einholen ..

Eben wiedermal das übliche Problem mit Benchmarks ..

13.05.2005 - 17:39 Uhr

Du musst (wie bei .NET auch) die Assembly angeben, in der der Namespace gefunden werden kann.

mcs -r:System.dll -r:System.Windows.Forms.dll DeineDatei.cs
// oder
gmcs -r:System.dll -r:System.Windows.Forms.dll DeineDatei.cs

grüße

12.05.2005 - 17:45 Uhr

Ist im Prinzip dank Reflection ganz einfach.


public void SetValue(string fieldName, object content) {
    // zuerst suchen wir uns das Feld raus, das den angegebenen Namen hat ..
    FieldInfo field = typeof(this).GetField(fieldName);
    if(field == null) {
        // in diesem Fall, haben wir aber keines gefunden
        // ...
    }

    // .. und anschließend setzen wir dessen Wert neu
    field.SetValue(this, content);
}

Hoffe, ich hab dich richtig verstanden.

grüße

12.05.2005 - 17:30 Uhr

WMI Reference: Win32_NetworkAdapterConfiguration

Wie du erkennen kannst, ist DefaultIPGateway eine Eigenschaft und
keine Methode. Die Methode, die du suchst lautet SetGateways.


mngParam = mngObj.GetMethodParameters("SetGateways");
mngParam["DefaultIPGateway"] = new string[] { textBox3.Text.Trim() };
mngObj.InvokeMethod("SetGateways", mngParam, null);

grüße

28.04.2005 - 16:35 Uhr

[edit]Stand nur Blödsinn hier ..

24.04.2005 - 15:05 Uhr

Folgendes bereits versucht ?

MyOLEDB

24.04.2005 - 12:48 Uhr

Ich weiß nicht ob folgendes funktioniert, konnte es nicht testen.


public class MyNetworkStream : NetworkStream
{
    public MyNetworkStream(NetworkStream stream) 
            : base(stream.Socket) {

    }

    public bool Connected {
        get {
            return this.Socket.Connected;
        }
    }
}

grüße

24.04.2005 - 11:22 Uhr

Diskussionen ob PHP, etc .. "echte" Programmiersprachen sind, gabs doch bereits schon oft genug. Meiner Meinung nach ist jede Skriptsprache genauso
eine Programmiersprache. Hat doch nichts mit der Sprache ansich zu tun, ob sie kompiliert oder interpretiert wird (ich hab z.B von einem C-Interpreter
gehört, würdet ihr deswegen C als Skriptsprache darstellen?). Deckt sich übrigens mit der Aussage in Wikipedia (http://de.wikipedia.org/wiki/Skriptsprache).

22.04.2005 - 23:09 Uhr

Ach ja, was ich vergessen habe zu erwähnen. Ich meine natürlich "Offline Installer".

Ansonsten hab ich bisher selbst wieder das hier gefunden (falls jemand ein ähnliches Problem wie icht hat / haben wird):

Visual Basic 2005 Express Edition Community Technical Preview
Visual C# 2005 Express Edition Community Technical Preview
Visual C++ 2005 Express Edition Community Technical Preview
Visual J# 2005 Express Edition Community Technical Preview
Visual Web Developer 2005 Express Edition Community Technical Preview
SQL Server 2005 Express Edition

.NET Framework 2.0.50215.45

Wenns nicht anders geht, muss ich mir halt mit Windows ne Internetverbindung
einrichten, und verwend halt den oben angeführten Link.

grüße

22.04.2005 - 21:14 Uhr

Bei mir fing allls vor ungefähr 1 1/2 Jahren an.

Ging von C, über C++ nach C#, mit ein paar Spritzern Java. Zukünftig werde ich dann im Wesentlichen
nur noch C# und Java programmiern, gegebenenfalls noch ein wenig C++\CLI. (Bin also ein absoluter
Fan, der C-ähnlichen Sprach Familie)

grüße

22.04.2005 - 21:05 Uhr

Ich hab bisher für sowas immer stinger (von McAfee Inc.) benutzt, kann aber keinen Vergleich zu anderen angeben.
Wobei das kein Antivirus Programm, in dem Sinne ist, dass es ständig bewacht, sondern eher ein Tool, das man
verwendet, wenn man bereits "infiziert" ist. (Hab halt mal angenommen, dass du sowas gesucht hast)

Falls das nicht ist, was du suchst, kann ich vom Hören-Sagen her NOD32 empfehlen.

grüße

22.04.2005 - 19:45 Uhr

Seit dem Release der neuen Beta Version, kann ich leider die letzte Ausgabe nicht mehr finden.
Auch in den Archiven habe ich bereits gesucht. Allerdings bräuchte ich genau diese und keine
andere, da das die einzige ist, die mit dem March CTP von Avalon und Indigo "zusammenspielt".

Falls es sich nicht finden lässt, dann nehm ich doch mal an jemand von euch hat die bestimmt
wo rumliegen, und vielleicht sogar Zeit sie irgendwo hochzuladen.

Danke

04.04.2005 - 21:16 Uhr

UInt16 ist genauso wenig CLS-konform, short ist ja nur ein Alias in C# für UInt16. Ansonsten ist es ein und der selbe Datentyp.

Naja, ausprobiert hab ichs jetzt nicht, aber wiederum gibts eine Doku für
UInt** Typen im .NET Framework für mehrere Sprachen.

grüße

04.04.2005 - 20:47 Uhr

Genauso ist es mit Generics, die wenigsten Sprachen unterstützen sie (im Moment nur C#?).

Ich glaub eher in allen 5 .NET Sprachen vom Hause Microsoft. Zumindestens gibts für
jede Sprache eine Dokumentation zu den Generic-Klassen. Bin mir bei VB.NET und
C++/CLI sogar ziemlich sicher.

Ich sag mal so, du brauchst dir keine Sorgen machen über nicht CLS konforme Klassen, denn
zwar hat man in J#, und VB.NET imho auch, keine unsigned Datentypen zur Verfügung, aber es
bleibt ja immerhin noch System.UInt16 etc. über ..

Weiteres Beispiel für eine nicht CLS konforme Klasse wär zum Beispiel:


public class Person 
{
    public string name {
        get { / * ... */ }
    }

    public string Name {
        get { / * ... */ }
    }
}

grüße

04.04.2005 - 14:49 Uhr

Ganz genau.

03.04.2005 - 11:51 Uhr
  
// ...  
  
factorx = this.Size.Width / this.oldwidth;  
factory = this.Size.Height / this.oldheight;  
  
// ...  
  

Ich nehm mal an, dass oldwith und oldheight vom Typ int sind. Wenn ja, dann ist das auch bereits
dein Problem, Integer Division.

2 / 3 == 0
3 / 2 == 1

Das Ergebniss wird dann erst implizit nach float gecastet, somit bekommst du als Faktoren
wahrscheinlich eh nur 1.0 (Größe des Controls bleibt gleich) und 0.0 (Control verschwindet).
Wobei ich eh keinen Sinn darin sehe ein Control um einen Faktor vergrößern zu lassen,
entweder es vergrößert sich genauso wie die Parent-Form oder gar nicht.

Eine Lösung dafür wäre halt:


factorx = (float)this.Width / this.oldwith;
factory = (float)this.Height / this.oldheight;

Wobei ich dir trotzdem, wie herbivore bereits erwähnte zu Docking, bzw Anchoring raten würde.
So könnte SimonKnight6600s Beispiel auch so aussehen:


private void InitializeComponents() {
    // ...   

    // mit Anchoring ...
    richTextBox.Size = new Size(this.ClientSize.Width, this.ClientSize.Height - 20);
    richTextBox.Anchor = AnchorStyles.Left  | AnchorStyles.Top |
                         AnchorStyles.Right | AnchorStyles.Bottom;

    // .. oder mit Docking
    this.DockPadding.Bottom = 20;
    richTextBox.Dock = DockStyle.Fill;

    // ...
}

Falls mans mit Events machen will, wird allerdings normalerweise das Layout Event
gegenüber dem Resize Event bevorzugt.

Docking, Anchoring und OnLayout

grüße

02.04.2005 - 23:47 Uhr

Ich arbeite eher so im Bereich von 19:00 - 22:00. Ab 22:00 bin ich dann meist bereits zu gelangweilt,
irgendwas zu programmieren. Heißt aber nich, dass ich ab dann nicht mehr produktiv bin, ab dann
gehts meistens los mit Artikeln im Netz, eBooks und absoluter Favorit Programmierbücher im Bett.

Je nachdem wieviel in der Schule zu tun ist, geht sich halt dann das ein oder andere nicht mehr aus ..

Ich selbst halt mich eigentlich Wach mit ner gelegentlichen Runde durchs Haus, mal runter ins
Erdgeschoss und ein Glas Wasser trinken, hilft eigentlich ganz gut.

02.04.2005 - 22:01 Uhr

Auf die Idee wär ich auch nicht gekommen zu erwähnen, dass ich auf Forum Xxx als Yyy unterwegs
bin, erschien mir irgendwie etwas komisch. Vielleicht halte ich da wohl manche Firmen für etwas zu
konservativ ..

Hat mir auf jeden Fall sehr für meine nächsten Bewerbungen geholfen, danke !

02.04.2005 - 21:51 Uhr

Nochmals danke.

Ich kann dir pauschal einige MVPs sagen die auf ihrem Bereich durchschnittlich qualifiziert sind.

Es ist wohl schwer eine Auszeichnung so exklusiv zu halten, dass
es keine "negativ-Exemplare" dafür finden könnte.

Wie stehts mit privaten Projekten ? Nehmen sich Firmenchefs Zeit, diese zu beurteilen, müssen
zwangsweise mehrere daran mitgearbeitet haben, zwecks der Teamfähigkeit ?

Ich nehm mal an, dass du in deinem Beruf häufiger mit Bewerbungen zu tun hast, was sind so typische
Fähigkeiten, Erfahrungen und Projekte die der- oder diejenige vorweisen kann ?

grüße

02.04.2005 - 21:24 Uhr

Erstmals danke für die Antwort, klärt wirklich einiges!

Im MS Umfeld gibt es ja viele MCPs aber sagen die wirklich was über die Qualtität der Person aus?

Das hört man natürlich als Nummer 1 Grund, aber es gibt doch auch Zertifikate / Auszeichnungen,
die man nicht durch simples "auswendig lernen" bekommen kann, z.B: ein MVP (ist wohl ein schlechtes
Beispiel, aber das einzige, das mir momentan einfällt). Oder wird man dann als überqualifiziert und
somit teuer abgestempelt, bzw. gibts überhaupt ein überqualifiziert ?

grüße

02.04.2005 - 19:43 Uhr

Hab dazu selbst auch eine Frage. Ist es denn Firmen denn egal, wenn man Ferialpraktika etc.
vorweisen kann. Immerhin kann ein Student halt mal nichts andres haben als sowas (wobei ich
sogar eine Außnahme kenne).

Beziehungsweise hab auch tatsächlich schon öfters gehört, dass gerade in Deutschland
Zertifikate ziemlich wertlos sind. Zertifikate wären ja das ideale Mittel mit dem Studenten
beweisen können das sie was drauf haben, warum wird sowas ignoriert? In anderen Ländern
wird ja anscheinend Wert auf sowas gelegt.

grüße

01.04.2005 - 16:39 Uhr

Geht soweit ich weiß leider nur mit P/Invoke.


using System.Diagnostics;
using System.Runtime.InteropServices;

// ...

[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr handle);

// ...

Process notepad = Process.Start("notepad");
SetForegroundWindow(notepad.MainWindowHandle);

grüße

30.03.2005 - 21:13 Uhr

Ne, mir gehts drum, wie ich angeben kann, dass gilt:


class T : U
{
    // ..
}

Umgekehrt is es ja immerhin möglich:


class CovariantList<T> : List<T>
{
    // ...

    public void Add<U>(U item) where U: T {
        // ...
    }

    // ...
}

trotzdem danke

30.03.2005 - 20:28 Uhr

using System;
using System.Collections.Generic;
 
public class CovariantList<T> : List<T>
{
    // ...    

    // funktioniert natuerlich nicht, aber ich hoff ihr wisst wonach ich suche ..
    // umgekehrt is es ja immerhin möglich ..
    public CovariantList<U> Convert<U>() where U: base T {
        CovariantList<U> list = new CovariantListList<U>(this.Capacity);
 
        IEnumerator<T> enumerator = this.GetEnumerator();
        while(enumerator.MoveNext()) {
            list.Add(enumerator.Current);
        }
 
        return list;
    }
}

grüße

_Btw. is wohl mal ein Update für den Syntax Highlighter nötig 🙂 _

30.03.2005 - 10:32 Uhr

string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
Console.WriteLine(path);

Environment.SpecialFolder Enumeration

grüße

29.03.2005 - 15:34 Uhr

Ein wenig Doku lesen hat aber noch niemandem geschadet ..


// alle nötigen Namespaces um mein Beispiel ausführen zu können ..
using System;
using System.Reflection;
using System.Collections.Generic;

29.03.2005 - 14:12 Uhr

// Kannst auch gerne selber effizienter machen, wobei ich denke dass nicht genug
// Assemblys mit dem .NET Framework mitgeliefert werden um einen Unterschied
// in der Performance zu merken ..
public static AssemblyName GetAssembly(string name, IEnumerable<AssemblyName> assemblys) {
    foreach(AssemblyName assembly in assemblys) {
        if(assembly.Name == name) {
            return assembly;
        }
    }

    return null;
}

// ..

AssemblyName[] assemblys = Assembly.GetEntryAssembly().GetReferencedAssemblies();

AssemblyName mscorlib = GetAssembly("mscorlib", assemblys);
Console.WriteLine(mscorlib.Version);

28.03.2005 - 22:30 Uhr

Ich rauche und trinke nicht.

Dafür ist das einzig was ich mache um gesünder zu leben,
auf meinen Rücken zu achten, wenn ich zu Hause vor dem
Computer im Sessel sitze 😉.

28.03.2005 - 18:33 Uhr

Wird zwar nicht die Antwort sein, die du hören willst, aber im Prinzip gar nicht.
Alles was du machen kannst, is den Code unlesbar machen,
dazu gibts sogenannte Obfuscator:

Dotfuscator

28.03.2005 - 10:08 Uhr

Falls ich das jetzt richtig verstanden habe, könntest du das vielleicht so machen:


public class AccountEvent
{
	private Account account;

	public AccountEvent(Account account) {
		this.account = account;
	}

	// Ich weiß nicht was für nen Timer du verwendest, daher 
	// müsstest selbst noch die Signatur anpassen.
	public void Handler(object sender, EventArgs e) {
		// Die Account-Infos hast jetzt mit this.account zur Verfügung ..
	}
}

// ...

public void CreateCallbacks() {
	// Hier eben auch dein benötigtes Delegate verwenden ..
	timer1 = new Timer(new EventHandler(new AccountEvent(account1).Handler));

	// ...
}

Oder du könntest eventuell auch System.Threading.Timer verwenden. Der
lässt einen einen Parameter angeben, könnte dann in etwa so aussehen:


public void CreateCallbacks() {
	TimerCallback callback = new TimerCallback(Connect);

	timer = new Timer(callback, account1, 2000, 2000);

	// ...
}

// ...

public void Connect(object acc) {
	Account account = acc as Account;

	if(account != null) {
		// ...
	}
}

[edit]
Achso, du wolltest ja den Timer und nicht die Accounts ..
naja gut, dann siehe oben
[/edit]

20.03.2005 - 22:30 Uhr

XmlSchemaCollection Class
How Do I...Use XML Schema Collection?

Zwar hast dir den ersten Link schon angesehen, aber im
Beispielcode sieht man dann doch eh, wies geht.

20.03.2005 - 20:33 Uhr

Vielleicht hilft dir das weiter ...


// ungetestet
public static void PrintValidateError(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: ");
    Console.WriteLine("Severity: {0} ", e.Severity);
    Console.WriteLine("Message : {0} ", e.Message );
}

public static void Validate(XmlTextReader reader) {
    XmlValidatingReader validatingReader = new XmlValidatingReader(reader);

    validatingReader.ValidationType = ValidationType.Schema; // <----------
    validatingReader.ValidationEventHandler += 
        new ValidationEventHandler(PrintValidateError);

    while (validatingReader.Read())
        ;
}

grüße

20.03.2005 - 18:48 Uhr

Suchst in etwas sowas oder wie ?


private void btn_Click(object sender, EventArgs e) {
	this.Enabled = false;
	new Form().ShowDialog();
	this.Enabled = true;
}

20.03.2005 - 17:28 Uhr

Wenn du das mit Hashtables machst, müsste die
InitializeComponents() aber ein wenig anders aussehen ..


private void InitializeComponents() {
    // ...

    htControl["textBox1"] = textBox1;
    htControl["textBox2"] = textBox2;
    htControl["textBox3"] = textBox3;

    // ...
}

Also ob meine Implementierung ein Flaschenhals gewesen wäre 😉
Aber na gut, dann eben mit Hashtable ..

20.03.2005 - 17:03 Uhr

KRambo:

Soweit ich sehen konnte, is es in der 1.1er Version nicht verfügbar, da die
Klasse Control.ControllCollection keinen Indexer anbietet, der einen string
als Parameter erwartet. Könntest dir aber im Prinzip selbst auch irgendwie
schreiben.


// ungetestet
private Control GetControl(string name) {
	foreach(Control control in this.Controls) {
		if(control.Name == name) {
			return control;
		}
	}

	return null;
}

private void UpdateTextBoxes() {
    // ...

    for(int i = 0; i < numOfTextBoxes; ++i) {
        GetControl("textBox" + i).Text = updatedText;
    }
  
    // ...
}

Ist also jetzt im Prinzip das, was feadur vorgeschlagen hat, nur das es in
ner eigenen Funktion gelandet ist und der unnötige Downcast entfernt wurde.

grüße

20.03.2005 - 12:00 Uhr

In .NET 2.0 könntest du das auch in etwa so machen:


private void InitializeComponents() {
    // ...

    textBox1.Name = "textBox1";
    textBox2.Name = "textBox2";
    textBox3.Name = "textBox3";

    // ...
}

private void UpdateTextBoxes() {
    // ...

    for(int i = 0; i < numOfTextBoxes; ++i) {
        this.Controls["textBox" + i].Text = updatedText;
    }
  
    // ...
}

07.03.2005 - 16:22 Uhr

using CFSerialClass;

Darf ich mal annehmen, dass das ne 3rd Party Library ist ?

Hab nämlich bereits mal gelesen, dass wenn man solche Librarys nicht korrekt installiert
werden, eventuelle Referenzen nicht korrekt aufgelöst werden. Das Ergebniss ist dann
eine Exception wie du sie bekommen hast .. ist jetzt allerdings nur eine Vermutung ..