Arg...das wars.
Danke
bruncol
verwendetes Datenbanksystem: Access
Hierbei verwende ich eine datengebundene Tabelle, und ein mit dem Designer eingefügtes DataGridView.
Ich versuche bei einer Tabelle per Code alle Enträge zu löschen:
customerDataSet.Addresse.Clear();
addrTableAdapter.Update(customerDataSet.Addresse);
Leider sind nach einem erneuten fill Aufruf alle Einträge wieder da, also nicht in die Datenbank zurückgeschrieben.
Manuelles zeilenweise löschem im DataGridView geht problemlos.
bruncol
Für eine Anwendung mit mehreren Clients wollte ich die Kommunikation mit dem Server über Remoting realisieren. Ich habe die Kommunikation auch eigentlich schon fertig gehabt, bis mir aufgefallen ist, dass ich eigenlich CAO verwenden muß da jeder Client seine eigenen Daten hat.
Leider habe ich kein CAO Beispiel gefunden, bei dem Clientdaten im GUI-Kontext vom Server übernommen werden. Wie kann der Server z.B. ein Event installieren, daß ihm:
Im Moment erzeugt der Server ein Array von Objekten und jeder Client kennt seinen Index über den er auf seinen Bereich zugreift. Auch wenn die Anzahl der Clients bekannt ist und jeder Client kooperativ ist (nicht in fremden Datenbereichen rumpfuscht), ist das eine zwar einwandfrei funktionierende aber technisch unbefriedigende Krücke.
Leider hat mir der (ansonsten sehr informative) Remotinghelper auch nicht auf die Sprünge geholfen.
Hi,
kann man irgendwo einstellen, dass VS 2008 als Vorgabe für neue Projekte und konvertierte Projekte .Net 2.0 verwendet?
bruncol
Hi, JuyJuka,
*nicht raus rück will* Quellcode kann man im Hinzufügen-Dialog am Rand des Hinzufügen-Buttons ein DropDown-Menü aufrufen und dort "Als Verweis hinzufügen",
Mann ist das versteckt, genau das habe ich gesucht.
schauder Das ist aber echt eine Schei*-Lösung, bringt nur Probleme.
Ich werd's überleben 😉
Danke.
bruncol
Hallo,
ich brauch mal einen Hinweis (oder Link) wie ich in Visual Studio (2008/2005) am besten gemeinsamen Quellcode verwalte.
Ich habe verschiedene Klassen, die in vielen Projekten vorkommen. Wenn ich bei einem neuen Projekt über Hinzufügen/Vorhandenes Element den Quellcode dieser Klasse einbinde, wird die Datei in den Projektordner kopiert. Ich will aber eigentlich keine lokale Kopie, sondern einen zentralen Ordner, auf den alle Projekt e zugreifen. Änderungen (Erweiterungen) die ich während der Bearbeitung eines Projektes mache, kommen dann allen Projekten zugute.
Ich möchte diesen Code nicht in separate DLLs kompiliert haben.
bruncol
Hallo herbivore,
kam mir schon sehr merkwürdig vor, aber man glaubt ja doch erst einmal an eigene Fehler und sucht nach einer unabhängigen Instanz.
Da muss ich mir wohl einen Workaround basteln. 🙁
Danke für den Hinweis.
bruncol
Hallo zusammen,
beim Drehen einer Bitmap, die aus einer Monochrom BMP Datei geladen wurde habe ich bei bestimmten Bildbreiten einen Versatz von bis zu 8 Pixeln und einen schwarzen Streifen von eben dieser Breite. Wurde die Bitmap (z.B. von Paint) im Format 24 Bit Bitmap gespeichert, tritt das Problem nicht auf.
Soweit ich das erkennen konnte tritt das bei Bildbreiten mit Width Modulo 16 > 7 auf.
Ich habe mir z.B. mit Paint eine neue Bitmap mit Attribut Breite 152, Höhe 148 Pixel und Farben=Schwarzweiß erzeugt und mit folgender Routine bearbeitet:
Bitmap SourceImage = new Bitmap("testimg.bmp");
Bitmap RotatedImage = new Bitmap(SourceImage.Width, SourceImage.Height);
Graphics g = Graphics.FromImage(RotatedImage);
g.TranslateTransform(SourceImage.Width, SourceImage.Height);
g.RotateTransform(180);
g.DrawImage(SourceImage, 0,0);
zur Anzeige dann noch :
RotatedImage.Save("rotated.png", ImageFormat.Png);
pictureBox1.Image = RotatedImage;
Mit Bildbreite 151 Pixel ist alles OK.
Habe ich da etwas falsch gemacht?
bruncol
Original von noi76
Unter WinXP ist die Redist-Datei vom Installer eine andere, wie unter Win98.
und nennt sich Instmsia.exe
bruncol
Falls du nur so ein tool haben möchtest, so empfehle ich dir:
NetSetMan zur Verwaltung von verschiedenen IP-Settings, genial für den IT-Nomaden mit seinem Notebook.
Ansonsten gibt es für den Zugriff auf solche Daten System.Management:
ManagementObjectSearcher NetworkInfo = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");
foreach (ManagementObject mo in MOC)
{
Console.WriteLine(mo["Description"].ToString());
Console.WriteLine(mo["MACAddress"].ToString());
foreach (string ip in (string[])mo["IPAddress"])
{
Console.Write(ip);
}
Console.WriteLine();
foreach (string isub in (string[])mo["IPSubnet"])
{
Console.Write(isub);
}
Console.WriteLine();
}
Die Ermittlung der unbenutzten IP-Adressen kann dir das Betriebssystem leider nicht abnehmen, allenfalls die ARP-Tabelle mag hier Einträge der aktuellen Kommunikationsteilnehmer des Netztes haben. Schweigsame Rechner sind hier allerdings nicht verzeichnet.
Hier hilft nur, das Netz systemmatisch zu pingen und erhaltene Antworten aus der Freiliste zu streichen. Da mancher Host aber ICMP-Request aus Sicherheitsgründen nicht beantworten möchte, geht das manchmal in die Hose.
Um ein Netzwerk in vertretbarer Zeit abzugrasen muss man schon eine große Anzahl von Threads mit einem ping für die möglichen Adressen absetzten und jeweils den Netzwerktimeout abwarten.
Auch hier ein fertiges Tool Namens Angry IP Scanner.
bruncol
Die MAC-Adresse ist eine Hardwarekennung der Netzwerkkarte und auch dort gespeichert. Sie kann prinzipell erstmal (wie blackcoin schon sagt) nicht verändert werden, sondern wird vom Hersteller vorgegeben und in EEPROM gespeichert. Manche neuere Karten erlauben allerdings die Modifikation dieser Kennung weshalb ein MAC-Filter in einem WLAN-Accesspoint nicht unbedingt sicher ist.
Hierzu gibt es vermutlich in der Hacker-Szene geeignete Tools, ich kann mir aber nicht vorstellen, dass die Änderung aus Managed-Code möglich ist.
Abfragen kann man die MAC Adresse allerdings z.B. über
ManagementClass NwAdapter = new ManagementClass("Win32_NetworkAdapter");
NwAdapter.GetInstances() liefert dann eine Collection in der auch ein Eintrag "MACAddress" steht.
bruncol
Hallo talla,
Hier :
> gabs übrigens schon mal nen Thread zu der gleichen Fehlermeldung, ob die weitere Diskussion dir hilft musst mal sehen.
hat zumindest gezeigt, dass hier in der Tat verschiedene Vorgehensweisen bzw. Erwartungen des Verhaltens denkbar sind.
(hatte nur nach 'Delegate Vererbung' gesucht und nichts gefunden 🙁 )
bruncol
Hallo Talla;
das kann ich nicht nachvollziehen,
denn
public class baseAClass
{
// public event TestHandler ahandler;
}
public class derivedAClass : baseAClass
{
public event TestHandler ahandler; // herhin verschoben
public bclass bObject;
public void ExecuteA()
{
bObject = new bclass();
bObject.bhandler += ahandler; // kein Compilerfehler:
bObject.ExecuteB();
}
}
funktioniert wie erwartet.
Die Meckerei des Compilers liegt offensichtlich nur darin begründet, dass
public event TestHandler ahandler;
in der Basisklasse liegt.
Wie soll ich denn Deiner Meinung nach
...die Delegates die an A hängen an B hinzufügen.
bruncol
Bei der Bearbeitung von Events bin ich auf eine Fehlermeldung des Compilers gestossen, die mir nicht ganz einleuchten will:
Ein Objekt (A) soll einen Eventhandler zwischenspeichern, um ihn bei Bedarf an ein anderes Objekt (B) weiterreichen zu können.
public delegate void TestHandler(string str);
public class baseAClass
{
public event TestHandler ahandler;
}
public class derivedAClass : baseAClass
{
public bclass bObject;
public void ExecuteA()
{
bObject = new bclass();
bObject.bhandler += ahandler; // Compilerfehler:
bObject.ExecuteB();
}
}
Dies verweigert der Compiler, sobald A die Speicherung im Basisobjekt vornehmen soll:
'Das Ereignis "WindowsApplication1.baseAClass.ahandler" kann nur links von += oder -= stehen (es sei denn, es wird innerhalb des Typs "WindowsApplication1.baseAClass" verwendet).'
hier soll das Event erzeugt werden:
public class bclass
{
public event TestHandler bhandler;
public void ExecuteB()
{
bhandler("call from b");
}
}
und irgendwo der Aufruf und ein Handler:
public void Info(string str)
{
System.Console.WriteLine(str);
}
public void TestObjcet()
{
derivedAClass aObject;
aObject = new derivedAClass();
aObject.ahandler += Info;
aObject.ExecuteA();
}
Nein, ich suche keine Lösung für das Problem (ich muss das Setzen des Handlers in die Basisklasse verschieben), aber aus welchem Grund
gibt es diese Einschränkung? Die normalen Vererbungsregeln sollten das doch eigentlich zulassen?
bruncol
Hallo Clemer,
hierzu hat MS die Language Packs für das NET Framework (ca. 1,8MB je Sprache) im Angebot.
Ich habe hier neben der englischen Vollinstallation noch deutsch und italienisch installiert.
Suche am besten bei MS nach
NET Framework Language Pack 2.0
bruncol