Laden...

Forenbeiträge von rasepretrep Ingesamt 103 Beiträge

26.09.2012 - 10:41 Uhr

@gfoidl:

Glaube nicht, dass das wirklich ein Problem darstellt, da bei einem Referenztypen in einem C# object nur platz für einen Zeiger im Objekt reserviert werden muss.

Aber ich lasse mich natürlich gerne eines besseren belehren ... 😉

25.09.2012 - 17:58 Uhr

Wenn Du ein 64 Bit Betriebsystem vorraussetzen kannst und die Anwendung auch als 64 Bit oder AnyCPU Compilierst, könnte dein Programm auch ohne Änderung des Codes funktionieren. Windows swappt ja schon von sich aus Daten bei Hauptspeichermangel auf die Swap Datei (also Festplatte oder besser SSD) aus.

Du scheiterst in deinem Fall also wahrscheinlich am 2gb Prozess Speicher Limit und das lässt sich am einfachsten mit einem 64 Bit Prozess umgehen.

Habe das auch schon mal bei einer Auftragsarbeit gemacht. Klar hätte man aufwendig das Programm umschreiben können. In dem Fall war es aber wesentlich günstiger einfach einen neuen 64 Bit Rechner abzustellen, der das erledigt.

18.04.2012 - 15:25 Uhr

meinst du wirklich eine dbase IV Datenbank oder eine Foxpro dbf Datenbank?
Für Foxpro dbf dateien musst du auf jeden Fall nen anderen Initstring und den Foxpro OLE Treiber verwenden.

13.04.2012 - 10:25 Uhr

Moin,

Ich habe änliches auch schon mal durchgeführt, dabei einfach den Impersonater aus folgendem Artikel benutzt :

A-small-C-Class-for-impersonating-a-User

Der funktionierte bisher tadellos

14.11.2011 - 14:46 Uhr

@xxxprod

Hehe, dann ist die Frage aber im falschen Forum gestellt 😉

14.11.2011 - 14:34 Uhr

Mir fallen da spontan 2 Möglichkeiten ein:

  1. selber bauen mit Usercontrols und Tablelayoutpanel

  2. XtraGrid von DevExpress nehmen (kostet aber Geld, ich glaube das war 400 Dollar pro Entwickler oder so). Was Du da beschreibst lässt sich in XtraGrid Worten als Master-Detail (für die Kategorien) und Card View (für die Bilder ) beschreiben.
    Wenn man das Xtragrid noch gar nicht kennt ist der Einarbeitungsaufwand aber auch nicht ohne. Dafür kann man das dann einfach erweitern, problemlos drucken etc.

03.11.2011 - 10:19 Uhr

Es ist möglich, nur nicht empfohlen. Deshalb ist es auch nicht über Intellisense verfügbar.

02.11.2011 - 16:23 Uhr

@winsharp93

Danke für die gute erklärung von GC.KeepAlive() , hatte mich schonmal gewundert warum es nicht so funktioniert wie schon von vielen missverständlich eklärt und von mir immer falsch verstanden...

Es müsste eigentlich GC.KeptAliveUntilHere() heissen. 😉

24.10.2011 - 15:28 Uhr

Port 995 wird normalerweise für Pop3 SSL/TSL verwendet. Bei einigen Emailprovidern funktioniert anscheinend auch normales pop3 über port 995 (bei Dir Arcor).

Probier doch mal port 110 bei gmx.

Alternativ gibts auch patches für pop3/ssl oder STARTTLS über port 995 für openpop.

24.10.2011 - 13:39 Uhr

Hmm der SpiltContainer ist doch eigentlich fürs resizen durch den user gedacht, oder?
Ein Kollege von mir hatte letztens mal ein Control mit 3 ineinander verschachtelten Splitcontainern. <rofl> - Da wäre das Tablelayoutpanel auf jeden Fall besser gewesen...

24.10.2011 - 13:26 Uhr

Also Wireshark konnte als ich es zum letzten Mal verwendet habe (vor ca. 2 Jahren) noch keine Daten über den Loopback 127.0.0.1 "mitsniffen". das stand aber auch damals irgendwo in der Doku.
Probiers doch einfach mal mit Client und Server auf unterschiedlichen Rechnern.

Es hilf auch nur den Port (53000 tcp ?) rauszufiltern über den die Sachen geschickt werden.
Das sis mit Wireshark recht einfach einzustellen.
Sonst gibts viel zuviel Müll, der einen gar nicht interesseiert.

24.10.2011 - 13:18 Uhr

nehme immer das Tablelayoutpanel für ein grobes Raster und setze danach in die Zellen immer Controls mit Anchor -> die Mischung machts 😉

23.08.2011 - 16:58 Uhr

Sonst kannst Du auch mal nach

serializabledictionary

googlen. Dann kannst Du nur deine dictionary Variable in der Klasse einfach durch das SerializableDictionary tauschen.

10.08.2011 - 12:23 Uhr

Hmm, die Problematik kommt mir bekannt vor.

Ich hatte damals auch eine extra Archivtabelle mit zusätzlicher Revisionsnummer generiert.

Dann fiel mir aber auch auf, dass das ganze noch denormalisiert werden muss wegen der referenzierten Daten, die sich natürlich auch mit Laufe der Zeit ändern können.

Da das in meinem Fall sehr Zeitaufwändig gewesen wäre und die Archivdaten nur als Backup benötigt werden habe ich die zu archivierende Klasse einfach via XML mit allen Abhängigkeiten serializiert und als Text in die Archivtabelle gesichert.

Meine Archivtabelle besteht also nur aus einem link auf den aktuellen Datensatz, der Revisionsnummer, Datum und einem text Feld das den XML- serialisierten Inhalt enthält.

18.07.2011 - 10:50 Uhr

Du bist schon fast da 😉

foreach (XmlNode xNode in xList) {

Console.WriteLine(xnode.Attributes["name"].Value);
Console.WriteLine(xnode.Attributes["value"].Value);

}
11.07.2011 - 08:45 Uhr

Nhibernate Reference Guide , Chapter 8. Inheritance Mapping 😉

29.06.2011 - 17:02 Uhr

Ich finde persönlich auch die htmltextbox bei codeproject ganz cool.
Für einen kleinen WYSIWYG Editor ganz brauchbar und man erhält HTML als Resultat..

25.05.2011 - 17:26 Uhr

Hallo,

durch 2 teilen müsste auch super und ohne ungenauigkeiten mit nem Float oder double gehen.

Ein double oder float wird ja gerade als x * 2^y gespeichert. Um durch 2 zu teilen muss also nur der Exponent um eins vermindert werden. Das ist ohne Rundungsfehler machbar.

26.04.2011 - 13:16 Uhr

Probier doch mal testweise

/Root/*/Nummer
15.04.2011 - 13:07 Uhr

mach doch einfach ein cmd prompt auf und probier
telnet <ip> 25
wenn da auch keine Antwort kommt kannst du den Fehler schon mal auf die Netzwerkkkonfiguration / Firewall eingrenzen.

11.04.2011 - 15:49 Uhr

Wir haben hier im Unternehmen nen MSSql Server und eine PostgreSql Datenbank in virtuellen Maschinen laufen.. funktioniert alles tadellos und schnell...

ABER

die Vorraussetzungen dass das auch performant läuft sind schon happig (sowohl von den Anschaffungskosten als auch von den Anforderungen an die Konfiguration). Wir haben hier Admins die sich mit der Materie schon seit Jahren beschäftigen und ein Blade Center mit VMware ESX und zertifizierter Hardware betreiben.

Falls du mit "Vmware" z.B. den vmware server meinst, dann ist das definitiv mit hohen I/O Performanceeinbussen verbunden, da das System nur als "Gast" auf dem Betriebssystem aufsetzt. Richtig gut wirds erst mit einem dedizierten VM Betriebssystem und entsprechend zertifizierter Hardware (z.B Netzwerkartentreiber die im hinblick auf virtualisierung optimiert sind).

MsSql Server lässt sich meiner Meinung nach sonst recht gut virtualisieren, zumindest ab Version 2005

11.03.2011 - 13:38 Uhr

Das muss meines Erachtens auch nicht so sein. Mit AOP oder einer mit virtuellen Methoden abgleiteten Klasse von Person (Varianten 1 und 2 vom vorigen Post) kannst Du den Zugriff auf die Property "Land" auf eine Methode in der Datenzugriffskomponente umleiten.

Die gui greift dann auf die "Land" property zu ohne zu wissen, dass die DatenzugriffsKomponente aufgerufen wird (interceptor).

Wir haben das hier bei uns in der Firma mit dem AOP Framework Postsharp gemacht (also variante 2), es gibt aber auch noch andere wie Rhino Mocks, Castle Dynamic Proxy...

Einfacher von der Implementierung und vom Einarbeitungsaufwand wäre aber für deinen konkreten Fall wahrscheinlich Variante 1.

28.02.2011 - 17:14 Uhr

Hmm habe gerade mal geschaut wie ich das damals mal bei mir gemacht habe.
Gehts vielleicht so?


XmlNode root = doc.DocumentElement;
XmlNodeList nl = root.SelectNodes("//Worksheet");

28.02.2011 - 08:44 Uhr

//worksheet

17.02.2011 - 14:14 Uhr

Man kann bei den externals auch eine revision mit angeben mit "-r revision".
Das ist dann nantürlich etwas fummelig das einzubauen aber wenns nicht allzu oft vorkommt nicht soo schlimm.

Wenn man eine major release wirklich in einem Versionsstand in SVN festhalten will kann man einfach das Projekt in svn kopieren und die externals anpassen.

17.02.2011 - 08:49 Uhr

@CoderLol

Genau so wie du das beschrieben hast kann man das auch machen.
Einzig die Definition vom IPlugin Interface musst Du vielleicht in eine extra assembly auslagern und dann statisch in deinen dlls und executable referenzieren.

10.02.2011 - 15:47 Uhr

Hihi, das Ergebnis hätte ich jetzt auch so erwartet.

nehm mal das enabled = true heraus.

Deine testroutine enabled den Knopf ja wieder am Ende. Das Sleep() im gui thread sorgt auch dafür, dass die folgenden Mouseclick events nicht abgearbeitet werden können. Trotzdem gehen sie aber nicht verloren, da sie noch in der MessageQueue sind

Edit: Aha mal wieder jemand schnekller =)

08.02.2011 - 16:00 Uhr

@Joetempes

Gleiches gilt meines wissens für ITextsharp. Pdfs modifizieren kann man damit auch wunderbar, nur in ein Bild können beide Bibliotheken bereits existierende Pdfs nicht wandeln.

08.02.2011 - 15:57 Uhr

@der-schlingel

Ich glaube da hast Du dich versehen was den Funktionsumfang von PdfSharp angeht.
Man kann nur selbst mit pdfsharp erstellte Xgraphics objekte als Bitmap und pdf ausgeben, nicht bereits existierende pdf Dateien.

Ich benutze die pdfsharp bibliothek sehr gerne fürs modifizieren von existierenden pdf Dateien, ein pdf to image geht damit aber (leider) nicht.

04.02.2011 - 13:16 Uhr

achso msbuild mach imemr nen clean rebuild?

04.02.2011 - 11:51 Uhr

http://geekswithblogs.net/jolson/archive/2006/03/11/72061.aspx

geht wohl nur vernünftig mit msbuild. Ist bei mir aber auch nie soo relevant gewesen.
Was ich immer ganz gerne mache ist allerdings vor release versionen alle obj files zu löschen und mit msbuild nen rebuild zu machen. das habe ich mit einem kleinen Batch file gelöst:

@echo off
rem alle obj verzeichnisse eintfernen
for /F %%s in ('dir obj /A:D /s /b') do rmdir %%s /S /Q
rem mein build dir entfernen
rmdir output /s /q
rem msbuild mit  Framework 2.0 aufrufen
%SYSTEMROOT%\Microsoft.NET\Framework\v3.5\msbuild.exe /p:Configuration=Release /tv:2.0 /m

03.02.2011 - 13:00 Uhr

Ich sag immer nur "verschlimmbessert" 😉

28.01.2011 - 14:12 Uhr

Das devexpress XtraGrid Wäre jetzt auch meine Empfehlung gewesen. Der Einarbeitungsaufwand ist zwar recht hoch, aber dafür hat man ein Grid das (fast) alles kann, inkl. automatischer Filteroptionen usw.

27.01.2011 - 17:14 Uhr

Argh. höre ich da rs232 ?

Schau dir mal die SerialPort Schittstelle in c# an, das kann man doch ganz komfortabel über Events regeln.

Die seriellen Schnittstellen in PCs lösen schon seit gefühlten Jahrhunderten Interupts aus, wenn Daten anliegen. In c# läuft das dann auf Events heraus.

Selbst auf Embedded Prozessoren gibts für sowas Interrupts. Pollen über rs232 ist schon seit 2400 Baud Modems out 😉

27.01.2011 - 16:54 Uhr

hehe.. Für ganz Faule wie mich einfach die enstprechende .csproj Datei unter anderem namen im gleichen Verzeichnis ablegen, dan mit nem texteditor ein paar Build Pfade abändern und in ter solution einbinden.

24.01.2011 - 16:35 Uhr

Also ich habe bei mir alle Forms in der Anwendung von einer eigenen abstrakten Klasse Baseform abgeleitet, die wieder von form erbt.

Damit bin ich bis jetzt gut gefahren (mit Standardfunktionen wie drucken, (de)serialisieren etc. in der Baseform, die dann überladen werden können) .
solche Änderungen wie das Icon lassen sich damit dann auch recht einfach ändern, da sie nur in der baseform erfolgen müssten.

Du musst dann natülich einmal heftigst refactoren um das umzusetzen, dafür hast Dus in zukunft aber einfacher...

19.01.2011 - 16:12 Uhr

Ich glaube da fehlt noch ein "public" bei static class Win32.
Ausserdem lief der Teil doch schon bei Dir, oder?

WS_SIZEBOX und WS_MAXIMIZEBOX musst Du natürlich auch wieder analog zu HWND_TOP in deiner Hilfsklasse registrieren.

Um die entsprechenden werte rauszufinden einfach mal googlen, das kriegst Du schon hin 😉

17.01.2011 - 14:12 Uhr

Hallo,

nach dem starten vom prozess ist das mainwindowhandle höchstwahrscheinlich erstmal nicht gesetzt. Versuch mal erstmal mit sleep() ein bischen zu warten, bis sich das Fenster geöffnet hat und das Mainwindowhandle gesetzt ist.

dann bei Setwindowpos() unbedingt beim 2. Paramerter HWND_TOP eingeben (wie schon vorher gesagt) sonst wird das fenster von allen anderen überdeckt.

10.01.2011 - 15:27 Uhr

Hallo,

Merk dir doch die Process id, die ist immer unterschiedlich.

07.01.2011 - 15:08 Uhr

schau mal hier

http://www.codeproject.com/KB/cs/zetaimpersonator.aspx

damit kannst du temporär unter einem anderen useraccount operationen ausführen.
Der Aufruf geht denkbar einfach mit z.B.


using (new Impersonator("username", "domainname", "userpw"))
                {
                    string[] files = Directory.GetDirectories(@"\\test\test");
                    foreach (string s in files)
                        Console.WriteLine(s);
                }

06.01.2011 - 16:49 Uhr

das kann man als Anwender auch recht leicht herausfinden, wenn mann about:config als url eingibt und dann nach useragent sucht. Oder meinst du was anderes?

[edit]
Hmm about: reicht wohl auch aus und dann Bei Build Identifier gucken

01.12.2010 - 14:34 Uhr

Das Phänomen mit den nicht gefangenen Exceptions kommt mir irgendwie bekannt vor.

Ich habe in meiner Applikation folgende Exceptionhandler vor das Application.Run
gesetzt:

//exception handling
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(getUncaughtGUIThreadException);

//gui thread exception handling
          Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(getOtherUncaughtException);

Das funktioniert soweit ganz gut, ich nutze das aber nicht generell fürs Exception Handling (Ist meistens wie schon gesagt besser in der Form selbst) sondern nur für die wirklich unerwarteten Fälle. Bei meiner Implementierung kommt dann nur noch ein Fenster "A critical error has occured, please restart app and ask you admin" oder sowas und das ganze wird noch in einer Textdatei fürs nachverfolgen festgehalten.

29.11.2010 - 13:35 Uhr

Naja, dann haben wir ja mal 2 unterschiedliche Ansätze mit entsprechenden Argumenten für den Thread Ersteller, um das Problem zu lösen. =)

29.11.2010 - 11:25 Uhr

@Herbivore

Das mag ja sein, dass Regex Wissen nie weg ist und sich viele Probleme damit lösen lassen. Aber in diesem fall würe ich auch zu dem Agility Html parser raten und mit "Kanonen auf Spatzen schiessen". Html zu parsern ist genau so ein Anwendungsfall wo regex oft versagt.

Selbst diese (einfache) hier gepostete Aufgabenstelleung ist für Regex nicht besonders geeignet. Die Attribute kann man ja wie bei XML z.B. beliebig vertauschen, dann gibts so lustige Sachen wie invalides Html, das trotzdem von allen Browsern gutmütig geparst wird usw...

12.11.2010 - 16:36 Uhr

Stimmt, hast recht. Schade dass man nicht sowas wie

public class Base<T> where T : Base<T>, protected new()

schreiben kann 😉

12.11.2010 - 16:16 Uhr

Hmm, habe mal das Beispiel von MarsStein etwas umgebaut. So würde es auch gehen

public class Base<T> where T : Base<T>
    {
        protected Base()
        {
        }

        public static T Create()
        {
            if (SomeCondition())
                return (T) Activator.CreateInstance(typeof(T),true);
            return null;
        }
    }

    public class A : Base<A> // <- <A> nur bei Klassendeklaration nötig
    {
        protected A()
        {
        }
    }

So kann man kein

A = new A() 

schhreiben, sondern muss auf A.Create() ausweichen...

12.11.2010 - 16:02 Uhr

Hmm ganz nett, aber auch beim letzten Ansatz von MarsStein hast Du das Problem dass du einen public Konstruktor in den Klasssen A,B ,C haben musst.
Deshalb hält es keinen unwissenden Programmierer davon ab einfach

a x = new A();

zu schreiben und das wars dann mit der netten Create() Methode.
Ich würde hier eher zu Interfaces tendieren und wenn Du schon eine extra Create Methode hast die Konstruktoren auf protected aetzen, damit keiner new() verwenden kann.

09.11.2010 - 17:11 Uhr

Hmm hatte mal ein ähnliches Phänomen mit einer externen Anwendung, die meine aufruft. Nach viel herumprobiere hat dann bei mir folgendes funktioniert:

//falls jemand das fenster minimiert hat, wieder auf normal stellen
 if (MainForm.WindowState == FormWindowState.Minimized)
                    ShowWindowAsync(MainForm.Handle,9);
//Hauptfenster wieder als vordergrund Fenster setzen
SetForegroundWindow(MainForm.Handle);

Benötigte DllImports:

[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);

[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 

vielleicht hilfts ja...

29.10.2010 - 08:56 Uhr

Hmm also ich mache das seit dieser Thread gestartet wurde (vor über einem Jahr.. lol)
immer über einen ValidateChildren() Aufruf in der Form befor ich irgendwelche Daten speichere oder sonstwie weiterverarbeite.

das löst auf jeden Fall das oben beschriebene Problem recht gut und funktioniert generell bei Databinding auch ohne Datasets.

26.10.2010 - 11:11 Uhr

Zum Testen von eigenen COM Kreationen geht auch vbscript ganz gut.
Einfach ne Textdatei aufmachen, testaufruf ähnlich wie unten einfügen und in .vbs umbenennen und ausführen:

Set mycomtest= CreateObject("csfp.system5")
mycomtest.HelloWorld()