starchild schrieb:
Mit .NET 2.0 (zu Hause) funktioniert das Wunderbar.
Aber im Labor an der Uni gibts nur .NET 1.1 und dort schaffe ich es leider nicht, eine FileList nach Datum zu sortieren.
So wie ich es verstanden habe, müsste ich dazu die Klasse FileList um IComparable erweitern.
Oder geht das anderst?
So kannst bei dann bei Deiner UNI wegen .NET 1.1 tun:
public class ReverseSorterLastAccessTime : IComparer // für letzten Dateizugriff rückwärts sortiert
{
int IComparer.Compare( Object x, Object y )
{
return( (new CaseInsensitiveComparer()).Compare( (y as FileInfo).LastAccessTime, (x as FileInfo).LastAccessTime ) );
}
}
public class ForwardSorterLastAccessTime : IComparer // für letzten Dateizugriff vorwärts sortiert
{
int IComparer.Compare( Object x, Object y )
{
return( (new CaseInsensitiveComparer()).Compare( (y as FileInfo).LastAccessTime, (x as FileInfo).LastAccessTime ) );
}
}
ersetze dann bei diesen ins Augen stechenden "type casts"
(x as FileInfo).LastAccessTime )
gegen die entsprechende FileInfo-Eigenschaft Deiner Wahl (z.B. CreationTime).
Jetzt hast Du ja zwei Sortierklassen eine um aufsteigen zu sortieren und die andere für andersrum.
Naja und sortiert wird dann eben mit folgenden Codeschnippel:
try
{
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo("d:\\");
System.IO.FileInfo [] fileInfos = dirInfo.GetFiles();
ArrayList arr = new ArrayList(); // Arralist kann sortieren
// damit was zum sortieren vorhanden ist alle FileInfo-Objekte reintun
for(int idx = 0;idx <fileInfos.Length;idx++)
{
arr.Add(fileInfos[idx]);
}
// Die Sortierer instanzieren
IComparer forwardComp = new ForwardSorterLastAccessTime();
IComparer reverseComp = new ReverseSorterLastAccessTime();
// jetzt einen Sortierer ausuchen und einfügen und sortieren lassen
arr.Sort(reverseComp);
// die geordneten Daten (Dateinamen) in einer ListBox bringen
for(int idx0 = 0; idx0 < arr.Count;idx0++)
{
listBox1.Items.Add((arr[idx0] as FileInfo).Name);
}
}
catch(System.Exception ex) // falls etwas eine Ausnahme macht so zum B. bei Sortierung
{
MessageBox.Show(ex.Message);
}
Ziemlich dürftig, dieses Codefragment, aber hast Dir schon mal angesehen, welche Property Du von OdbcCommand belegst?
Versuche es mal mit ...
cmd.CommandText = CommandType.Text;
!?!?!?! schrieb:
Ist es irgendwie möglich ein Form beim starten an der stelle erscheinen zu lassen an der sich derzeit die maus befindet?
private void Form1_Load(object sender, System.EventArgs e)
{
this.Location = MousePosition;
}
starchild schrieb:
Es gibt echt zu viele Komponenten als das man sie als Nichtprofi alle kennen könnte...
Du bist gut es gibt mit Sicherheit Leute die sich jahrelang mit was beschäftigen, sich drüberhinaus mit Schwerpunkten beschäftigen müssen. Und eben darum auch nicht die hinterletzte Komponente kennen. Davon kann sich bestimmt kaum jemand lossprechen.
Mund zu Mundpropaganda, Suchmaschinen und Foren sind daher ein wahrer Segen in solcher Hinsicht. Das sind gute Schlüssel um in der Infomationsflut die richtige n Informationen zu finden.
Gruss sclearscrenn
P.S.: Und um die Infomationsflut noch weiter zu erhöhen, kann jeder mit seinen Werkzeugen selbst auch noch Komponenten bauen....
Deshalb gibts Foren und und und...
Hellsgore schrieb:
Servus,
du kannst auch einfach als passwordchar '\0' eintragen und gut is....
mfg
Hellsgore
Auch von mir, vielen Dank!
Kompetente Antwort.
der ghetto-coder hat gesprochen.
Ich weiss ja nicht wie es den andern geht, aber mir sagt JWindow von swing gar nichts.
Beschreib doch einfach welche Eigenschaften die Dialogbox haben sollte
SkySurfer schrieb:
Hi,
ich habe eine DataGridView erstellt die ich mit Daten aus einer DataSet Tabelle befülle. Nun möchte ich aber die Daten in der Liste durch Eingabe eines Suchschlüssels einschränken. D.h. ich hab ein Textfeld, in das ein Kriterum eingegen wird.
Bei einem TextChanged des Textfeldes wird dann folgendes aufgerufen:
cmdGenre = new OleDbCommand("SELECT DISTINCT Genre FROM Songs WHERE Genre LIKE '" + Suchtext + "*'", con);
dataGridViewGenre.DataSource = ds.Tables["Genre"];
Doch leider ist das DataGridView danach leer.
Auch wenn die Abfrage von hand in der Datenbank ein Ergebnis liefert.
Woran kann das liegen?
Gruß SkySurfer
oh und desweiteren was mir auffällt guckmal oben ganz scharf hin
"Genre" ist doch ein Datenfeld einer Tabelle oder?
Warum machst Du dan sowas
..... .DataSource = ds.Tables["Genre"];
Seid wann ist eine einfache Spalte eine Tabelle?
ich gehe davon aus Du hattest kurzeitig eine schwachen Moment oder?
So müsste es gehen
..... .DataSource = ds.Tables[0];
da Du eine virtuelle Tabelle bekommst auf Basis einer SQL-Abfrage
P.S.: Sollten die Namen gewollt sein kann das Ergebnis was bei Dir leer ist
auch auf einem Namenskonfilkt beruhen, weil Du als Tabellennamen wie auch als Feldnamen "Genre" benutzt.
Ohne jetzt komplett die restliche Struktur Deines Codes und Deiner DB
zu kennen sehe ich schlussendlich 1 mögliche Fehlerquelle und ein Designmanko:
Designmanko
1. DB nicht richtig normalisiert erkennbar daran
das Du DISTINCT im Sql verwenden musst nur um zu verhindern das reduntante
Datensätze zu bekommen. Weil Du bei jedem Titel das Genre angibst was dadurch
eben reduntant ist. Lösung Eine Tabelle mit Namen Genre anlegen mit 2 Feldern
Name und Nummer und ein Feld davon als Fremdschlüssel in der Tabelle "Songs"
verwenden.
Fehlerquelle
2. Du verwendest im C#-Code die Zeichenkette "Genre" gleichzeitig als Name fuer
eine Spalte und fuer eine Tabelle ----> möglicher Namenskonflikt
hier verwendest Du es als Spalte:
cmdGenre = new OleDbCommand("SELECT DISTINCT Genre FROM Songs WHERE Genre LIKE '" + Suchtext + "*'", con);
und hier verwendest Du es im C#-Code als Tabelle:
dataGridViewGenre.DataSource = ds.Tables["Genre"];
Teste es mal so:
cmdGenre = new OleDbCommand("SELECT DISTINCT Genre FROM Songs WHERE Genre LIKE '" + Suchtext + "*'", con);
daGenre = new OleDbDataAdapter(cmdGenre);
DataTable dtGenre = new DataTable();
daGenre.Fill(dtGenre);
dataGridViewGenre.DataSource = dtGenre;
Ich treffe in der Wahl der Namen fuer Tabellen und Feldnamen immer klar abgegrenzte Bezeichner. Bei Abfragen entstehen ja immer virtuelle Treffermengen
da benutze ich lieber DataTable zum anzeigen. Im .NET 1.1 hatte ich immer das Problem bei Verwendung von DataSet wurde das Ergebnis der Abfrage immer erst dargestellt indem ich explizit durch einen Klick im DataGrid die Struktur sichtbar wurde. Wenn man per Fill die Ergebnisse in eine DataTable bringt und diese DataTable der DataSource-Eigenschaft zuweisst wird die ergebnissmeng immer sofort im Grid angezeigt.
So mehr Input kann ich Dir wirklich nicht zur verfügung stellen. Nach langer Grübelei sieht man ja wievielmal ich editiert habe, bin ich mit dem Latein jetzt am Ende.
Gruss sclearscreen
Hallo und Guten Morgen,
meine Anfrage hat sich erledigt, habe "schlicht & einfach" die Server-Programmierung total verändert durch TcpListener, TcpClient, NetworkStream, ... !!!
MfG
ZZR-1100
Javaner schrieb:
Schließlich war es doch C# die für die automatische Umwandlung
das Autoboxing, -unboxing eingeführt hat, das schließlich auch
von Java übernommen wurde.
Wenn ich dich nun richtig verstehe hast du Recht. Die Implizite Typumwandlung (automatische) funktioniert aber nur in Typen höherer Wertigkeit.
Sprich:
int i = 1;
//Impliziertes Typcasting, da object höherwertig als int
object o = i;
//Expliziter Typcasting
int i2 = int.Parse(o.ToString());
Ich hoffe ich habe dich nun richtig verstanden Javaner.
geh mal bei Dir in die MSDN und gib als Suche folgendes ein:
Leistungsindikator
Lies dort gleich unter den vielen aufgeführten Treffern
unter dem Punkt:
Einführung in die Überwachung von Leistungsschwellenwerten
sowie
Überwachen von Leistungsschwellenwerten
Das gibt Dir dann erstmal Aufschluss über Funktionalitäten die das .NET mitbringt um bestimmte Paramter des laufenden System zu überwachen.
Unter anderem die PerformanceCounter-Klasse.
1. Du müsstes dann nur noch solche Messindikatoren codetechnisch setzen und in Gang setzen
2. Stresstest codetechnisch umsetzen
Zum PerformanceCounter existieren nat. in der MSDN auch gleich dokumentierte Codeschnippsel
P.S.: mögliche naive Suchquerys für google für Stressalgorithmen
Performancetest + programmieren + C#
Stresstest + programmieren + C#
http://www.google.de/search?hl=de&q=Performancetest+%2B+programmieren+%2B+C%23&btnG=Suche&meta=lr%3Dlang_de
http://www.codeproject.com/info/search.asp?cats=3&searchkw=PerformanceCounter&Submit1=Search&author=&sd=15+Nov+1999&ed=26+Jul+2006
es würde aber z.B. auch schon reichen wenn Du einfach nur in deinem Programm
nur die PerformanceCounter benutzt/umsetzt. Den Stressalgorithmus würde ich nicht mit in diesen Code giessen. Um den Rechner dann auszulasten/testen lädst Du aus dem Netzt zum Beispiel einen aktuelles 3D-Benchmarkprogramm/Test startest den und führst parallel dazu Dein performanctestprogramm aus. So ist Dein Leistungstestprogramm flexibeler.
Hallo,
so kannst du zu Double Convertieren:
Convert.ToDouble(variable);
Wobei ich evt eher die oublevariable in decimal Convertieren würde.
Um die Variable in eine TextBox ausgeben zu lassen verwende doch einfach die ToString() - Methode:
textbox1.Text = variable.ToString();
also ich nutze .NET 1.1 und habe somit nicht das 2nuller
aber mit google habe ich diesen Link gefunden
dort werden ComboBoxen in verschieden Varianten in dem Grid erzeugt
http://www.rustemsoft.com/DataGridViewColumns.htm
mal fogendes in google eingeben und mal Zeit nehemen und suchen
DataGridView + ComboBox
TFTomSun schrieb:
hallo,
einfaches Beispiel:
MemoryStream myStream = new MemoryStream(100000000); //100 MB reservieren
Thread.Sleep(500); //ein bissl warten...
myStream.Dispose(); //eigentlich sollte hier der speicher wieder freigeben werden
ja und genau das ist mein problem ... im taskmanager tut sich gar nix, erst nach dem manuellen aufruf des garbage collectors wird der speicher freigeben... obwohl der sinn einer dispose funktion ja eigentlich ist, den speicher sofort wieder freizugeben. oder lieg ich da falsch?
wenn ja wie gebe ich "offiziell" den speicher sofort frei?
mfg, TFTS
Der Speicher wird wieder freigegeben das steht fest, wie die anderen Kollegen das auch schon sagten.
Der GC ist ein Hintergrundprozess mit niedriger Priorität und sucht nach Objekten die nichtmehr referenziert werden. Er braucht eben mal ne Weile um über alle Objekte einer Anwendung zu Prüfen.
http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_04_005.htm
Hmm,...die Schriftzeichen deuten zwar auf einen marsianischen Dialekt hin, allerdings bin ich mir nicht ganz sicher aus welcher Region des "Roten Planeten" dieser spezielle Vertreter stammt...
Ich vermute aber stark, dass es sich hierbei um eine Art Mischdialekt handelt. Eindeutige Verwandschaft zur Syra-Region ist erkennbar, ebenso wie Einflüsse aus dem Kasei Vallis. Auch liegt die Vermutung nahe, dass der Autor aus der Cydonia-Region oder sogar von einem der Monde Phobos und Deimos stammt...
Oder es ist doch nur "Wirrwar", wie sclearscreen vermutete