Laden...

Forenbeiträge von wonder-knabe Ingesamt 23 Beiträge

28.06.2007 - 16:19 Uhr

Sorry, dass ich mich erst jetzt melde, aber lieber spät als nie.

Im Prinzip hast du Recht, ich meinte das neue Konfigurationsmodell von .NET 2.0. Das .NET 1.1 Modell hätte es aber auch getan. Auf jeden Fall werden hier die Daten automatisch in einen Pfad a la "C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\Firmenname\Programmname+ID\datei" abgelegt. Dieser Pfad ist immer beschreibbar. So können auch nicht Administratoren Daten speichern.

Viele Grüße,
wonder-knabe

25.06.2007 - 13:32 Uhr

Also an sich finde ich das Programm ganz gut.

Allerdings hätte ich irgendwo in die Beschreibung geschrieben, dass man die Form mit F12 wieder in den Vordergrund holen kann. Außerdem würde ich den Buttons ToolTips hinzufügen.

Zu guter letzt noch eine Idee zur Speicherung der Daten:
Wenn man das ganze Programm produktiv einsetzen will, wird es wohl im Programme Ordner landen. Hier kann ein eingeschränkter Benutzer aber keine Daten ändern. Das müsste er aber, um neue Programme zur Liste hinzuzufügen oder Einstellungen zu ändern. Daher würde ich das ganze vielleicht einfach in der Konfigurationsdatei deiner Applikation speichern.

Ansonsten aber wirklich ein gelungenes Programm.

Greets,
wonder-knabe

21.03.2007 - 18:04 Uhr

Ich denke das Problem liegt an anderer Stelle. Denn da du einen transparenten Fensterhintergrund verwendest wirst du wohl neue API Funktionen von Windows Vista verwenden, die unter WinXP nicht existieren. Und wenn man das tut, dann resultiert das in einer wunderschönen Fehlermeldung wie sie vorliegt, wenn man dein Programm startet.

15.03.2007 - 15:19 Uhr

Hi,

ich programmieren jetzt schon eine ganze Weile C# und möchte nun ein etwas größeres Projekt in die Tat umsetzen. Nachdem ich vor einiger Zeit bei einem anderen Projekt, welches um einige Nummern kleiner war, mangels Projektplanung fürchterlich auf die Nase gefallen bin, plane ich meine Software mitlerweile immer recht sorgfältig.
Allerdings geschieht dies zumeist mit einem Stift und einem Blatt Papier.
Ich weiß, dass es in VSTS etwas gibt, was sich Bereitsstellungs-Designer nennt. Doch zum einen wäre das für meine Zwecke dann doch etwas überdimensioniert und zum anderen übersteigt VSTS mein Budget bei weitem.
Kennt jemand (am besten kostenlose) Alternativen?

wonder-knabe

13.03.2007 - 15:55 Uhr

Das was du suchst ist mit CDATA möglich.

Wenn man in einer XML-Datei einen Datenbereich mit <![CDATA ... ]]> einrahmt, wird vom Parser alles, was dazwischen liegt, ignoriert.

09.03.2007 - 23:00 Uhr

Ich denke auch, dass es sich hier eher um ein Vista-Special mit Anleihen bei .NET als um ein wirkliches .NET 3.0 - Special handelt.

Für alle diejenigen, die auch sonst fleißig c't oder iX lesen:
Vieles aus dem (großen) Vista-Teil gab es auch schon in früheren Ausgaben dieser beiden Zeitschriften oder es wurden nur kleine Änderungen vorgenommen.

Ich fand die ersten beiden .NET-Specials daher deutlich besser.

20.02.2007 - 15:07 Uhr

Du musst unmanaged Code einbinden. Das ganze sieht dann ungefähr so aus:


[DllImport("advapi32.dll")]
public static extern bool IsTextUnicode(byte[] buffer, int length, ref int lpi);

public static bool CheckUnicode(string text, bool unicode)
{
   byte[] buffer;
   int iOptions = 0xF;

   if(unicode)
      buffer = System.Text.Encoding.Unicode.GetBytes(text);
   else
      buffer = System.Text.Encoding.ASCII.GetBytes(text);

   return IsTextUnicode(buffer, buffer.Length, ref iOptions);
}

public static void Main()
{
   Console.WriteLine("Teste Unicode...");
   Console.WriteLine("IsUnicode: {0}", CheckUnicode("test", true));
   Console.WriteLine("Teste ASCII...");
   Console.WriteLine("IsUnicode: {0}", CheckUnicode("test", false));
   Console.ReadLine();
}

Wichtig: Am Anfang musst du den Namespace System.Runtime.InteropServices einbinden.

Greets
wonder-knabe

20.02.2007 - 09:19 Uhr

Ich hab die Funktion gefunden:
Sie heißt IsTextUnicode und ist ab Windows 3.5 integriert.

Für nähere Informationen bitte einmal hier gucken:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_81np.asp

Greets
wonder-knabe

20.02.2007 - 08:33 Uhr

Also es gibt eine Funktion in der WinAPI die genau das feststellt. Bin mir aber nicht mehr ganz sicher, wie die heist. Muss ich erst nochmal googlen.

100% sicher ist die aber auch nicht. Notepad verwendet diese Funktion auch und wenn man eine Unicode-Textdatei mit Notepad erstellt und als Inhalt "keiner mag die zivis" verwendet, die Datei speichert und anschließend wieder lädt, dann kriegt man nur ein paar kryptische Zeichen zurück.

PS: das funktioniert auch mit "this api can break" und "this app can break"

15.02.2007 - 19:24 Uhr

Hallo herbivore,

zunächst einmal ja, der Pfad ist in der Verknüpfung eingetragen.
Aber du hast mich trotzdem auf die richtige Fährte gebracht. Ich hatte nämlich vergessen die WorkingDirectory Eigenschaft der Verknüpfung zu setzen. So hat der irgendwo in der Pampa nach der Datenbank gesucht.
Trotzdem verstehe ich nicht, warum der mir nicht gleich gesagt hat, das er die Datenbank nicht gefunden hat. Nunja, seis drum.

Vielen Dank herbivore,
wonder-knabe

15.02.2007 - 19:07 Uhr

Hi Community,

ich bin mir zwar nicht ganz sicher ob dieser Beitrag nicht eigentlich nach Datentechnologien gehört, aber da ich ja eigentlich nicht direkt ein Problem mit der Datenbank habe, dachte ich es gehört hierhin. Falls ich damit falsch liege, möge man es mir verzeihen.

Ich habe ein Programm geschrieben, das mit Hilfe des System.Data.SQLite ADO.NET Providers von PHXSoftware eine Verbindung zu einer SQLite Datenbank herstellt. An einer Stelle findet man folgenden Code:


SQLiteConnection sqlCnt = new SQLiteConnection();
sqlCnt.ConnectionString = "Data Source=" + this.strDB + ";Version=3;New=False;Compress=False";
SQLiteCommand sqlCmd = sqlCnt.CreateCommand();
sqlCmd.CommandText = "SELECT Message, Type, Date FROM Log";
SQLiteDataReader sqlRdr = sqlCmd.ExecuteReader();

anschließend lese ich halt die Daten aus und schließe die Connection wieder.
strDB ist eine Variable in der der Pfad zur Datenbank gespeichert wird, der dem Programm am Anfang per Parameter übergeben wird.
Wenn ich nun bei den Projekteinstellungen unter Debug bei den Parametern den Pfad zur Datenbank angebe, dann funktioniert das auch ganz prima.
Aber wenn ich das ganze erstmal installiert habe und dann aus dem Startmenü aufrufe, dann krieg ich einen "SQLite error: no such table: Log" in dem Standard Exception Feld.

Weiß jemand woran das liegt und wie man das beheben kann?

Viele Grüße
wonder-knabe

08.02.2007 - 21:54 Uhr

Also erstmal vielen Dank herbivore, deine Antwort hat mir sehr geholfen.

Allerdings muss man das CreateHandle() weglassen, sonst erhält man eine InvalidOperationException.
Jetzt würde mich aber noch interessieren, warum denn meine Version eigentlich nicht funktioniert hat. Weiß das jemand?

wonder-knabe

08.02.2007 - 17:56 Uhr

Hi,
ich versuche momentan eine Windows Form komplett vom Bildschirm verschwinden zu lassen, sie soll aber im Hintergrund noch geöffnet sein und nicht geschlossen werden. Bis jetzt realisier ich das über eine Methode HideForm() die normalerweise auch ganz prima funktioniert. Nur wenn ich eben diese Methode aus MainForm_Load() aufrufe, dann passiert rein garnichts. Weiß jemand woran das liegt bzw. wie man das abstellen kann.


public void HideForm()
{
    this.Hide();
    // hier stehen noch ein paar andere Sachen, die jetzt aber nix zur Sache tun.
    // Deswegen ruf ich nicht einfach this.Hide() auf
}

public void MainForm_Load()
{
    this.HideForm();
}

25.01.2007 - 22:19 Uhr

Hallo zusammen,

ich arbeite momentan an einem kleinen Bildverwalter. Ich würde gerne eine Funktion zum Ersetzen des aktuellen Desktophintergrundes durch das aktuell ausgewählte Bild einbauen.
Das Ersetzen an sich ist dank SystemParametersInfo(...) kein Problem, nur würde ich eigentlich ganz gerne eine Vorschaufunktion einbinden. Mein momentaner Lösungsansatz besteht darin den Pfad zum aktuellen Wallpaper auszulesen, den Wallpaper zu ersetzen und bei Missgefallen wieder den alten einzurichten.
Das eigentliche Problem liegt nun in eben diesem Auslesen des Wallpapers, da die Registry Pfade sich von PC zu PC unterscheiden (von den unterschiedlichen Windows-Versionen ganz zu schweigen).
Gibt es vielleicht eine WinAPI Funktion die mir den Pfad zum aktuellen Wallpaper zurückliefert oder sogar den Wallpaper nur temporär ändert?

Vielen Dank schon mal im Voraus,
wonder-knabe

28.11.2006 - 21:06 Uhr

@tom-essen:
Die Funktion ist nicht wirklich wesentlich für das Programm sondern stellt eher eine Erweiterung dar. Daher ist es nicht so dringend.

Ansonsten vielen dank, für alle Antworten

28.11.2006 - 20:34 Uhr

Hallo zusammen,
ich bin momentan dabei ein kleines Tool zu schreiben, in dessen Funktionsumfang auch eine Scanfunktion enthalten sein soll. Da es ja anscheinend eine Standard Scan Schnittstelle geben muss, über die z.B. der Windows Scan Assistent auf den Scanner zugreift, würde ich gerne wissen, ob es vlt. eine .NET-Library gibt um auf eben diese zuzugreifen oder wie man dies sonst erreicht.

Viele Dank an alle Antwortenden
wonder-knabe

22.11.2006 - 19:15 Uhr

Also ich verstehe noch nicht ganz, was du mir mit diesem Artikel sagen möchtest herbivore. Denn ich weiß was eine ReferenceNullException ist und wie man sie und andere ausfindig macht und behebt. Das Problem hier liegt daran, dass das Programm nur mit einer Fehlermeldung beendet wird, und der Debugger mir eben nicht mitteilen kann, in welcher Zeile das Problem auftritt. Aber nun gut.

An VizOne:
Auf deine Ideen bin ich auch schon gekommen, hatte nur gehofft, dass es vlt. einen einfacheren Weg gibt. Trotzdem vielen Dank.

Werde mich jetzt wohl ein wenig länger mit dem Code und Unit-Testing beschäftigen.

wonder-knabe

22.11.2006 - 18:28 Uhr

Hallo zusammen,
ich programmiere momentan ein etwas aufwändigeres Tool in das sich eine StackOverflowException eingeschlichen hat.

Der genaue Fehlercode lautet:
An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll

Obwohl ich schon sehr, sehr lange nach rekursiven Funktions oder Eigenschaftsaufrufen gesucht habe finde ich einfach keinen. Da das Programm doch relativ umfangreich ist (ca 20000 Codezeilen) möchte ich eigentlich nicht diverse in Frage kommenden Klasse neu schreiben, bzw. jede einzelne Zeile auf eine Fehlerquelle hin untersuchen.

Daher meine Frage:
Gibt es ein Programm oder auch nur ein Tool, was einem bei dieser Arbeit helfen kann?

Ich bin für jede Art von Antwort dankbar.

Vielen Dank schon mal im Vorraus,
wonder-knabe

30.10.2006 - 16:55 Uhr

Hallo LukeGee,
mir ist in deinem Programm ein Fehler aufgefallen. In der zweiten Registerkarte ist die Reihenfolge der Tabstopps vertauscht. Soll heißen: Wenn man dort mit der Tab-Taste durch die Textboxen navigiert, geschieht dies in folgender Reihenfolge:1.Straße 1.PLZ 1.Ort 1.Land 1.Haus#

Logischer wäre es aber in folgender Reihenfolge, da du diese im ganzen Programm so behältst:1.Straße 1.Haus# 1.PLZ 1.Ort 1.Land

21.10.2006 - 16:49 Uhr

Hallo,

ich möchte in ein Programm von mir eine kleine Brennfunktion einbinden. Nach ein bisschen Googlen bin ich auf die Idee gekommen die IMAPI zu verwenden. Die Nero-API wollte ich explizit nicht, weil ich nicht sicherstellen kann, das auf allen PCs, auf denen mein Programm ausgeführt wird Nero vorhanden ist.
Das Problem liegt nun darin, dass mir noch nicht ganz klar ist, wie ich die IMAPI-Funktionen in mein Programm einbinden soll. Da es sich nach MSDN um ein COM-Objekt handelt, habe ich natürlich versucht eine Referenz auf es zu erzeugen.
Das scheiterte aber daran, dass ich es in Visual Studio nicht finden konnte. Dann habe ich versucht, die imapi.exe manuell mit tlbimp.exe zu wrappen. Dieser Vorgang scheitert aber daran, dass es sich angeblich um kein gültiges COM-Objekt handelt. Ein direkter Aufruf der WinAPI stürzt ebenfalls ab.
Daher meine Frage: Wie binde ich die IMAPI in mein Programm ein?

Vielen Dank schon mal im Voraus,
wonder-knabe

20.07.2006 - 21:55 Uhr

Hi,
ich würde gerne ein halb-transparentes Fenster erstellen aber einige Elemente in diesem Fenster sollen nicht transparent sein.
Ich habe es mal mit der Fenster-Eigenschaft Opactiy probiert, aber dann werden alle Elemente im Fenster transparent.
Gibt es irgendeine Möglichkeit das zu unterbinden? Und wenn ja, welche?

Vielen Dank schon mal im Voraus,
wonder-knabe

05.10.2005 - 18:17 Uhr

Habs auch schon gemerkt. Aber trotzdem Danke!

wonder-knabe

03.10.2005 - 19:32 Uhr

Hallo!

Ich möchte in C# ein Programm erstellen, bei dem sich, wenn man auf eine Schaltfläche klickt ein weiteres Fenster öffnet. Das alte Fenster soll aber geöffnet bleiben. Dazu habe ich folgenden Code geschrieben:


void cmdNewWindowClick(object sender, System.EventArgs e)
{
     Application.Run(new NewWindow());
}

Diesen Codeabschnitt belohnt das Programm zur Laufzeit mit einer Fehlermeldung, die folgendermaßen lautet:
"It is invalid to start a second message loop on a single thread. Use Application.RunDialog or Form.ShowDialog instead"

Wenn man nun der Anweisung des Programms folgt und die Anweisungen Application.RunDialog oder Form.ShowDialog nutzt erhält man bei kompilieren eine Fehlermeldung, die sinngemäß folgendes aussagt: "Es gibt keine Methode oder Klasse Application.RunDialog bzw. Form.ShowDialog".

Es wäre für mein Programm allerdings äußerst wichtig, dass ich ein zweites Fenster öffnen könnte ohne das erste zu schließen.

Daher wäre es sehr nett, wenn mir jemand sagen könnte, wie ich das Problem lösen kann.

Danke im Vorraus,
wonder-knabe