Laden...
B
Bundy.NET myCSharp.de - Member
Schuhverkäufer Elbental Dabei seit 23.10.2007 76 Beiträge
Benutzerbeschreibung

Forenbeiträge von Bundy.NET Ingesamt 76 Beiträge

19.08.2008 - 12:59 Uhr

dann schu dir meinen punkt 3 nohcmal an und dann nochmal deinen punkt 3.

Das heißt es wäre besser der Sendemethode alle Pakete zu geben. Der Socket wird einmal aufgemacht und nach jedem verschickten Paket ein Ereignis ausgelöst. Sind alle Pakete verschickt wird der eine Socket wieder dicht gemacht.
Ist es das?

Muß ich mir dann selber ein eigenes Ereignis basteln? Das hab ich nämlich noch nie gemacht. Immer nur an "bestende" Ereignisse eine Methode "rangeklatscht".

19.08.2008 - 12:42 Uhr

Tut mir echt leid, aber ich seh echt den Fehler nicht.
Geh ich denn nicht folgendermaßen vor:

  1. Datei zerlegen
  2. Socket öffnen
  3. Paket verschicken
  4. Socket schließen

Wie du gesagt hast habe ich jetzt hier mal Punkt 1 und 2 zu deiner Reihenfolge getauscht.

19.08.2008 - 12:11 Uhr

Das heißt vom Prinzip her mache ich es richtig?
Aber wo liegt dann mein Fehler? Kann ich denn irgendwie prüfen, ob der Socket wirklich geschlossen und platt gemacht wurde?

19.08.2008 - 11:45 Uhr

Das Zerlegen und Versenden habe ich allerdings schon in einem Backgroundworker realisiert. Ich habe mal das Aktualisieren der Fortschrittsleiste rausgelöscht, weil das wahrscheinlich hier nicht interessiert.

Ich hole mir also aus der Datenhaltungsschicht das nächste Dateisegment. Wenn die übergebene Variable "fertig" wahr wird weiß ich, dass ich alle Dateisegmente bekommen habe.
Ich habe in meinem Programm ein spezielles Sendepaket definiert, dass ich hier erstelle. Der Datenteil des Sendepaktes ist mein Dateisegment. Hinter der Senden-Methode wird das Sendepaket in ein Bytearray umgewandelt und dann mit der Methode aus meinem ersten Beitrag gesendet.


        /// <summary>
        /// Hintergrundmethode, die die Datei versendet.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DateiSenden(object sender, DoWorkEventArgs e)
        {


                // Alle Teile senden.
                while (!this.Hintergrundarbeiter_fuer_den_Dateiversandt.CancellationPending && !fertig)
                {
                    // Daten die an den anderen Client gesendet werden.
                    // Beim letzten Dateisegment ist fertig == true
                    zu_sendene_Daten = this.dateiverwaltung.Hole_Dateiausschnitt_als_Bytearray(out byte_array_laenge, out fertig);

                    // Sendepaket erstellen und abschicken.
                    this.hauptfenster.sendeNachricht(this.Sendepaket_fuer_Dateiversandt_erstellen(zu_sendene_Daten,byte_array_laenge.ToString()));
               }
          }
19.08.2008 - 11:04 Uhr

Erstmal besten Dank für die Antworten. Das ging ja verflucht schnell! 🙂

Ich will den Fortschritt über eine Fortschrittsleiste anzeigen. Jedes mal, wenn ein Paket verschickt wurde zählt er den Fortschritt hoch und zeigt dies an.
Wenn ich die Datei komplett rüberschicke weiß ich nur wann ich anfange und wann ich fertig bin mit verschicken, aber nicht wieviel Prozent ich wann verschickt habe. Das ist der Hintergrund für das Zerteilen und Verschicken der einzelnen Pakete.
Oder gibt es da vielleicht ne geschicktere Lösung?

19.08.2008 - 10:17 Uhr

Hallo zusammen,

trotz intensiven Suchens und Rumprobierens habe ich es noch nicht geschafft, dass ich bei meinem Programm auch Dateien verschicken kann, die 10 MB oder grösser sind. Verschicke ich aber zum Beispiel Bilder, die 800 kb gross sind klappt das soweit. Auch sowas wie Chatten klappt ohne jegliche Probleme.

Die Dateien, die ich versenden möchte zerteile ich erst in 2048 grosse Byte Teile und verschicke sie dann. Bei 10 MB kommt da natürlich was zusammen, aber ich weiß immer wie weit er ist und kann dies auch dem Nutzer über eine Fortschrittsanzeige darstellen.
In meiner Versendenmethode wird irgendwann eine Exception mit dem Fehlercode 10048 ausgelöst und der Meldung, dass die Netzwerkadresse nur einmal verwendet werden darf.

Meine Versandmethode sieht so aus:


// Sendet die Nachricht an die angegebene IPAdresse.
        public void SendeNachricht(Byte[] nachricht, String IPAdresse)
        {
            try
            {
                // Entpunkt und Socket erstellen
                IPAddress ipAdresse = IPAddress.Parse(IPAdresse);
                IPEndPoint ipEndpunktEmpfaenger = new IPEndPoint(ipAdresse, this.port);
                Socket SenderSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                

                // Timeout auf Minimlalwert setzen.
                SenderSocket.SendTimeout = 500;

                // Mit dem Empfänger verbinden.
                SenderSocket.Connect(ipEndpunktEmpfaenger);

                // Senden
                SenderSocket.Send(nachricht);

                // Socket schließen
                SenderSocket.Close();
            }
            catch (SocketException) { }
        }

Ich hatte angenommen, dass durch

SenderSocket.Close();

alles geschlossen wird und ich dann das nächste Paket schicken kann. Aber scheinbar "verschluckt" er sich ja irgendwo.
Nur ich frag mich warum oder ob ich herausbekommen kann, ob er noch am Übertragen ist bzw. die Leitung noch offen ist sodass ich solange warten kann.

Besten dank schonmal für eure Hilfe. Wenn ich wichtige Infos zum Lösen des Problems vergessen haben sollte gebt kurz bescheid und ich reiche diese sofort nach.

01.04.2008 - 08:26 Uhr

Hi!

Ich kanns selber noch kaum glauben, aber es scheint so als hätte ich eine Lösung gefunden. Ich hab ein kleines Konsolenprogramm geschrieben, dass ich unter "Benutzerdefinierte Aktionen" -> "Commit ausführen" eingebunden habe.
In dem Programm bin ich zum einen wie in der MSDN beschrieben vorgegangen (http://msdn2.microsoft.com/de-de/library/tafsxecs(VS.80).aspx) , aber habe dann zusätzlich folgende 2 Zeilen reingehauen:

                SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
                fSecurity.AddAccessRule(new FileSystemAccessRule(sid, System.Security.AccessControl.FileSystemRights.FullControl, System.Security.AccessControl.AccessControlType.Allow));

Jetzt hat "Jeder" Zugriff auf die Datei und das Programm läuft.

28.03.2008 - 09:17 Uhr

Hi Leute!

Ich hab folgendes Problem. Mein Programm ist fertig und ich hab jetzt ein Installationsprogramm erstellt, um mein Programm auf anderen Rechnern auszubringen. Mein Programm hat eine SQL Compact Datenbank, die unter:
Dokumente und Einstellungen\All Users\Anwendungsdaten\MeinProgramm\datenbank.sdk installiert wird. Dazu hab ich auch in meinem Installationsprogramm dem Ordner als "DefaultLocation" [CommonAppDataFolder] angegeben. An die richtige Stelle wird die DB installiert, aber als eingeschränkter Nutzer (in einer Domäne) hab ich keinen Zugriff darauf. Schon beim Starten meldet mein Programm: "Access to the datebase file ist not allowed". Jetzt hab ich die DB in das Verzeichnis kopiert, damit alle Zugriff haben und es klappt trotzdem nicht. Gibts noch ne Option oder Möglichkeit die Rechte für die DB bei der Installation so zu setzen, dass alle Zugriff darauf haben? Nebenbei: Im Ordner in dem die DB liegt kann ich ohne Probleme als eingeschränkter Nutzer schreibend draufzugreifen. Nur nicht auf die DB. Ich versteh das nicht.

Besten Dank schonmal!

27.03.2008 - 08:39 Uhr

Super danke für die Info.
Nur so interessehaler: Ist da eigentlich bekannt wann ein Management Studio rauskommt, dass auch die v3.5 verwendet?

26.03.2008 - 12:49 Uhr

Ok danke! Ich versuch mich da mal etwas einzulesen.

Dann noch eine Nachfrage:

Wenn ich mit dem Microsoft SQL Server Management Studio Express 9.00.3042.00 eine SQL Compact Server DB bzw. Datei erstelle welche DB Version hat die dann?

Ich frag deshalb, weil mein Programm mit dem Ausnahmefehler abbricht ich würd versuchen auf eine ältere Datenbank zuzugreifen. Die DB hab ich mit dem Microsoft SQL Server Management Studio Express 9.00.3042.00 erstellt. Als ich dann mit meinem Programm die DB aktualisiert habe konnte ich dann nicht mehr mit dem Microsoft SQL Server Management Studio Express 9.00.3042.00 draufzugreifen. Oder verwende ich womöglich nicht die neuste Version von Microsoft SQL Server Management Studio Express? Ich konnte zumindest keine neuere finden. Aber nachdem ich nicht auf die MS Synchronisattion Service gekommen bin bin ich mir nicht sicher, ob ich da auch was übersehen haben könnte.

Also nachmals besten Dank!

26.03.2008 - 10:49 Uhr

verwendetes Datenbanksystem: Access 2007 und Sql Server Compact 3.5

Hi Leute,

ich habe leider nirgendwo etwas gefunden wo erklärt wird wie man am geschicktesten eine Access 2007 DB in SQL Server Compact 3.5 rüberkopieren kann. Kann man das überhaupt mit Bordmitteln oder müßte ich da ein kleines Programm schreiben?

Ansonsten hat das Erstellen der SQL Server Compact Datenbank Datei geklappt und den Verweis in VS 2005 hab ich auch hinbekommen, aber nun stellt sich halt für mich die Frage wie ich die Daten rüberkopiert bekomme.

Schonmal vielen Dank für die Info!

22.02.2008 - 14:11 Uhr

Hi cinteX,

ich hab bei meinem aktuellen Programm auch einen MDIContainer und ein MDIChild in dem aber ein DataGridView ist. Um das Kopieren hinzubekommen habe ich im MDIContainer einen Menüeintrag Kopieren gemacht und diesem den Kurzbefehl Strg+C zugewiesen. Außerdem hab ich folgendes als Ereignis geschrieben.


        private void kopierenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                UnterfensterListe unterfenster = (UnterfensterListe)(this.ActiveMdiChild);

                DataGridViewCell zelle = unterfenster.dataGridViewUFL.SelectedCells[0];
                String zwischenablage = zelle.Value.ToString();
                Clipboard.SetText(zwischenablage);
            }
            
            catch (NullReferenceException)
            {
            }
        }

Und das Kopieren klappt reibungslos.
Wenn man jetzt das DataGridView mit einem Textfeld ersetzt sollte das damit auch funktionieren.

Ich hoffe ich konnt dir helfen.

21.02.2008 - 19:48 Uhr

Hallo Leute,

über das Forum bin ich an http://www.gotreportviewer.com gekommen, um meine Daten zu drucken. Das klappt echt wunderbar.
Nur ich such mich dumm und dämlich wo man das Layout standardmäßig auf DINA4 stellen und die Seitenränder festlegen kann. Im Forum hab ich eher nur Beiträge gefunden wie man so einen Druckdialog überhaupt herbekommt oder wie man direkt druckt. Aber eben nicht wie man das Drucklayout ändern kann.

Kann mir da von euch jemand auf die Strünge helfen?

Besten Dank schonmal.

05.12.2007 - 09:14 Uhr

Vielen Dank für deine ausführliche Antwort!
Ich werd mir das in den nächsten Tagen alles mal ansehen und versuchen mein Programm dann darauf umzustellen.

Also nochmal besten Dank.

30.11.2007 - 13:53 Uhr

Erstmal dickes Dankeschön, dass du geantwortet hast. Hab ich schon fast nicht mehr damit gerechnet, dass jemand ne Idee hat.
Ich hab das Ganze mal mit Word 2003 getestet und damit hat alles wunderbar geklappt. Hab auf dem Client-PC nicht mal die PIA installiert.

Original von Rainbird
Du kannst nicht eine Anwendung auf der neusten Word-Version entwickeln und dann erwarten, dass sie einfach so schnipp auf einer fünf Jahre älteren Word-Version läuft. Wenn Du Word Xp unterstützten willst, solltest Du Deine Anwendung für Word XP entwicklen und dann auf die Abwärtskompatiblität der neueren Versionen bauen.

Dann muss ich das im FAQ falsch verstanden haben. Ich hatte gedacht, dass man die PIAs auch nur auf dem Client-PC installieren bräuchte. ("Zu beachten ist, dass die Primary Interop Assemblies bei Verwendung nicht nur auf dem Entwickler-PC benötigt werden, sondern auch mit der .NET Applikation mit an die Clients verteilt werden müssen." Zitat Office FAQ).
Da ich dann auch nur Befehle aus den Word XP Beispielen genomme habe hatte ich gehofft, dass das dann schon passt.

Original von Rainbird
Erfahrungsgemäß gibt es damit aber häufig Probleme. Deshalb kann ich Dir nur empfehlen, die PIAs komplett zu vergessen und alles mit Reflection zu machen, wenn Du verschiedene Word-Versionen unterstützen willst. Natürlich darfst Du nur Funktionen verwenden, die in der ältesten Version und auch in allen anderen Versionen die selbe Signatur haben.

Gibt es denn zu Reflection eine gute Anleitung. Zum Office FAQ und den PIAs hattest du ja einiges gepostet mit dem man sich reinfinden kann. Als ich hier im Forum gesucht habe, habe ich nur Fragen zu bestimmten Themen gefunden. Die waren quasi schon mind. einen Schritt weiter als ich.
Kann ich damit dann auch eine Anbindung an Word 2000 und XP/2002 hinbekommen?

Also nochmal besten Dank!

24.11.2007 - 12:22 Uhr

Und was wär wenn du deine Infos in eine DataTable schreibst. Da weiß ich zufällig, dass es die Methoden DataTable.WriteXMLSchema und DataTable.ReadXMLSchema gibt. Die machen alles automatisch. Und mit einer DataTable bist du flexibler als mit einem Array.

24.11.2007 - 12:12 Uhr

Hallo Leute,

ich hab ein Programm geschrieben mit dem ich auf Word sowohl lesend als auch schreibend zugreife. Funzt auch soweit bei mir alles. Hab mit VS2005 versucht ein Installationsprogramm zu machen. Nach der Installtion auf einem anderen Rechner kommt beim Öffnen einer Word-Datei immer eine System.AccessViolation Exception. Ich hab bei mir Word2007 mit den passenden PIA installiert. Da ich weiß, dass auf dem anderen Rechner Word XP installiert ist hab ich die PIA für Office XP runtergeladen.

[Edit] Statt mit VisualStudio hab ich mein Installationsprogramm jetzt mal mit innoSetup gemacht. Der Nutzer kann nun auswählen welches Office er hat und die passenden Primary Interop Assemblies werden installiert. Leider kommt immernoch die gleiche Exception (siehe unten). Desweiteren habe ich bei den Verweisen:

  • Microsoft.Office.Core
  • Microsoft.Office.Interop.Word

die Variable "Lokale Kopie" auf TRUE gesetzt. Alles ohne Erfolg.
Könnte es sein, dass ich auf dem Client die dlls Version 10.0 installieren muß? Ich greif wirklich nach jedem Stohhalm.
[/EDIT]

Könnte es sein, dass ich doch irgendetwas vergessen, übersehen oder falsch gemacht habe?

Wäre super wenn mir da einer helfen könnte.

Gibt es eigentlich neben der englischen Anleitung auch eine deutsche Anleitung, die erklärt wie man ein Installtionsprogramm erstellt, das auch automatisch die PIA mitinstalliert?

Hier noch die Ausgabe wenn die Ausnahme auftritt:


Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

\************** Ausnahmetext **************
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
bei Microsoft.Office.Interop.Word.Documents.Open(Object& FileName, Object& ConfirmConversions, Object& ReadOnly, Object& AddToRecentFiles, Object& PasswordDocument, Object& PasswordTemplate, Object& Revert, Object& WritePasswordDocument, Object& WritePasswordTemplate, Object& Format, Object& Encoding, Object& Visible, Object& OpenAndRepair, Object& DocumentDirection, Object& NoEncodingDialog, Object& XMLTransform)
bei Datenhaltung.WordZugriff.holeWoerterListe(DBZugriff dbz, DataTable& dt, Object fileName)
bei Fachkonzept.Wordsuche.sucheWort(DataTable& dt, Object datei)
bei GUI.Hauptfenster.wordzugriff_Click(Object sender, EventArgs e)
bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
bei System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.ToolStrip.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


\************** Geladene Assemblys **************
mscorlib
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
GUI
Assembly-Version: 1.0.0.0.
Win32-Version: 1.0.0.0.
CodeBase: file:///C:/Programme/MTW%20Verlag/Thesaurus/GUI.exe.
----------------------------------------
System.Windows.Forms
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Drawing
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
Fachkonzept
Assembly-Version: 0.0.0.0.
Win32-Version: 0.0.0.0.
CodeBase: file:///C:/Programme/MTW%20Verlag/Thesaurus/Fachkonzept.DLL.
----------------------------------------
Konfig
Assembly-Version: 1.0.0.0.
Win32-Version: 1.0.0.0.
CodeBase: file:///C:/Programme/MTW%20Verlag/Thesaurus/Konfig.DLL.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------
Datenhaltung
Assembly-Version: 0.0.0.0.
Win32-Version: 0.0.0.0.
CodeBase: file:///C:/Programme/MTW%20Verlag/Thesaurus/Datenhaltung.DLL.
----------------------------------------
System.Data
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll.
----------------------------------------
System.Xml
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
System.Configuration
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
----------------------------------------
System.Transactions
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll.
----------------------------------------
System.EnterpriseServices
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll.
----------------------------------------
mscorlib.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.42 (RTM.050727-4200).
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
Microsoft.Office.Interop.Word
Assembly-Version: 12.0.0.0.
Win32-Version: 12.0.4518.1014.
CodeBase: file:///C:/WINDOWS/assembly/GAC/Microsoft.Office.Interop.Word/12.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Word.dll.
----------------------------------------

\************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.

13.11.2007 - 13:16 Uhr

Wenn ich jetzt nicht doch noch was übersehen haben sollte, sollte es jetzt klappen. Die Idee mit dem HEX-Editor war duffte!

Laut dem ist mein Zeichen: 0x001F

Dann hab ich in mein Programm folgendes eingefügt:

char[] zeichen = new char[] { char.ConvertFromUtf32(0x001F)[0] };
wort = wort.TrimEnd(zeichen);

Und jetzt scheint er das dreckelige 😁 Zeichen abzuschneiden.

Danke nochmals für eure Hilfe!

P.S. Wenn ich doch was übersehen haben sollte würd ich mich nochmal melden. Ich hoffe aber mal, dass das nicht der Fall ist. 😁

12.11.2007 - 15:56 Uhr

Hab ich versucht hat aber leider nicht hingehauen. Ich hab dann noch versucht:


char[] zeichen = new char[] { '\r'}
wort = wort.TrimEnd(zeichen);
zeichen = new char[] { '\n' }; 
wort = wort.TrimEnd(zeichen);

Aber das hat auch nix gebracht. Am Ende vom Codeblock hab ich jetzt ausversehn so ein Rechteck hinbekommen. Hab das mal dagelassen bevor ich das nicht nochmal hinbekomme. 😁
Hast du eventuell noch ne Idee?

12.11.2007 - 15:09 Uhr

Hi Leute,

in meinem Programm werden alle Wörter einer Word-Datei eingelesen und weiterverarbeitet. Das klappt auch fast alles anstandslos.
Weil ich zum testen verschiedene Dokumente eingelesen ist mir bei einem Worddokument folgendes aufgefallen:
Das letzte Zeichen einiger weniger Wörter haben am Ende ein Rechteck. Vielleicht hat das Teil auch einen Namen, aber den kenn ich auch nicht. Aber ich denke ihr wisst bestimmt was ich meine.
Wahrscheinlich ein Sonderzeichen oder ein Absatz, der nicht vernünftig eingelesen worden ist.
Weiß einer von euch wie ich dieses letzte Zeichen abschneiden kann? Das Rechteck kann ich ja nicht in den Quelltext kopieren und ein Escape-Zeichen statt des Rechtecks hab ich auch nicht gefunden.

Schonmal danke für eure Hilfe!

05.11.2007 - 14:38 Uhr

danke dr4g0n76!

Mit notepad hat es hingehauen. Jetzt will ich es mal mit Word versuchen.

Edit: Hat auch mit Word hingehauen! Ich bin erstmal begeistert! Aber er schließt meine Anwendung, wenn ich Word über das X schließe. Schließe ich Word über Datei -> Beenden passiert das nicht. Ich hab Word 2007.

Hast du da vielleicht noch einen Tip für mich dr4g0n76?

05.11.2007 - 11:11 Uhr

Hi webbi,

hast du das irgendwie hinbekommen? Würd mich nämlich auch brennend interessieren.
Ich muss auch zu meiner Schande gestehen, dass ich die SetParent Funktion noch am Suchen bin.

24.10.2007 - 10:53 Uhr

Danke für den Hinweis! Das erleichtert das Ganze dann doch.
Kann man sich noch mehr aufs wesentliche konzentrieren. 🙂

Im Tutorial hab ich die Anmerkung jetzt auch gefunden.

Anmerkung: Es empfiehlt sich, vor dem einleitenden Anführungszeichen des Pattern-Strings ein @-Zeichen zu setzen. Dies bewirkt, dass im String vorkommende Anführungszeichen und Backslash weniger verwirrend angegeben werden können. Anführungszeichen verdoppelt man (ohne Verwendung von @ vor dem String müsste man \“ für die Verwendung des Anführungszeichen schreiben), Backslash können normal angegeben werden (wenn ohne @ doppelt: \). (Dies trifft nicht zu, wenn das Pattern zur Laufzeit definiert wird.)

Nochmals vielen Dank!

23.10.2007 - 21:27 Uhr

Jo super vielen Dank!

So hab ich es hinbekommen:

suchbegriff = Regex.Replace(suchbegriff, "\\*\\s{2,}", "%");
23.10.2007 - 20:29 Uhr

Danke herbivore für die verdammt schnelle Antwort!

Erstmal danke für den Hinweis, dass ich statt "\%" "%" schreiben muß.

Aber wie muss ich denn den regulären Ausdruck ändern, damit er beispielsweise aus dem String "Bundy* " den String "Bundy%" macht?

23.10.2007 - 19:44 Uhr

Erstmal hallo!
Hab mich gerade eben angemeldet und muß sagen, dass mir das Forum (Forumssuche sei dank) schon ne Menge weitergeholen hat, Nur leider hänge ich jetzt an einer Sache bei der ich die Lösung einfach nicht sehe. Wahrscheinlich bin ich betriebsblind.

Ich möchte eine Zeichenfolge (ein * und mehrere Leerzeichen) durch ein % ersetzen. Ich hab mir schon das Regex Tutorial durchgelesen und das Regex-Lab runtergeladen. Mit meinem Ausdruck find ich im Regex-Lab auch die Zeichenfolge. Daher denke ich, dass der Reguläre Ausdruck in Ordnung ist. Aber trotzdem klappt das nicht was ich will.

In meinem Programm hab ich folgendes geschrieben:

Regex.Replace(suchbegriff, "^\\*\\s{2,}$", "\\%");

Bin ich da prinzipell auf dem Holzweg oder ist da nur ein blöder Fehler drin?

Schonmal vielen Dank für eure Hilfe.