Oft erhält mein eine Meldung in einer Message-Box und möchte den text kopieren. Mit Alt-Druck erhält man einen Screen-Shoot, aber das ist eine Grafik. Wie kommt man nun an den Text?
Mit Strg-C !
Oft müssem am Anfang und am Ende eines Strings überflüssige Zeichen gelöscht werden. Dazu kann in .Net der Befehl Trimm eingesetzt werden.
string t = " Test "; string Result = t.Trim(' ');
Mit Trim lassen sich aber auch mehrere Zeichen auf einmal löschen. Dabei ist die Reihenfolge der Zeichen egal!
string t = " \r\n Test \r \n "; string Result = t.Trim('\r', '\n', ' ');
In einer Anwendung aus der ich auf Access via COM zugreife, wollte ich das Access-Fenster ausblenden. Die "visible" Eigenschaft kann man auch setzten - es passiert nur nix, daher das ganze über DLLImport. Wichtig ist, dass man sich den/die "handle" auf das/die Fenster merkt - die findet man sonst nicht mehr und kann sie sonst auch nicht mehr sichbar schalten. Das Beispiel kann man natürlich auch auf jede andere Anwendung übertragen und das Process-Objekt hat ja auch noch paar andere Methoden, um ein bestimmtes Fenster zu finden, "GetProcessByID()" usw. sind auch vorhanden.
z.B. ausblenden von allen Access-Fenstern:
ArrayList processHandles = new ArrayList(); foreach (Process p in Process.GetProcessesByName("msaccess")) { ShowWindow((int)p.MainWindowHandle, 0); // 0 steht für unsichtbar processHandles.Add((int)p.MainWindowHandle); }
einblenden
foreach (int processHandle in processHandles) { ShowWindow(processHandle, 9); // 9 bedeutet restore - sprich so, wie das Fenster vor dem ausblenden aussah (Position, Größe) }
und der dllimport, damit die Funktion genutzet werden kann:
[DllImport("User32")]
private static extern int ShowWindow (int hwnd, int nCmdShow);
Mit MSBee kann MSBuild von VS2005 so konfiguriert werden, dass damit Anwendungen kompiliert werden können, die auf dem Framework 1.1 ablaufen. Dies kann vor allem zur Pflege von bestehenden Anwendungen sinnvoll sein. Neue Anwendungen zu erstellen ist jedoch recht mühsahm, weil VS 2005 automatisch partial Classes verwendet, die aber vom Framework SDK 1.1 nicht unterstützt werden.
http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee
Unter IDesign gibt es einen Download, mit dem das My-Objekt von VB auch unter C# genutzt werden kann.
http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=-1&tabid=19&download=141
The My class in VB often simplifies and streamlines many operations, from Network programming to clipboard, to audio access, and so on. What takes sometimes a programming fit in C# can be done in one line using the My class in VB. If VB has Me and My, then C# should have this and That. The That class is the C# equivalent of the VB My class. It is a static class that uses the VB implementation as much as possible, and it requires adding a referencing to Microsoft.VisualBasic. The That class is instrumental when working in heterogeneous environments and when dealing with in porting of VB to C# or visa-versa.
Weitere interessante Downloads gibt's unter http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=5&tabid=11#ES
Unter http://www.red-gate.com/products/SQL_Prompt/index.htm kann man kostenlos ein kleines Tool herunterladen, das für alle SQL-Editoren wie z.B. den Query Analyzer, SQL Server 2005 Managementstudio etc. eine Intelli-Sense Unterstützung für Tabellen-, Aplaten und Funktionsnamen bietet.
Bisher war es recht mühsahm, Oberflächen für verschiedene Sprachen zu erstellen. Mit VS 2005 ist das jetzt ein Kinderspiel. Einfach auf der Form die Eigenschaft Localizable auf true setzen. Dann die Oberfläche für die Standard-Sprache aufbauen. Anschließend die Eigenschaft Language auf der Form auf eine explizite Sprache einstellen und Anpassungen vornehmen (Lables, Buttons etc. neu beschriften). VS legt für die Zweitsprache automatisch eine .resx-Datei an, in der diese sprachspezifischen Einstellungen gespeichert werden.
Während des editierens kann man beliebig zwischen den Sprachen umschalten und die Oberfläche für die jeweilige Einstellung editieren. Genial ist dabei, dass nicht nur Texte in den sprachspezifischen Ressource-Dateien gespeichert werden, sondern auch alle anderen Einstellungen. Wird ein Button z.B. in Englisch mit "Save" betittelt, kann es sein, dass die deutsche Bezeichnung "Speichern" zu lang ist und der Platz nicht ausreicht. Kein Problem. Den Button einfach in der deutschen Einstellung vergrößern und schon wird auch die Größe des Buttons in Abhängigkeit der Sprache gewählt.
Dass viele Operationen mit einem string recht langsam ist, ist ja weitgehend bekannt, auch dass man hier besser einen StringBuilder verwendet. Folgendes Beispiel ist unter Performance-Aspekten sehr ungünstig:
string Text = ""; for (int i=0; i<100000; i++) { Text += "x"; }
Was weniger bekant ist, die Erklärung dafür. Wird einem String ein neuer Wert zugeweisen, so wird das Objekt jedes mal neu angelegt. In dem obigen Beispiel wird also 100000 mal ein neues String-Objekt angelegt und das alte verworfen. Das kostet natürlich Zeit. Dahingegen ist der StringBuilder dynamisch erweiterbar. Nach der initialisierung wird er mit einer Kapazität von 16 Zeichen angelegt. Die Kapazität verdoppelt sich nun jedesmal, wenn die Kapazität überschritten wird. Mit dem einfügen des 17. Zeichens wird die Kapazität also auf 32 erhöht etc. Beim Stringbuilder kann man im Konstruktor auch schon eine größere Kapazität angeben.
In der AssemblyInfo.vb bzw. AssemblyInfo.cs gibt es zwei Einträge zur steuerung der Versionierung.
<Assembly: AssemblyVersion( "0.9.*")> <Assembly: AssemblyFileVersion("0.9.2.0")>
Das Problem dabei ist, dass die AssemblyVersion durch * automatisch nummeriert werden kann, dass das aber bei der AssemblyFileVersion nicht funktioniert. Möchte man, dass beide gleich sind, muss man lediglich die AssemblyFileVersion löschen.
Möchte man den Titel eines Diagramms aus einer Zelle holen, muss man einen kleinen Trick anwenden. Über den Dialog "Diagrammoptionen" lässt sich nur ein fester Text eingeben. Wenn man aber den Titel im Diagramm markiert und dann in der Eingabeleiste den Verweis eingibt, funktioniert das ganze.
Nach der Aktualisierung von Daten eines Pivot-Charts sind ie Formatierungen wie Farben der Balken etc. verloren. Dies liegt daran, weil das Diagramm komplett neu aufgebaut wird. Dies kann man umgehen, indem man die Einstellungen als benutzerdefinierten Diagrammtyp speichert und diesen dann dem Chart wieder zuweist. Ein Makro zur Aktualisierung der Daten eines Pivot-Charts ohne Verlust der Formatierung könnte dann so aussehen:
ActiveWorkbook.Sheets("Projektzeiten").PivotTables("PivotTable2").PivotCache.Refresh Application.Wait (Now + TimeValue("0:00:01")) Application.ActiveWorkbook.Charts(1).ApplyCustomType ChartType:=xlUserDefined, TypeName:="MyType" Application.ActiveWorkbook.Charts(1).HasPivotFields = False
Den Wait in Zeile 2 braucht er offensichtlich, da sonst die Aktualisierung noch nicht abgeschlossen ist.
Über Array-Formeln lassen sich Konstrukte wie das folgende erstellen:
{=MITTELWERT(WENN(ISTNV(C1:C3);"";C1:C3))}
Arrayformeln müssen mit STRG+UMSCHALT+EINGABE bestätigt werden (statt nur EINGABE). Die geschweiften Klammern müssen nicht eingegeben werden, sondern werden von Excel nach der Bestätigung mit STRG+UMSCHALT+EINGABE automatisch hinzugefügt. Klappt auch bei MIN, MAX und MEDIAN.
Mit dem SP1 spendiert Microsoft dem SQL Server 2005 Express zusätzlich die zwei Funktionen Reporting-Services und den Volltextindex des großen Bruders. Vorlagen für das Erstellen der Reports für Visual Studio gibt es mit dem Microsoft SQL Server 2005 Express Edition Toolkit SP1.
http://msdn.microsoft.com/vstudio/express/sql/download/
Unter http://msdnwiki.microsoft.com/en-us/mtpswiki/ms404855(VS.80).aspx bietet Microsoft ab sofort, zunächst als Beta-Version, ein Wiki an, das die MSDN-Dokumentation zu VS 2005 und .Net Framework 2.0 enthält. Das besondere dabei ist, dass durch die community Anmerkungen, Code-Beispiele etc. hinzugefügt werden können.
Bleibt abzuwarten, wie die Community sich hier beteiligt.
Jeder kennt das Problem. Man hat einen ellenlangen SQL-String und spätestens nach der dritten Klammer hat man den Überblick verloren, wenn allles in einer Zeile steht. Hier hilft ein kleines Tool weiter, das SQL-Strings, auch komplexe, übersichtlich formatiert. Das Tool gibt es als kostenlose Online-Version und als kostenpflichtige Offline-Version oder auch als API.
http://www.sqlinform.com/
| |