Laden...
B
budili myCSharp.de - Member
Student Informationstechnik (BA) B-W Dabei seit 26.04.2007 171 Beiträge
Benutzerbeschreibung
Student Informationstechnik (BA)

Forenbeiträge von budili Ingesamt 171 Beiträge

02.07.2007 - 15:15 Uhr

Moin Leute,

gibt es eine Möglichkeit nach freien Ports zu suchen?
Bzw kann ich prüfen ob ein Socket verwendet wird oder nicht ?

mit


Socket.Connecht(hostep);

kann ich doch nur prüfen ob ein Verbindungsaufbau mögilch ist, mehr nicht....

Gruß
Budi

27.06.2007 - 14:16 Uhr

Hmm ...

bringt das dann auch was??
Also ich meine, wird das komplette Framework dabei geladen?

Gruß
Budi

27.06.2007 - 14:08 Uhr

Mahlzeit,

unter Win XP, dauert es etwas bis mein Prog geladen wird.
Das liegt glaube ich daran, dass bevor mein Prog geladen wird,
lädt Windows das .NET Framework.

Ist es eigentlich möglich das Framework direkt beim booten
schon zu laden ??

Gruß
Budi

27.06.2007 - 09:24 Uhr

Servus,

heißt das --> .NET und USB ist noch nicht so der Hit ... ??

Gruß
Budi

27.06.2007 - 08:21 Uhr

Moin,

also ich finde die Idee nicht schlecht ...

Ich glaub ich mach mir mal zu Hause auch sowas 8)

23.06.2007 - 11:28 Uhr

hm ja, die 20 MB beunruhigen mich eigentlich auch net ...

Nur logge ich in meinem Progg Daten von der seriellen Schnittstelle mit,
und da kommen sehr viele Daten rein.

Diese gebe ich (quasi) sofort in meiner RTB aus ...
Wenn ich das nun paar Tage lang tue, dann verbraucht
meine Anwendung immer mehr Speicher und
der Rechner wird ausgelastet.

Ich nehme mal an, das es an der RTB liegt, da die immer voller wird
und mehrere tausend Zeilen speichern bzw darin scrollen muss.

Gruß
Budi

22.06.2007 - 08:54 Uhr

coole Sache ...

aber wozu ist sowas gut ??

21.06.2007 - 15:50 Uhr

Servus,

hab das mal so gemacht:


String[] Clearer;

        private void TextOptimixer()
        {
            Clearer = AusgaberichTextBox.Lines;
            String text = null;
            
            if (Clearer.Length > 25)
            {
                int counter = Clearer.Length - 25;
                
                for (int i = 0; i <= counter; i++)
                {
                    Clearer[i] = String.Empty; 
                }

                foreach (string temp in Clearer)
                {
                    if (!((temp == "\n") || (temp == "")))
                        text = String.Concat(text, temp, "\n");
                }
                
                AusgaberichTextBox.Text = text;
            }

        }

Was mir jedoch nicht ganz trivial ist:
ich wollte eigentilch statt der For-Schleife den Text aus dem
Array direkt in die RTB ausgeben, so:


AusgaberichtTextBox.Text = Clearer.toString();

Nur das hat er nicht richtig gemacht,
habe danach in der RTB nur den Text gehabt: System.String[] ...
kann ich das Array nicht einfach einfügen?

Gruß
Budi

21.06.2007 - 11:36 Uhr

Moin Leute,

ich habe eine relativ umfangreiche Anwendung mit vielen Controls.
(Falls gewünscht wird, lade ich ein Bild hoch)

Nun bin ich der Meinung, das das Programm relativ viel
Speicher frißt. Wenn ich das im Taskmanager beobachte,
stelle ich fest, das mein Prog ca 20.000k Speicher benötigt.

Ist das viel oder eigentlich okay??

Gruß
Budi

20.06.2007 - 11:57 Uhr

Hallo,

ich habe folgendes Problem:
Von einem Socket lese ich Daten aus ...
Das funktioniert auch soweit.
Dieser Socket läuft parallel zur Hauptanwendung in einem extra Thread.

Nun weiß ich nicht genau, wie ich mir die Daten aus diesem Socket
in der Hauptanwendung ausgeben lassen muss.

Hier der Code vom Socket:


class ConSocket
    {
        
        public static string ConnectSocket()
        {
            IPAddress host = IPAddress.Parse("192.168.100.192");
            IPEndPoint hostep = new IPEndPoint(host, 10000);
            int bytes = 0;
            Byte[] bytesReceived = new Byte[256];
            string page = "Receive Data from DXC:\r\n";

            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
            try
            {
                sock.Connect(hostep);
            }
            catch
            {
                sock = null;
            }

            if (sock != null)
            {
                if (sock.Connected)
                {
                    MB.Info("Verbindung hergestellt!");
                    sock.Send(Encoding.ASCII.GetBytes("testing"));

                    do
                    {
                        try
                        {
                            bytes = sock.Receive(bytesReceived, bytesReceived.Length, 0);
                        }
                        catch (System.Net.Sockets.SocketException Se)
                        {
                            if (Se.NativeErrorCode == 10054)
                            {
                                sock.Close();
                                MB.Info("Die Verbindung wurde vom Remoteserver beendet!");
                                break;
                            }
                        }

                        page = String.Concat(page,Encoding.ASCII.GetString(bytesReceived, 0, bytes));
                    }
                    while (bytes > 0);
                }
            }
            else
            {
                MB.Failure("Connection failed!");
            }
        }

der empfangene Text wird in der Variable "page" gespeichert,
am liebsten würde ich mir das Zeilenweise in der Hauptanwendung
in einer TextBox ausgeben lassen.

so starte ich den Thread in der main anwendung:


private void SocketBtn_Click(object sender, EventArgs e)
{
            Thread socket = new Thread(new ThreadStart(ConSocket.ConnectSocket));
            socket.Start(); 
}

Was meint ihr dazu??

Gruß
Budi

18.06.2007 - 17:42 Uhr

okay, werds mir mal morgen anschauen.

Gruß
Budi

18.06.2007 - 14:23 Uhr

Mahlzeit,

ich habe ein Progrämmchen, das ich immer in der Mitte des Bildschirms
anzeigen lasse.


this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

Wenn ich nun die Anwendung 2x starte, dann werden beide
übereinander in der mitte des Bildschirms platziert
und nur die letzte ist zu erkennen.

Gibt es eine Möglichkeit, die zweite dann etwas zu verschieben
(nach links/rechts/oben/unten) ??

Klingt etwas unverständlich, ich meine das so:
Wenn noch nix in der mitte ist, dann soll das Fenster im CenterScreen
erzeugt werden, falls da schon eins steht, dann verschiebe es ...

Gibts da schon was fertiges, oder muss man es sich selber basteln?

Gruß
Budi

18.06.2007 - 11:56 Uhr

ach so einfach ist das ....

so klappts nun:


if (ActiveControl.Name == "splitContainer")
{
                if(splitContainer.ActiveControl.Name == "RTB")
                    RTB.SelectAll();
}

Gruß
Budi

18.06.2007 - 11:42 Uhr

Habs mal so versucht:


if (ActiveControl.Name == "splitcontainer")
{
                foreach (Control ctrl in splitcontainer.Controls)
                {
                    if (this.ActiveControl.Name == "RTB")
                    {
                        AusgaberichTextBox.SelectAll();
                        break;
                    }
                } 
}

Aber in der zweiten if-Abfrage, bekomme ich wieder nur den "splitcontainer"
und nicht die untergeordneten Elemente.

Klappt irgendwie noch nicht so...

Budi

18.06.2007 - 11:25 Uhr

Hm ich verstehe es zwar,
aber ich weiß net genau wie ich das proggen soll ... 🙁

Könntest du vllt ein wenig Code posten 😉

Gruß
Budi

18.06.2007 - 10:09 Uhr

Hm, hab das mal so versucht:


foreach (Control ctrl in TeilersplitContainer.Controls)
{
    if (ctrl.Name == "RTB") break;
}

So klappts aber nicht, ctrl.Name ist immer gleich "".

Gruß
Budi

18.06.2007 - 09:41 Uhr

Ok, Danke.

Nur funzt das nocht nicht so wie ich das gerne hätte.
Ich habe auf meiner Form einen "SplitContainer".
Im linken Container habe ich einen TabControl und in dem
rechten habe ich eine RTB (RichTextBox).

Wenn ich nun auf etwas klicke und debugge,
dann liegt der Focus immer bei dem SplitContainer
und nicht bei den Controls (Tab,RTB).

Wie kann ich das lösen?

Gruß
Budi

18.06.2007 - 08:14 Uhr

Moin,

wie bekomme ich heraus, welches Control im moment den Focus hat?

Gruß
Budi

17.06.2007 - 16:08 Uhr

Hast du die KeyPreview Eigenschaft der Form auf true gesetzt ?

Gruß
Budi

15.06.2007 - 10:45 Uhr

Das Thema hatte ich schon einmal und am Ende sind wir zu der
Erkenntnis gekommen, das es vom User abhängt etc.

Hier der Thread von mir ...

Da ich aber Rechte im Netzwerk habe, will ich das diese Anwendung
übers Netzwerk läuft.

Kennt jemand vllt ein CodeSnippet mit dem das realisiert wurde?

Gruß
Budi

15.06.2007 - 10:04 Uhr

Moin,

mein aktuelles Programm lässt sich nicht vom Netzwerk aus,
ausführen ... Wenn ich das probiere, dann erscheint eine
"System.Security.SecurityException ... FileIO irgenadwas .."
Ich habe mich damit abgefunden ...

Nun habe ich letztens in der c't gelesen, das es doch möglich ist ...
Kann mir da jemand weiterhelfen??

Gruß
Budi

15.06.2007 - 08:58 Uhr

Hm..

ja herbivore, was eine NullReferenceException ist, weiß ich schon.
Da gabs ein anderes Problem ...

Irgendwie hat er mein Form_Load Ereignis verschluckt und somit
nicht mehr ausgeführt ...

deshalb wurde mySettings auch beim laden nicht initialisiert ...
naja typisch für MS 😁

Gruß
Budi

15.06.2007 - 08:49 Uhr

Das Feld "Textfeld" habe ich auf Scope: User gesetzt, damit lässt es sich
nun compilieren, aber nachdem ich auf den Button klicke,
dann bekomme ich eine "NullReferenceException" ...

In der Zeile:


mySettings.Save();

Gruß
Budi

15.06.2007 - 08:33 Uhr

Servus,

ich habe mir mal das Tutorial durchgelesen und auch
getestet, nur bei mir kommt da eine Fehlermeldung.

Und zwar diese:
_
Einer Eigenschaft oder einem Indexer "Application.Properties.Settings.Textfeld" kann nichts zugewiesen werden -- sie sind schreibgeschützt._

Hier der Code:


private void Form1_Load(object sender, EventArgs e)
        {
            this.LoadConfigSettings();
        }

        private void LoadConfigSettings()
        {
            mySettings = new WindowsApplication4.Properties.Settings();
            this.textBox1.Text = mySettings.Textfeld;
        }

        private void button1_Click(object sender, EventArgs e)
        {
     -->  mySettings.Textfeld = this.textBox1.Text;  <--
            //hier markiert er mir den Fehler ...
            mySettings.Save();
            this.LoadConfigSettings();
        }

15.06.2007 - 07:52 Uhr

Moin,

kann mir jemand den Sinn und Zweck von "DataBindings" erklären?
Habe scho einiges drüber gelesen, aber ne genaue Beschreibung
habe ich nicht gefunden.

Danke

13.06.2007 - 15:30 Uhr

Mahlzeit Forum,

ich habe ein meiner Application ein paar Controls,
diese Controls werden mit Daten gefüttert.

Ist es in .NET möglich diese Daten beim nächsten neustart
der Anwendung wiederherzustellen??
(Also das was zuletzt eingegeben wurde, soll in den
Textfeldern bleiben etc.)

Wie gehe ich das am besten an ... ?
Hab das Thema Konfigurationsdateien ein wenig überflogen,
vllt gibts ja eine leichtere Alternative 8)

Gruß
Budi

13.06.2007 - 14:54 Uhr

ah supiii,
dann kann ich mir ja die Arbeit sparen 😁

Danke

13.06.2007 - 14:31 Uhr

Hallo,

hat die RTB ein Contextmenü??
Oder muss man sich das selber machen?

Frage nur, weil ne normal Textbox ein Contextmenü hat...

Gruß
Budi

12.06.2007 - 14:34 Uhr

Hallo,

ich logge Daten von einer seriellen Schnittstelle in meiner RTB mit.
Mit der Zeit wird es aber soviel bzw. die RTB wird so voll,
das das Prog zu viel Ressourcen verbraucht.

Habe mir überlegt, jetzt nur z.B. die aktuellen 50 Einträge anzuzeigen
und die vorherigen zu löschen.
Ganz löschen darf ich sie nicht, deshalb sollten sie in einem Stream
oder irgendwo anders zwischen gespeichert werden.

Nachdem die Verbindung beendet wird, sollte der gesamte Stream
in die RTB geladen werden.

Kann mir vllt jemand sagen wie ich das am besten mache?

Gruß
Budi

25.05.2007 - 09:32 Uhr

Servus,

gibt es eine Möglichkeit die Mail-Adresse (Internet-Mail-Adresse) aus
Lotus Notes auszulesen? Also sozusagen den Absender.

Gruß
Budi

25.05.2007 - 07:56 Uhr

etwas schöner wär es vielleicht mit einem OpenFile Dialog,
bzw. einem variablen Pfad.


if (OpenFileDialog.ShowDialog() == DialogResult.OK)
{
RTB.LoadFile(TraceopenFileDialog.FileName, RichTextBoxStreamType.PlainText/RichText); 
//je nachdem welches Format du benötigst (PlainText, RichText etc.)
}

24.05.2007 - 11:23 Uhr

Hmm ....

ja es geht eigentlich, solange die RTB nicht arg zu voll wird (damit meine ich,
solange ich keine arg große Dateien laden tue).

Wenn ich mein Programm starte, dann bei ich bei einer Speicherauslastung (siehe
Taskmanager) von ca. 18.200 kB, läuft alles ganz gut.

Wenn ich nun aber große Files in die RTB lade (z.B. ein 10 MB Textfile),
dann bin ich schwupps bei ca 90.300 kB Speicherauslastung ....
Solange ich in der RTB nix tue, ist alles schön und gut, aber wenn ich
hoch und runter scrolle dann steigts weiter an, oder wenn ich die Form
Resize (oje dann stockt es sehr!!) .....

Wenn ich den Text der RTB hinterher lösche bin ich immer noch bei ca. 50.339 kB.
Also frißt ziemilch viel Speicher würde ich sagen oder?

Wenn das Programm mehrere Tage laufen soll, dann müllt er ja den
ganzen Speicher voll ...

Gruß
Budi

24.05.2007 - 10:23 Uhr

Also lohnt sich der Aufwand voerst nciht oder 😁 ???

24.05.2007 - 10:14 Uhr

Mahlzeit Leute,

ich habe in meiner Anwendung ein TabControl mit 2 Register ...
In diesem 2ten Register, habe ich ca. 30 Labels positioniert (plus andere Controls).

Wäre es geschickter wenn ich das direkt auf die Form (Tabcontrol) zeichne?
Zum Beispiel mit:


Graphics grfx = e.Graphics;  //e ist das Event
grfx.DrawString(.....)  

Oder anders gefragt, wäre diese Vorgehensweise "performanter" ??

Gruß
Budi

24.05.2007 - 07:47 Uhr

Moin,

welche Tasten fängst du jetzt ab??

Deaktivierst du nur den Taskmanager oder fängst du auch die
Tasten ab ??

Gruß
Budi

22.05.2007 - 22:30 Uhr

Abend,

ist das mit dem Resizen'n auch typisch für die RTB ??

Budi

22.05.2007 - 22:22 Uhr

Servus,

also prinzipiell ist sowas machbar. Ihr könnt das über sogenannte Windows Hooks
realisieren. In diesem Hook müsst ihr halt die nötigen Tastatur Ereignisse abfangen, bevor sie an das Betriebssystem gelangen.

Ist aber etwas heavy ...
Schaut euch mal den Begriff Hooks in der MSDNA an.

Aber so Sachen wie die WinTaste oder Strg-Esc etc. kann man damit abfangen,
nur nicht alle Tastenkombinationen, so wie talla das schon sagte.

Gruß
Budi

22.05.2007 - 14:42 Uhr

Okay, dann lass ich das erstmal so ...

Und noch ne kleine Frage zur RTB:

Beim Laden von Files, dauert es etwas länger, sobald die Files größer
werden (z.B. ca 10MB oder größer).

so öffne ich die files:


RTB.LoadFile(Datei, RichTextBoxStreamType.PlainText);

Kann man die Ladegeschwindigkeit irgendwie beschleunigen?
Oder ist das typisch für die RTB ??

Gruß
Budi

Edit:
Das selbe Problem habe ich dann auch beim Resize'n der Form,
die RTB passt sich auto. an die neue Größe an!
Und wenn ich eine größere Datei geladen habe, dann dauert es
beim resizen immer etwas länger und die ganze Anwendung flackert ...

Gibts da vielleicht was ?

22.05.2007 - 14:14 Uhr

ahhh ich Depp ...

Merci Beaucoup !!! (jetzt läufts auch einwandfrei)

Aber kannst du mir erklären, wieso er sich da aufhängt?
Theoretisch müsste es doch gehen oder nicht ??

Noch ne andere Frage zur RTB:

Wenn neuer Text Zeilenweise eingelesen wird, bleibt die Scrollbar immer oben,
ich würde aber gerne, das die Scrollbar sich immer da befindet,
wo auch der neue Text eingefügt wird.

Habe das mal so versucht:


private void RTB_TextChanged(object sender, EventArgs e)
{
            RTB.SelectionStart = AusgaberichTextBox.Text.Length;
            RTB.ScrollToCaret();
}

Das funzt so auch, nur switch er immer schnell nach oben und ich
ziehe die Scrollbar dann immer wieder nach unten ...
Ist zwar kaum zu sehen, braucht aber etwas mehr CPU.

Kann man das nicht irgendwie eleganter machen?
Oder die Scrollbar irgendwie auto. nach unten setzen ... ?

22.05.2007 - 13:49 Uhr

Hm also habs jetzt mal so versucht:


String[] lines = AusgaberichTextBox.Lines;

for (int i = 0; i < AusgaberichTextBox.Lines.Length; i++)
{
                InputData = lines[i];
                ButtonCheckFilter();

                if(!string.IsNullOrEmpty(InputData))
                    Data.AppendLine(InputData);
}

das klappt auch bei 1500 Zeilen... Wenn ich aber ne größere Datei einlese,
z.B. 50.000 Zeilen dann hängt sich die Anwendung auf (laut CLR Deadlock) und ich bekomme nur manchmal diese Fehlermeldung von MS VS:

_
ContextSwitchDeadlock wurde erkannt.
Message: Die CLR konnte 60 Sekunden lang keinen Übergang vom COM-Kontext 0x1a1900 zum COM-Kontext 0x1a1a70 durchführen. Der Thread, der Besitzer des Zielkontexts/-apartments ist, wartet entweder, ohne Meldungen zu verschieben, oder verarbeitet eine äußerst lang dauernde Operation, ohne Windows-Meldungen zu verschieben. Eine solche Situation beeinträchtigt in der Regel die Leistung und kann sogar dazu führen, dass die Anwendung nicht mehr reagiert oder die Speicherauslastung immer weiter zunimmt. Zur Vermeidung dieses Problems sollten alle STA-Threads (Singlethread-Apartment) primitive Typen verwenden, die beim Warten Meldungen verschieben (z.B. CoWaitForMultipleHandles), und bei lange dauernden Operationen generell Meldungen verschieben._

Ich verstehe nicht so ganz, was da falsch läuft ...
Kennt sich da jemand aus?

Gruß
Budi

22.05.2007 - 12:14 Uhr

Und das ist es in "String InputData" speicher ... ist das schlimm??

Meinst du das dann so:


String test = RTB.Text;

For ( .... )
{

}

???

22.05.2007 - 11:56 Uhr

So, ich mal wieder ...

Ich habs jetzt gemacht und es funktioniert auch, aber es ist relativ langsam ...
Habe jetzt ca 1500 Zeilen mir filtern lassen und es hat ca. 13 sec. gedauert.

Hier der Code:


for (int i = 0; i < AusgaberichTextBox.Lines.Length; i++)
{

                InputData = AusgaberichTextBox.Lines[i];
                ButtonCheckFilter();
                // das ist die Filterfunktion (ist nur eine Switch-Anweisung)
               // daran kann es nicht liegen

                if(!string.IsNullOrEmpty(InputData))
                    Data.AppendLine(InputData);
}

            AusgaberichTextBox.Clear();
            AusgaberichTextBox.Text = Data.ToString();

InputData ist ein String ... Liegt das vllt daran?

Gruß
Budi

22.05.2007 - 10:14 Uhr

hmm ...

hört sich sehr gut an! Danke
Ich werde es mal versuchen.

Gruß
Budi

22.05.2007 - 10:05 Uhr

Ich muss nur jede Zeile auf einen Buchstaben prüfen,
ist dieser Buchstabe da, dann soll die Zeile gefiltert werden und wenn nicht
dann wird diese Zeile angezeigt.

Edit:
Der zu bearbeitende Text steht vorher in der RichTextBox.
Und die Umbrüche sind mit \n gekennzeichnet.
Am einfachsten wäre es nun, entweder den gesamten Text
wo anders hin zu kopieren und Zeilenweise auszulesen.

Oder sofort aus der RichtextBox Zeilenweise auszulesen und zu verarbeiten.

22.05.2007 - 09:56 Uhr

Hallo,

ich habe eine RichTextBox mit unterschiedlich vielen Zeilen (von 1000 Zeilen
bis zu 100.000 Zeilen), diesen Text muss ich nun auf bestimmte Datensätze
durchsuchen und filtern.

Gefiltert wird Zeilenweise, d.h. wenn an Stelle X das Zeichen Y vorkommt,
dann filter ich die Zeile.

Jetzt meine Frage:
Wie mache ich das am besten?
Gibt es eine Möglichkeit aus der RichTextBox Zeilenweise Text auszulesen?
Oder soll ich gleich den gesamten Text in einen StringBuiler kopieren
und dort bearbeiten?

Gruß
Budi

21.05.2007 - 21:33 Uhr

okay, werde ich morgen mal versuchen ...

Edit:
War so viel einfacher als ich mir das überlegt habe.

Habe es nun so gelöst:


private void RichTextBox_KeyDown(object sender, KeyEventArgs e)
{
            if (e.KeyCode == Keys.F3)
            {
                FindText();
            }
}

21.05.2007 - 16:26 Uhr

Ja das habe ich schon versucht, nur dann muss ich wiederrum jedes mal
in die TextBox klicken, weil nach jedem gefundenen Suchvorgang
wird der Text markiert ....

Gruß
Budi

21.05.2007 - 16:19 Uhr

Habe es zuerst ohne gemacht, aber dann hat er die ersten Einträge
nicht immer sauber markiert, mit Focus(), macht er das so
wie es sich gehört.

Nur kann ich dann wie gesagt, über einen klick weitersuchen.
Ist es nicht möglich diesen ToolStripButton als Acceptbutton zu definieren?

Gruß
Budi

21.05.2007 - 16:07 Uhr

Hmm ...

Habs versucht, aber es ist ein ToolStripButton, den will er nicht
so einfach nehmen. Muss ich da casten (einfach (Button) geht nicht)?

Gruß
Budi

21.05.2007 - 15:47 Uhr

Servus Leute,

ich habe eine Suchfunktion in mein Programm eingebaut,
so ähnlich wie beim Firefox. Funktioniert auch soweit.

Nur ist es momentan so, das ich immer mit der Maus auf den Such-Button
klicken muss, um weiter zu suchen. Ich würde das lieber über die
Enter Taste machen, nachdem ich den Text in die Textbox eingegeben habe.

Beim ersten mal funktioniert das auch, nur wenn hinterher der Text gefunden wird,
wird dieser Text in der RichTextBox markiert. Und wenn ich noch einmal Enter
drücke, dann tut er halt was in der TextBox....

Wie mache ich das nun am besten/einfachsten?

gruß
Budi