Zum Inhalt springen

Tician

Mitglieder
  • Gesamte Inhalte

    541
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    9

Alle Inhalte von Tician

  1. Moin moin ich wieder^^ Ich habe ein Programm das Daten in eine Datenbank schreibt, aber sobald ich die Tabelle in der ich die Datenbank veranschauliche erneuer funktioniert es nicht mehr und ich bekomme einige Exceptions. Code: using System.Windows.Forms; using System.IO; using System.Text.RegularExpressions; using MySql.Data.MySqlClient; using System.Data; using System; namespace Message_Admin { public partial class Form1 : Form { //allgemein MySqlConnection connection; MySqlDataAdapter adapter; string command = ""; MySqlCommand sqlcommand; //ini-Inhalt string iniText; string iniServer; string iniDatabase; string iniUser; string iniPassword; string iniPort; string iniTable; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { try { ReadIniFile(); //SQL Zeug string connectionString = "SERVER=" + iniServer + ";" + "DATABASE=" + iniDatabase + ";" + "UID=" + iniUser + ";" + "PASSWORD=" + iniPassword + ";" + "Port=" + iniPort + ";"; string command = "SELECT * FROM " + iniTable + ";"; connection = new MySqlConnection(connectionString); connection.Open(); adapter = new MySqlDataAdapter(command, connection); DataSet ds = new DataSet(); adapter.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; //add CheckBox Column DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn(); dataGridView1.Columns.Add(chk); chk.HeaderText = "Choose"; chk.Name = "chk"; } catch (Exception ex) { MessageBox.Show(ex.Message); } } public void ReadIniFile() { try { //ini lesen iniText = File.ReadAllText("settings.ini"); //Werte auslesen Regex regServer = new Regex("(?<=Server\\=).+"); Regex regDatabase = new Regex("(?<=Database\\=).+"); Regex regUID = new Regex("(?<=UID\\=).+"); Regex regPassword = new Regex("(?<=Password\\=).+"); Regex regPort = new Regex("(?<=Port\\=).+"); Regex regMainTable = new Regex("(?<=MainTable\\=).+"); Match matchServer = regServer.Match(iniText); Match matchDatabase = regDatabase.Match(iniText); Match matchUID = regUID.Match(iniText); Match matchPassword = regPassword.Match(iniText); Match matchPort = regPort.Match(iniText); Match matchMainTable = regMainTable.Match(iniText); iniServer = Convert.ToString(matchServer); iniDatabase = Convert.ToString(matchDatabase); iniUser = Convert.ToString(matchUID); iniPassword = Convert.ToString(matchPassword); iniPort = Convert.ToString(matchPort); iniTable = Convert.ToString(matchMainTable); } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } } private void button2_Click(object sender, EventArgs e) { sqlcommand = new MySqlCommand(command, connection); string textbox = richTextBox1.Text; foreach (DataGridViewRow row in dataGridView1.Rows) { try { if (Convert.ToBoolean(row.Cells[5].Value) == true) { sqlcommand.CommandText = "update " + iniTable + " set message = '" + textbox + "' where id = " + row.Cells[0].Value + ";"; sqlcommand.ExecuteNonQuery(); } else if (row.Cells[5].Value == null) { } } catch (Exception ex) { MessageBox.Show(ex.Message); } } richTextBox1.Clear(); } } } Kurz erklärt: Das Programm ließt ein paar Daten aus einer ini-Datei um sich zur mysql-db zu verbinden. Mit Button 1 wird die Tabelle der Datenbank in das DataGridView eingelesen und ich habe auch noch eine weitere Reihe (row[5]) hinzugefügt die check-Boxen enthält. Soweit funktioniert es auch ohne Probleme. Wenn ich jetzt aber Button2 ausgeführt habe, dann Button1 klicke um das DataGrid zu aktualisieren und erneut Button2 ausführe bekomme ich eine Exception hier: if (Convert.ToBoolean(row.Cells[5].Value) == true) System.InvalidCastException "Ein Objekt kann nicht von DBnull in andere Typen umgewandelt werden" Dann folgen noch einige andere SQL-Exceptions die wohl einfach nur daraus resultieren. Ich weiß nicht auf welche Variable ich achten muss oder wie man die Checkboxen die gecheckt sind noch afragen könnte außer es in boolean umzuwandeln (das hatte ich auf Stack Overflow gefunden) Kann das jemand nachvollziehen oder mir einen Hinweis geben was ich da falsch mache?
  2. Jupp das IT-Handbuch von Westermann hat mir mein AUsbilder vom Betrieb aus besorgt, ansonsten hab ich alles nur selbst in kurzform in Word-Dateien aufgeschrieben und viele verschiedene Quellen im Internet gesucht. Die Dateien sind aber stark unvollständig weil vieles auch noch handschriftlich auf Papier existiert^^
  3. Also was wir gemacht haben in BaWü: IT: Grundlagen der Hardware (aus welchen Teilen besteht es, wofür sind die zuständig), Grundbefehle Linux, Umrechnung dezimale- binäre und Hexadezimale Zahlen. Cisco IT Essentials. Programmieren: Grundlagen (Struktogramme, Datentypen, Klassen und Methoden erstellen, Grundbegriffe lernen) BWL: Projektmanagement, Netzplan, Prozessablaufdiagramm (da war mehr, aber die sind Prüfungsrelevant) WICOMM: Inhalt des Ausbildungsvertrages, Rechte von Pflichten von AUsbilder und Azubi, JuSchG, Einflüsse auf die Arbeitsleistung, Technischer Wandel, Technischer Arbeitsschutz, Sozialer Artbeitsschutz, Sozialversicherung/Privatversicherung, Rechtsfähigkeit, Geschäftsfähigkeit, Entstehung Rechtsgeschäfte D und GGK sind Allgemeinkunde, bei uns gibt es in deutsch 6 Themen die in der Prüfung drankommen können, GGK ist Arbeitslosigkeit, Klimawandel, Armut,... Und Gott sei Dank haben wir keine anderen Fächer wie Sport oder Religion.. igittigitt Ich übernehme keine Haftung auf Vollständigkeit und ob du das auch so brauchst.
  4. Du meine Güte wenn ich das lese krieg ich Kopfschmerzen, der Azubi ist doch erst seit 2 Monaten tätig dann erklärt ihm doch in einfachen Worten was er machen muss um sich abzuschotten. @Nico M. Was du brauchst ist ein Programm um die virtuelle Maschine zu erstellen, das wirst du wohl wissen, ich z.B. benutze Virtual Box von Oracle. Aber egal was du benutzt, es muss in den Netzwerkeinstellungen für deine virtuelle Maschine (mindestens) 2 EInstellungen geben (hoffe ich): Netzwerkbrücke und NAT NAT würde die IP deines Rechners auf die deiner virtuellen Maschine übertragen, damit wärst du quasi im Firmennetz, genau das willst du nicht. Du brauchst also die Einstellung Netzwerkbrücke, damit kannst du deinerm Server eine ganz eigene IP geben. Wenn du komplett in Richtung Netzwerk gehen möchtest dann lade dir doch den Cisco Packet Tracer runter und dazu noch Tutorial-Aufgaben um es kennen zu lernen, damit kannst du dir Netzwerke virtuell erstellen. Einmal verstanden macht es doch recht Spaß da zu experimentieren
  5. Das wäre jetzt natürlich die Schönste (und dämlichste), am einfachsten zu behebende Variante, aber nein hatte ich nicht^^ Ich hab den ganzen PC mal neu gestartet und jetzt scheint es zu funktionieren Edit: Oder auch nicht, jetzt müsste ich wissen welche Datei gemeint ist in der Fehlermeldung weil das steht nirgendwo.
  6. Gibt es eine Möglichkeit herauszufinden warum ich jedes mal wenn ich das Programm kompilieren möchte die Meldung bekomme das der Prozess nicht abgeschlossen werden kann weil der Prozess nicht auf eine Datei zugreifen kann weil ein anderer Prozess darauf zugreift? Nachdem die Meldung einmal weg geklickt wurde kompiliert das Programm einmal und beim nächsten mal kommt wieder die Meldung. Hat das nicht auch mit dem GC zu tun? Müsste wenn ich das im Taskmanager richtig sehe ein "Programmname.vshost.exe *32" sein das da hängen bleibt. Edit: Die Datei (der Prozess) ist es nicht, die Datei ist auch da wenn ich nur VS starte, muss also was anderes sein
  7. Kann ich nochmal etwas zum Verständnis fragen? Ich dachte immer wenn ich ein Objekt (?) anlege wie zum Beispiel hier Settings form2 = new Settings(); Was passiert dann genau? Ich dachte das ist wie wenn ich eine Variable anlege, quasi eine leere Hülle. Wenn ich also von der Form ein Objekt erstelle dann wird was genau gemacht? Alle Objekte und Variablen angelegt/eingelesen hier zwischen den Klammern stehen? public partial class Settings : Form { }
  8. Ich muss es dann aber manuell aus dem Speicher schmeißen wenn ich das Programm schließe richtig? Soetwas: private void Form1_FormClosing(Object sender, FormClosingEventArgs e) { form2.Dispose(); }
  9. Im Anhang and das Problem: funktioniert mein Programm und lässt sich kompilieren, aber der GC macht mir Striche durch die Rechnung (ich benutze kein Dospose und auch kein Multithreading). Wie gehabt (ich wiederhole es kurz) habe ich 2 Klassen (Forms), wobei Form1 eine Menüleiste hat die Form2 (genannt Settings) aufruft. Das funktioniert einmal - aber sobald jemand Settings schließt und erneut aufruft wird die Exception an diesem Punkt geworfen: public partial class Form1 : Form { Settings form2 = new Settings(); public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Settings-Close form2.FormClosed += Form2_FormClosed; } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } } private void settingsToolStripMenuItem1_Click(object sender, EventArgs e) { form2.iniText = iniText; form2.Show(); //hier Exception } Weiß jemand wie ich das verhindern kann und trotzdem sicher sein kann das beim Beenden des kompletten Programs auch wirklich nichts mehr den RAM belegt? Ich weiß das eine Lösung wäre jedesmal eine neue Instanz zu erstellen, aber dann sind die labels (meine ich zumindest) leer die ich zu Beginn des Programs an Settings übergebe und auch mein Form-Closed Event würde nicht mehr funktionieren. Ideen wie ich dem Programm sagen kann das Form2 nicht weg geworfen werden soll wenn ich es schließe?
  10. Hatte es gemerkt, ich dachte irgendwie an "get" also "kriegt" oder "bekommt" die Variable einen Inhalt, aber es ist genau andersrum... verwirrend.
  11. @Whiz-zarD Deine 2. Möglichkeit fand ich bis jetzt am Besten, ich hab versucht sie etwas umzuändern und bin soweit das es gerade so aussieht: Settings: public partial class Settings : Form { //string iniText; public Settings() { InitializeComponent(); //Form1 form1 = new Form1(); //iniText = form1.GetIniText(); } //get ini when being called public string iniText { get; } //Method for Form1 public void WriteIniToLabels(string text1, string text2, string text3) { label1.Text = text1; label2.Text = text2; label3.Text = text3; } Form1: public partial class Form1 : Form { //string iniText; string iniPathToPDF; string iniPathToCSV; string iniPathToPCL; string iniPrintPDF; string iniPrinter; string iniPrintserver; string iniText; Settings form2 = new Settings(); public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Settings-Close form2.FormClosed += Form2_FormClosed; } } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { ReadIniFile(); } Ich habe denke ich verstanden wie ich meine notwendige Variable iniFile von Form1 and Settings übergebe, aber ich wie schiebe ich sie wieder zurück sobald "Settings" geschlossen wird? Was ich jetzt gemacht habe ist quasi die Hälfte übernommen, allerdings sagt mein Programm das Settings.iniText schreibgeschützt ist? "Für die Eigenschaft oder den Indexer "Settings.iniText" ist eine Zuweisung nicht möglich. Sie sind schreibgeschützt."
  12. Hoppla zu der Frage wo die Form2 aufgerufen wird, das hier steht noch in Form1, wie gesagt das ist eine Menü-Leiste private void settingsToolStripMenuItem1_Click(object sender, EventArgs e) { form2.Show(); }
  13. Das ist etwas komplizierter, ich versuche mal meinen Gedankengang und etwas mehr Code dazu zu veröffentlichen: Wenn das Programm gestartet wird läd Form1 Einstellungen aus einer ini-Datei, speichert diese in Variablen und schreibt diese in labels von Form2 (Settings-Fenster) mit der WriteIniToLabels() Methode. Wenn jetzt aber Form2 über das Menü aufgerufen wird gibt es dort Möglichkeiten die EInstellungen zu ändern. Wenn Form2 geschlossen wird muss Form1 die Einstellungen neu auslesen. Form1 relevante Ausschnitte: public partial class Form1 : Form { //string iniText; string iniPathToPDF; string iniPathToCSV; string iniPathToPCL; string iniPrintPDF; string iniPrinter; string iniPrintserver; string iniText; Settings form2 = new Settings(); public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Seetings-Close form2.FormClosed += Form2_FormClosed; } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { ReadIniFile(); } public void ReadIniFile() { //ini-Datei lesen iniText = File.ReadAllText("settings.ini"); SetIniText(iniText); //PDF und CSV und PCL Pfad lesen und ausgeben Regex reg1 = new Regex("(?<=PathToPDF\\=).+"); Regex reg2 = new Regex("(?<=PathToCSV\\=).+"); Regex reg4 = new Regex("(?<=PathToPCL\\=).+"); Match pdfPath = reg1.Match(iniText); Match csvPath = reg2.Match(iniText); Match pclPath = reg4.Match(iniText); iniPathToPDF = Convert.ToString(pdfPath); iniPathToCSV = Convert.ToString(csvPath); iniPathToPCL = Convert.ToString(pclPath); //Write ini-Settings to Form2-Labels form2.WriteIniToLabels(iniPathToPDF, iniPathToCSV, iniPathToPCL); //Drucker auslesen Regex reg5 = new Regex("(?<=Printer\\=).+"); Regex reg6 = new Regex("(?<=Printserver\\=).+"); Match printer = reg5.Match(iniText); Match printserver = reg6.Match(iniText); iniPrinter = Convert.ToString(printer); iniPrintserver = Convert.ToString(printserver); //Checkbox-status lesen und aktualisieren Regex reg3 = new Regex("(?<=PrintPDF\\=).+"); Match pdfCheck = reg3.Match(iniText); iniPrintPDF = Convert.ToString(pdfCheck); if (iniPrintPDF == "0") { checkBox1.Checked = false; } else { checkBox1.Checked = true; } } string newIniText; public void SetIniText(string iniText) { newIniText = iniText; } //To get ini from Settings public string GetIniText() { return newIniText; } Form2 relevante Ausschnitte: public partial class Settings : Form { string iniText; public Settings() { InitializeComponent(); Form1 form1 = new Form1(); iniText = form1.GetIniText(); } //Method for Form1 public void WriteIniToLabels(string text1, string text2, string text3) { label1.Text = text1; label2.Text = text2; label3.Text = text3; } Das ist alles nur Idee und zusammengeschrieben wie es mir in den Sinn kam, ich glaube ein paar Dinge brauch ich gar nicht mehr also sucht da nicht unnötig nach Fehlern die finde ich selbst sobald ich es kompilieren kann (hoffe ich^^). Erstmal muss der StackOverflow raus und ich weiß nicht wie ich es anders machen kann, dazu fehlt mir die Erfahrung.
  14. Moin! Ich habe tatsächlich zum ersten mal (außerhalb des Schulunterrichts) mit 2 Klassen zu tun und wollte (auch wenn mein Ausbilder sagt ich bin kein AE und kann globale Variablen benutzen) Variablen mithilfe von Methoden hin und her schieben. Jetzt habe ich mir mit dem was ich gelernt habe und mit dem was ich im Internet gefunden habe etwas zusammen gebastelt das 1. glaube ich keiner mehr versteht 2. sich gar nicht erst kompilieren lässt wegen oben genanntem Fehler Meine 2 Klassen sind 2 Form-Anwendungen, die eine als Hauptanwendung und die andere quasi als "Settings-Fenster" das über die Menüleiste aufgerufen werden kann. In der Aufrufliste kann ich sehen welche 2 Funktionen sich da verhaken, weiß aber nicht warum weil mir noch das große Bild der Programmierung fehlt. Hier der Teil der Settings.cs: public partial class Settings : Form { string iniText; public Settings() { InitializeComponent(); Form1 form1 = new Form1(); //das hier wird immer wieder aufgerufen iniText = form1.GetIniText(); } und das hier von meinem Form1.cs public partial class Form1 : Form { //string iniText; string iniPathToPDF; string iniPathToCSV; string iniPathToPCL; string iniPrintPDF; string iniPrinter; string iniPrintserver; string iniText; Settings form2 = new Settings(); //hier sagt es wird immer wieder aufgerufen public Form1() { InitializeComponent(); try { ReadIniFile(); //create Event for Seetings-Close form2.FormClosed += Form2_FormClosed; } catch { MessageBox.Show("Initialisierung der ini-Datei fehlgeschlagen"); } Ich kann meinen Breakpoint nicht da ansetzen wo es auftritt sonst hätte ich das vielleicht irgendwie nachvollziehen können. Die 2 markierten Stellen habe ich eingefügt um damit Funktionen der jeweils anderen Klasse aufzurufen zu können - ist das falsch? Kann sich jemand meiner annehmen und mir das erklären? Grüße Tician
  15. Ich habe es jetzt auf absolutem Laienweg gelöst, ich habe sämtliche Symbole der Erweiterten ASCII-Tabelle ausgedruckt und geschaut was rauskommt und ein Programm geschrieben das sämtliche Symbole die in der Datei stehen so umändern das sie wieder so rauskommen wie sie ursprünglich drin standen, ein Ü wird z.B. in ein š umgeandelt damit es als Ü gedruckt wird und so habe ich mir eine Tabelle angelegt die so anfängt: Ç -> € â -> ƒ å -> † î -> Œ usw. da sind etwa 30 Buchstaben drin. Die Datei selbst habe ich als ANSI convertiert.
  16. OK liegt wohl eher weniger am Zeichensatz, es muss etwas mit der Dateicodierung zu tun haben. Ich habe eine Vergleichsdatei in der Umlaute dargestellt werden, diese Datei hat die Kodierung ANSI (meine ist UTF-8), allerdings wird z.B. in der Datei ein geschriebenes "š" im ausgedruckten Format als großes "Ü" angezeigt und ich weiß nicht ob es eine Tabelle gibt in der ich sowas naschauen kann. Oder veranschaulicht: In der ANSI PCL-Datei steht ?*p2370XTšRKEI ausgedruckt auf dem Blatt Papier steht dann einfach "TÜRKEI". Kann ich dasselbe mit UTF-8 machen? Wie bekomme ich raus welches Zeichen ich in die Datei schreiben muss um ein anderes gedruckt zu bekommen? Gibt es da eine Tabelle?
  17. Moinsen, ich komme momentan nicht weiter, ich habe eine PCL-Datei erstellt und diese wird per LPR-Befehl (Windows) momentan über die Kommandozeile an den Drucker gesendet. In der Datei sind Umlaute wie ö oder auch ñ, aber diese kommen nur in komischem kauderwelsch oder Pixel-Salat aus dem Drucker. Der Beginn der PCL-Datei sieht so aus (Der Rest ist nur Positionen und Text): ?E?&l26A?&l0o6d1E ?&l4H ?(0g?(s4148t1b5s5v13h0P Escape-Zeichen habe ich mal als Fragezeichen dargestellt die werden sonst gar nicht angezeigt. Was ich also praktisch mache ist dem Drucker zu sagen: Reset, A4, Hochformat, Schacht 1, german symbol set.... Ich glaube hier kommt das Problem ich habe verschiedene Zeichensätze ausprobiert, aber es ändert sich rein gar nichts, sieht jemand einen Fehler hat eine Idee oder gibt es doch einen versteckten Parameter den ich in der Konsole beim drucken mitgeben kann? Danke und Gruß Tician
  18. Hallöööchen mit 3 öchen, ich gehe in eine Berufsschule in Baden Württemberg, der Unterricht findet 1-2 mal die Woche statt (also kein Blockunterricht). Ich bin seit kurzem im 2. Lehrjahr zur FISI und wir wurden schon vorgewarnt das wir ein Experiment weiterführen werden das schon mit den Schülern der Jahrgangsstufe vor uns begonnen wurde. Ich versuche mal zu erklären wie es der Klasse vor uns ging: Anhand der Noten des 1. Lehrjahrs wurden die Schüler in ITS (Netzwerktechnik) und SAE (Programmieren) in jeweils 3 Leistungskurse pro Fach eingeteilt, da diese keinen Namen haben nennen wir sie nur Bronze, SIlber und Gold. Bronze heißt es wird Unterricht gemacht der unter dem Prüfungsstoff ist, Silber ist quasi auf das begrenzt was man für den Abschluss der Prüfung braucht und Gold ist angehobenes Niveau in dem mehr gemacht wird als für die Prüfung verlangt wird. Jetzt mag sich einer fragen warum es den Bronze-Kurs gibt. Hier gibt es zu beachten das für jede Fachrichtung (FISI und FIAE) nur 2 Kurse pro Fach gibt. Für einen FISI ist das z.B. Silber und Gold im Fach ITS und nur Bronze und Silber in SAE (wir müssen ja keine Prüfung für FIAE ablegen). Für einen FIAE ist es genau andersrum, somit ist sichergestellt das die jeweilige Fachrichtung auch auf dem Prüfungsniveau bleibt. Nach einigem Feedback unserer Vorgänger das sich Schüler überfordert oder Unterfordert fühlten und nicht die Möglichkeit hatten zu wechseln durfte unsere Jahrgangsstufe selbst wählen welche Kurse jeder belegen möchte. Meiner Meinung nach ein großer Pluspunkt für unsere Schule das sie da tatsächlich auf Feedback reagiert hat. Jetzt meine Frage: Hat da jemand in irgendeiner Form schonmal Erfahrungen gemacht? Was haltet ihr von dem ganzen Konzept? Was mir Sorgen bereitet ist das wir als FISIs auf den Monat gerechnet 16 Stunden SAE haben (davon 8 Stunden reines Programmieren und 8 Stunden Datenbanken), aber nur 4 Stunden ITS. Ist das normal? Oder gehört das Thema Datenbanken (Microsoft Access in unserem Fall) noch mit in die FISI-Richtung? Freue mich auf eure Meinungen Gruß Tician
  19. @Anluin Vielen Dank, ich habe aber eine Lösung gefunden die perfekt gepasst hat: ProcessStartInfo info = new ProcessStartInfo(); info.Verb = "print"; info.FileName = "C:\\Temp\\abcde.pdf"; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process p = new Process(); p.StartInfo = info; p.Start(); p.WaitForInputIdle(); System.Threading.Thread.Sleep(3000); if (false == p.CloseMainWindow()) p.Kill(); Für den nächsten der es vielleicht gebrauchen kann Es öffnet zwar den Adobe Reader (wie jede andere Lösung die ich noch gefunden habe), schließt ihn aber auch wieder, es gibt keine Überreste im Taskmanager.
  20. Moin! Da mir bisher immer super geholfen wurde wende ich mich mal wieder an euch Ich möchte über mein C# Programm (Console Application) auch einen Windows-Kommandozeilen-Befehl absetzen und mein Code dazu sieht so aus: string cmdText = "\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" /t \"C:\\Temp\\abcde.pdf\""; System.Diagnostics.Process.Start("cmd.exe", cmdText); (soll eigentlich eine pdf-Datei drucken) bzw habe ich auch das hier probiert: System.Diagnostics.Process command = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(); info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; info.FileName = "cmd.exe"; info.Arguments = "\"C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe\" /t \"C:\\Temp\\abcde.pdf\""; command.StartInfo = info; command.Start(); Es wird mir leider kein Befehl ausgegeben, das einzige was passiert ist das ich ein offenes command-Fenster habe, also der Prozess an sich wird ausgeführt aber aus irgendeinem Grund wird das Kommando nicht übernommen/übergeben/ausgeführt. Öffne ich manuell die Konsole und tippe den Befehl ein funktioniert es wunderbar, der einzige Unterschied sind die escape-Zeichen für die Anführungsstriche und Backslashes - kann das zu einem Fehler führen? Ich bekomme keinen Error, gibt es etwas das ich tun kann um zu sehen warum es nicht funktioniert? Das Projekt liegt auf einem Netzlaufwerk (Y:), dementsprechend steht in den geöffneten Konsolenfenstern auch Y:\Pfad zu meinem Projekt Ordner\Debug> aber laut meinem Ausbilder sollte es trotzdem funktionieren den Adobe Acrobat Reader von C: aufzurufen. Sieht jemand einen Fehler, fehlt mir vielleicht etwas oder habe ich die Escape-Zeichen falsch gesetzt? Grüße Tician
  21. @RipperFox Ja genau das sieht perfekt aus, ich hatte es am Wochenende dann auch gefunden http://stackoverflow.com/questions/4654006/how-to-completely-ignore-linebreak-and-tab-in-regex Werde es später (wenn ich dazu komme) ausprobieren, vielen Dank an alle!
  22. Hallöööchen mit 3 öchen, ich habe Probleme mit Regex und finde es sehr schwierig da etwas zu finden. Ich habe in C# eine string-Variable mit nem Haufen Text drin und die ist (zumindest laut Consolen-Ausgabe) auch mit Zeilen formatiert und sollte so bleiben. Jetzt versuche ich mit Regex nur einen Ausschnitt aus dem ganzen Text zu bekommen. Über eine Zeile funktioniert mit dem Syntax: (?<=to:).+(?=T:) Heißt hätte ich die Zeile blato: 123 abc T: bla Würde ich den Output 123 abc bekommen. Jetzt sieht mein Text aber als Beispiel so aus: blato: 123 abc T: lalala und ich möchte trotzdem nur 123 abc als Ausgabe haben. Was muss ich an der Syntax ändern damit die Suche über mehrere Zeilen geht? Mein Code sieht momentan komplett so aus: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; using System.Text.RegularExpressions; namespace ReadPDF { class Program { static void Main(string[] args) { try { var text = new StringBuilder(); var currentText = ""; //get all text from pdf using (var pdfReader = new PdfReader("C:\\Temp\\example.pdf")) { for (var page = 1; page <= pdfReader.NumberOfPages; page++) { ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); text.Append(currentText); } } Console.WriteLine(currentText); //Show me the text from the pdf-file Console.WriteLine(""); string newtext = Convert.ToString(currentText); //needed for Regex //get what I need Regex r = new Regex("(?<=to:).+(?=T:)"); //??? Match m = r.Match(newtext); if(m.Success == true) { Console.WriteLine(m); } Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(Convert.ToString(ex)); } } } }
  23. Ausprobiert und es funktioniert wirklich einwandfrei und kinderleicht, vielen Dank @Mttkrb
  24. Super, danke! Ich werde es mal mit iTextSharp versuchen

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...