Laden...
P
Pedro_15 myCSharp.de - Member
In der Nähe von Berlin Dabei seit 27.10.2005 375 Beiträge
Benutzerbeschreibung

Forenbeiträge von Pedro_15 Ingesamt 375 Beiträge

31.07.2007 - 09:31 Uhr

Klappt Prima.

Danke!

Pedro




Graphics sourceLv = lvSource.CreateGraphics();
SizeF stringSize = sourceLv.MeasureString(lineSource, lvSource.Font); //lvSource ist Listview

lvSource.Columns[1].Width = (int) stringSize .Width;
                            

30.07.2007 - 14:13 Uhr

Danke werde ich mal probieren.

Pedro

30.07.2007 - 13:02 Uhr

Hallo jaensen,

ich glaube das ist genau der Bug.


listView.AutoResizeColumn(1,ColumnHeaderAutoResizeStyle.ColumnContent);

Vergrössert zwar das Feld aber nur bis 262 Zeichen, danach muss man per Hand das Feld vergrössern.

Hat jemand eine Idee, wie man das umgehen kann?

Danke!

Pedro

30.07.2007 - 12:40 Uhr

Hallo,

Danke für die Antworten.

Meiner Meinung nach scheint es aber nur ein anzeige Problem zu sein.
Denn wenn ich per Hand die Spalte vergrössere wird der Text über 400 Zeichen (habe ich getestet) angezeigt.

Die Frage ist nur wie kann ich die Grösse der Spalte abhängig vom Text ändern.

Pedro

30.07.2007 - 12:23 Uhr

Sorry mein Fehler das ListView Feld ist in der Anzeig nur so gross,
wenn ich oben die Spalte vergrössere ist alles zu sehen.

Kann ich irgendwo einstellen, das er immer alles aus einer Spalte anzeigt (mit Scrollbalken)?

Danke Pedro

30.07.2007 - 12:04 Uhr

Das mit dem Code ist eigentlich ganz einfach.


String text = "bla" //länger mehr als 270 z.B
listview_1.SubItems.Add(text);

und im Listview Object wird nur bis zum 262 Zeichen angezeigt.

Pedro

30.07.2007 - 11:18 Uhr

Hallo Ihr,

ich lade eine Textfile in ein Listview Objekt mit zwei Spalten 1. Zeilennummer und 2. Spalte der Text.

Funktioniert auch alles, nur das der Text wird nach 262 Zeichen abgeschnitten.

ListView.View = Details

Hat jemand eine Idee, wie ich das umgehen kann?

Pedro

23.07.2007 - 11:47 Uhr

Vielen Dank, damit wäre MSDN angebunden.

Für Google habe ich noch ein Links gefunden:
http://www.heise.de/ix/artikel/2002/07/118/

Bei Google Direkt
http://code.google.com/

Muss mal schauen, ob da auch was möglich ist.

Wenn jemand damit schon Erfahrung gesammelt hat, würde ich mich über ein kleinen Erfahrungsbericht freuen.

Pedro

23.07.2007 - 11:38 Uhr

Danke werde ich mir anschauen.

Ich dachte das ginge mit diesen Klassen nur, wenn man eine Datenbank-Connection hat.

Pedro

23.07.2007 - 11:32 Uhr

Hallo herbivore,

die Webanfrage sollte aber ein XML Struktur zurückgeben, sonst ist es schwer, das Ergebnis in einer eigenen Anwendung weiterzubearbeiten.

SOAP Schnittstelle ist da schon besser wie von langalaxy erwähnt wurde.

http://services2.msdn.microsoft.com/search/service.asmx
Hat jemand dafür eine Schnittstellenbeschreibung oder kann mir sagen welche Anfragen man stellen kann und was man zurück bekommen kann.

Danke Pedro!

23.07.2007 - 11:26 Uhr

Hallo Ihr,

ich habe mal eine Frage zu den Datencontainer.

Ich habe eigentlich die selben Anfoderungen wie an eine Datenbanktabelle.

  1. Anlegen eine Datenspeichers (Tabelle mit Spalten)
  2. Einfügen von Daten
  3. Ändern von Daten
  4. Suchen nach allen Spalten
  5. Sortieren nach allen Spalten
  6. Vielleicht sogar relationen aufbauen zwischen zwei Tabellen

Und das ganze ohne eine Datenbank zu benutzen.

Welche Klassen und Methoden stellt C# dafür bereit.

Pedro

23.07.2007 - 11:17 Uhr

Hallo Ihr,

gibt es eine Webservice Schnittstelle zu der MSDN Library und oder nach Google?

Wenn ja, kann mir jemand sagen, wo ich die Schnittstellendefinition finde?

Ich möchte eine Suche in den beiden "Wissensdatenbanken" in einer Anwendung bereitstellen.

Vielen Dank für die Hilfe!

Pedro

17.07.2007 - 14:54 Uhr

Aber wo her weiss ich RichTextBox.SelectionStart/SelectionLength ?

Anfang der Zeile und Ende der Zeile????

Pedro

17.07.2007 - 14:03 Uhr

Hallo Ihr,

ich habe ein Problem mit dem Richtextcontrol.

Ich habe in einer Methode, die ermittelt welche Zeile in einem Richtextcontrol gleöscht werden soll und wo eine Zeile hinzugefügt werden soll.

Wie kann ich das realisieren. Wenn ich mit Richtextcontrol.Text den Text auslese und die Zeile lösche und wieder zurück schreibe ist leider die komplette Formatiereung weg.

Wenn ich den text per Richtextcontrol.RTF auslese habe ich keine Zeilen mehr...

Hat jemand eine Idee!

Pedro

12.07.2007 - 22:08 Uhr

Vielen Dank, das sieht sehr gut aus und funktioniert prima.

Danke und schönen Abend!

Pedro

12.07.2007 - 21:40 Uhr

Das verstehe ich nicht.

Der Anwender schliesst das Formular mit dem X und will damit alles abbrechen.

Damit kann ich doch nur das Closing Event abfangen oder?

Pedro

12.07.2007 - 21:20 Uhr

Ich glaube der Fensterhandler ist nicht mehr da.

Deswegen die Fehlermeldung.

Wenn ich diese Variable setze, reicht da die Zeit bis die Thread beendet?

Wie wartet das Schliessen des Form bis der thread geschlossen ist?

Danke für die Hilfe!

Pedro

12.07.2007 - 21:01 Uhr

Nein nein nicht das Form läuft in einem Thread, sondern das Form ruft ein Thread auf. Der Thread im Form aktuallisiert z.b ein Progressbar in dem Formular und jetzt wird das Form geschlossen, da es ja nicht blockiert ist.

Jetzt will er aus dem internen Thread aber beim schliessen noch einmal den Progressbar aktuallisieren.

Jetzt dachte ich ich schliesse den Thread im FormClosing Event, aber da gibt es den Thread nicht mehr. Es schein also irgendwie ein Timingproblem zu sein.

Danke für die Hilfe!

Pedro

PS (Fehler):
Invoke oder BeginInvoke kann für ein Steuerelement erst aufgerufen werden, wenn das Fensterhandle erstellt wurde.

12.07.2007 - 20:51 Uhr

Hallo Ihr,

ich habe folgendes Problem.

Ich habe ein Form in dem ein Thread läuft, der z.B. eine Fortschrittanzeige steuert. Jetzt schliesst der Anwender das Form und ich bekommen eine Exception von der invoke Anweisung der die Progressbar steuert, da das Objekt nicht mehr existiert. Weil die Formularobjekte schon zerstört sind.

Wie kann ich das verhindern?

Pedro

06.07.2007 - 15:24 Uhr

Nein ich will Dateien Vergleichen und das Ergebnis in meinem Programm weiterbenutzen.

Und da es sich um strukturierte Textdateien handelt, will ich erst ein einfachen Vergleichtest machen und dann einen tiefen Test, in dem ich den Inhalt strukturiert vergleiche. Wenn eine Datei identisch ist brauche ich natürlich keinen Tiefentest mehr zu machen.

Pedro

06.07.2007 - 12:10 Uhr

Hallo herbivore,

stimmt die eigentlich Frage kommt nicht so gut raus.

Ich frage mich eigentlich wie ich am schnellste zwei Dateien Vergleichen kann.
Ich muss sehr sehr viele Dateien schnell vergleichen. Ich denke mir, das Byte weise auslesen und das Vergleichen dauert einfach zu lange (im ersten Schritt).

Wenn dann eine Datei schnell als unterschiedlich erkannt wurde möchte ich die Datei einer näheren Untersuchung unterziehen. z.B. die Headerinformationen aus der Datei ausschneiden und dann noch einmal vergleichen. (Definierte Start und EndTags)

Fragen:

  1. Wie kann ich die Datei schnell vergleichen?
  2. Wie kann ich schnell aus einer Datei die Header informationen auschneiden und dann vergleichen.

Es ist ein Massenproblem, das muss alles sehr schnell gehen.

Vielen Dank für die Hilfe!

Pedro

06.07.2007 - 11:42 Uhr

Hallo Ihr,

ich soll zwei Ordner vergleichen. In dem Ordner sind Files (zu 99% Textfiles) enthalten.

Ich suche jetzt eine Methode um diese beiden Verzeichnisse zu vergleichen.
Es soll auch ermitteln, das sich eine Datei verändert hat.

Hat jemand von Euch schon einen Codeschnipsel der das tut?

Vielen Dank ihr würdet mir sehr weiterhelfen.

Pedro

14.06.2007 - 11:58 Uhr

Genau das meine ich.

Ich möchte den Inhalt zeilenweise vergleichen und wie in verschieden Diff Tools anzeigen.

Und das ganze Integriert in einer Windows C# Anwendung.

Ich denke mit zwei RTF Controls sollte das möglich sein, aber vielleicht hat ja schon jemand so etwas gesehen.

Pedro

14.06.2007 - 11:36 Uhr

Hallo,

ich suche für meine Applikation ein File Compare Control.
Ich möchte zwei Files vergleichen und in einem Fenster die Unterschiede anzeigen.

Ist einem schon mal so was über den Weg gelaufen oder hat Code Schnipsel.

Danke

Pedro

13.06.2007 - 18:37 Uhr

Hallo herbivore,

definitiv steht er in der foreach Schleife, ich habe ein Breakpoint nach der foreach Schleife gesetzt, es dauert lange bis er zum Breakpoint kommt und das setzten des Feldes geht sehr schnell.

Aber die Frage ist, warum steht die Anwendung, obwohl die foreach schleife in einem Arbeitsthread ist?

Pedro

13.06.2007 - 18:28 Uhr

Hallo herbivore,

nein die foreach schleife ist die so lange dauert und die ist ja im thread, aber die Anwendung steht trotzdem.

Keine Ahnung woran das liegt.

Pedro

13.06.2007 - 16:54 Uhr

Entschuldie herbivore ,

aber ich dachte ich habe das mit einem Arbeitsthread gemacht und mit invoke die Werte gesetzt.

Oben ist ja der Code.

Diese Vorgehensweise habe ich auch schon x fach gemacht und hat funderbar funktioniert, aber irgenwie ist es heute zu warm.

Ich sehe nicht den denk fehler oben im Code.

Vieleicht kannst du ja mal drauf schauen.

Pedro

13.06.2007 - 16:46 Uhr

Danke für die schnelle Antwort. Geht super schnell.

Aber hast ihr eine Idee, warum das mit dem Thread nicht funktioniert hat und die Anwendung blockiert.

Danke!

Pedro

13.06.2007 - 16:14 Uhr

Hallo Ihr,

ich stehe zur Zeit irgenwie neben mir.

Ich schreibe in der Applikation in eine List<String> Error Messages und will dann alle Error Messages in einem Textfeld ausgeben.

Es dauert bei 5000 Zeilen in der Liste ewig bis das ganz in dem String text ist.

Hat jemand eine Idee?

Dann wollte ich das ganze wenigstens in einem Thread laufen lassen, aber aus welchen Gründen auch immer steht die Applikation trotzdem.

Vielen Dank für die Hilfe!

Pedro



public partial class DialogError : Office2007Form
    {
        private List<String> errorMessage;
        public DialogError(List<String> listError)
        {
            InitializeComponent();
            errorMessage = listError;
            this.UseWaitCursor = true;
            Thread makeErrorMessage = new Thread(initError);
            makeErrorMessage.Start();
        }

        void initError()
        {
            String text = "";
            foreach (String error in errorMessage)
            {
                text += error + "\r\n";
            }
            if (text == "") text = "No Error";

            SetDokuText(text);
            
            
            this.Invoke(new SetEndInitAction(endInit));
        }

        delegate void SetEndInitAction();
        void endInit()
        {
            Cursor.Current = Cursors.Default;
            this.UseWaitCursor = false;

        }

        delegate void SetDokuTextAction(string text);
        private void SetDokuText(string text)
        {
            if (this.textBoxX1.InvokeRequired)
            {
                SetDokuTextAction d = new SetDokuTextAction(SetDokuText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                textBoxX1.Text = text;
                textBoxX1.Select(0, 0);
            }
        }
            
    }

08.03.2007 - 13:09 Uhr

Oh, ich glaube, das ist nicht die Lösung.

Wenn ich bei jedem TextChanged Event den gesamten Text vergleiche.
Man könnte über die Textlänge gehen, aber das finde ich auch nicht so toll.

Hat irgend jemand noch eine andere Idee.

Pedro

08.03.2007 - 12:57 Uhr

Hallo Ihr,

ich habe mal eine Frage, wo ich zur Zeit nicht weiter komme.

Kann ich in einem RichText Control erkennen, wenn ein Text reinkopiert wird.

OnTextChanged unterscheidet nicht zwischen einem Zeichen reinschreiben und viele Zeichen einfügen. Es wird jeweils nur einmal ausgeführt.

Ich brauche nur den Unterschied zwischen Text reinkopiert und ein Zeichen schreiben (als auslöser für textaktion).

Goldlösung wäre natürlich, wenn ich noch wüsste wo der Text reinkopiert wurde und wieviele Zeilen und Zeichen.

Danke für die Hilfe!

Pedro

28.02.2007 - 09:47 Uhr

Hallo,

erstelle auf dem Server eine .htaccess datei in dem Ordner wo die Dateien liegen mit folgendem Inhalt. (Apache)
Wenn du IIS hast kannst du das bestimmt auch irgenwo einstellen.

AddType application/x-ms-application application
AddType application/x-ms-manifest manifest
AddType application/octet-stream deploy

Ich hoffe, das war das Problem.

Pedro

27.02.2007 - 16:47 Uhr

zu 1.
Mit Rechte Maustaste selectieren


if (e.Button == MouseButtons.Right)
{
     TreeNode test = myTreeView1.GetNodeAt(e.X, e.Y);
     if (test != null)
                {
                    myTreeView1.SelectedNode = test;
                }
}

Zu 2. Setzte myTreeView1.SelectedNode = dein TreeNode

Pedro

27.02.2007 - 16:32 Uhr

Das ist ja spannend, bin immer von 1 byte = 1 Zeichen ausgegengen.

Jetzt habe ich aber keine Ahnung, wie ich das umgehen soll.

Pedro

27.02.2007 - 15:29 Uhr

Hallo herbivore,

mit dem temp ist so eine Sache, ich bin bei den Variablen Namen manchmal einwenig unkreativ.

Mit dem Buffer verstehe ich nicht ganz. Ich lese 1024 Zeichen und schreibe sie weg und lese dann die nächsten. Es kann sein das die Grenze in einem Text ist, aber beim nächsten Lesen wird doch der Text weitergeschrieben.

Kannst du das mit dem Bufferproblem noch einmal näher beschreiben was du meinst.

Pedro

27.02.2007 - 09:15 Uhr

Guten Morgen,

ich habe es jetzt so umgesetzt.


private void readLog()
        {
            Thread.Sleep(1000);
            using (FileStream fs = new FileStream(Path.GetTempPath() + "Test.log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                byte[] b = new byte[1024];
                UTF8Encoding temp = new UTF8Encoding(true);
                while (thread_started)
                {
                    Thread.Sleep(2000);
                    while (fs.Read(b, 0, b.Length) > 0)
                    {
                        string text = temp.GetString(b);
                        SetLogText(text);
                        b = new byte[1024];
                    }
                }
            }
        }

Diese Methode wird in einem Thread aufgrufen und schaut alle 2 sec, ob was neues zum lesen da ist und liest bis zum ende und wartet wieder.
Das ganze wird durch setzen eine thread_started variable beendet.

Ist das so OK?

Pedro

26.02.2007 - 14:11 Uhr

Also ich habe zwar einwenig in der FileStream Klasse gelesen, aber ich steh völlig auf dem Schlauch.

Hast jemand vielleicht noch ein kleinen Tip, wie ich das machen soll.

  • Streamöffen alles lesen was da ist.

  • Position merken

  • Warten (z.B. 5 sec)

  • Schauen ob was dazu gekommen ist (wie??)

  • zur Position gehen - Rest lesen

  • Warten

usw.

Wenn andere Anwendung beendet noch einmal

  • Schauen ob was dazu gekommen ist (wie??)
  • zur Position gehen - Rest lesen
  • Warten

dann abbruch

Über jeden Tip bin ich dankbar!

Pedro

26.02.2007 - 13:32 Uhr

Wie macht man das?

muss ich den Stream neu öffnen und wieder einlesen?

Danke für die Hilfe!

Pedro

26.02.2007 - 13:23 Uhr

Hallo herbivore,

es geht mit FileShare.ReadWrite, warum entzieht sich mir.

Wie gehe ich jetzt weiter vor, muss ich in abständen von sekunden die Datei jetzt immer wieder lesen, oder kann ich mit dem Filestream das eleganter lösen?

Pedro

26.02.2007 - 12:55 Uhr

Das geht..

in bla steht der Stand drin.
Hast du eine Idee wie ich das ganze in jetzt in eine Textbox bekomme.

Zum Beispiel so:
type D:\text.log

aufrufen und die Standardausgabe umleiten und diese in der Textbox anzeigen.

string result = process.StandarOutput.ReadToEnd();

Aber soll ich das alle 5 sec machen und immer den Kompletten Text posten, das scheint mir sehr Zeit intensiv zu sein.

Jemand eine Idee?

Pedro

26.02.2007 - 12:43 Uhr

Damit geht es nicht. Leider...
Selbe Meldung..

Dann geht es wohl nicht mit dem Zugriff oder????

Danke für die Hilfe!

Pedro

26.02.2007 - 12:29 Uhr

Hallo herbivore,

ich habe das jetzt mal versucht.

ich bekommen:
Der Prozess kann nicht auf die Datei D:\Test\Dev.log zugreifen, da sie von einem anderen Prozess verwendet wird.

FileStream fs = new FileStream(@"D:\Development\ITSM\Test\DevPublisher.log", FileMode.Open)

Heisst es das ich die Datei erst nach dem beenden einlesen kann und keine Chance habe im laufenden Betrieb einen Status zu erhalten?

Danke für die Hilfe!

Pedro

26.02.2007 - 10:53 Uhr

Hallo Ihr,

ich habe mal wieder eine Frage.

Ich starte in meiner Anwendung eine andere Anwendung, diese Anwendung schreibt ein Logfile. Dieses Logfile möchte ich gerne in meiner Anwendung in einer Textbox anzeigen.
Das logfile wird permanent geschrieben und kann sehr gross werden.

Wie kann ich die Logdatei überwachen und aktuell im Textfile sehen.

Ideen?

Pedro

24.01.2007 - 15:47 Uhr

Danke für diese Lösung.

Dieses Prinzip hatte ich schon verstanden.

Die Problem ist doch einwenig komplizierter

Es ist kein Doppeltes " sondern zwei einzelne Hochkommas ''.

So muss man ermitteln, ob der String abgeschlossen wird und neu aufgeht oder ob es ein escape hochkomma ist.
Den Fall das der String zu geht und gleich wieder auf gibt es aber nicht, aber man muss es zumindest prüfen.

z.B.
test text 'das ist Peter' 's Eisenbahn'

Danke Pedro!

24.01.2007 - 13:45 Uhr

Vielen Dank für die Mühe.

Aber es geht mir nicht um das ersetzen, sondern um das behandeln von Stringketten die in Hochkommas eingegrenzt sind, um das herausfinden welche Hochkommas zu welchen Stringkette gehören.

Dabei ist es ein Problem, das es möglich ist, dass in den Hochkomma Texten ebenfalls Hochkommas drin stehen können. Um diese zu unterscheiden, werden diese mit doppelten Hochkommas (zwei einzelne Hochkommas) geschrieben.

Aufgabe ist den Hochkommatext zu ermitteln.

Beispiel Text:
test text 'das ist Peter''s Eisenbahn'

Ergebnis
das ist Peter's Eisenbahn

oder

Beispiel Text:
test text 'das ist Peter''s Eisenbahn'''

Ergebnis
das ist Peter's Eisenbahn'

Vielen Dank!

Pedro

23.01.2007 - 21:07 Uhr

So einfach ist es leider nicht, denn ein einfaches ersetzen geht leider nicht.

Trotzdem Danke für die Hilfe!

Pedro

23.01.2007 - 13:43 Uhr

Es ist ein escaped.

so wie in &#39;

Hast du eine Idee?

Pedro

23.01.2007 - 11:27 Uhr

Verstehe dein String nicht richtig, was willst du damit codieren.

Pedro

23.01.2007 - 11:16 Uhr

Danke das hört sich schon ganz gut an mit dem Kellerautomaten.

Aber mit den Inneren Klammer geht das glaube ich auch nicht.

Denn innerhalb von Klammern sind hochkommas doppelt und müssen auch nicht geschlossen werden.

z.B.

test text 'das ist Peter''s Eisenbahn'

Ergebnis
das ist Peter's Eisenbahn

Nochmal Danke für die Hilfe

Pedro