Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von blutiger_anfänger
Thema: Progressbar bei langlaufender Aktion mitlaufen lassen
Am im Forum: GUI: Windows-Forms

Zitat von Takti
Funktioniert soweit allerding bekomm ich eine Fehler meldung wenn ich denn Text an die TextBox übergebe.

"Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement textBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."

Die Textbox befüllst du von deinem Timer aus! Der kann das, wenn du den ihn (den Timer) beim ButtonClick startest, also nicht im Backgroundworker!

Thema: Progressbar bei langlaufender Aktion mitlaufen lassen
Am im Forum: GUI: Windows-Forms

Erstell dir eienn Backgroundworker. Lege deinen Process in den DoWork Eventhandler des Backgroundworkers...

Dann ändere den Process noch wie folgt...
Mach aus dem hier:

proc.Start();
string temp = compiler.StandardOutput.ReadToEnd();
compiler.WaitForExit(); 

folgendes:

proc.Start();
while (!p.HasExited)
{
temp = compiler.StandardError.ReadLine();
}
compiler.WaitForExit(); 

Die Variable Temp deklariest du Global.
Nun brauchst du nurnoch einen Timer, den du gleichzeitg mit dem Backgroundworker startest und der dann für dich in seinem TickEventhandler den String temp ausliest und bei veränderung in deine Textbox schreibst...

Thema: Visual Studio Projekt Veröffentlichen(Publish)
Am im Forum: Netzwerktechnologien

Hast du schon mal probiert bei den Verweisen in deiner Projektmappe, die Property "Lokale Kopie erstellen", für den Verweis auf die Dll auf "true" zu stellen und dann nochmal die Funktion "publish" aufzurufen?

Thema: Ausgabe einer DOS Shell komplett! umleiten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Alternative Frage - Warum machst du es dir so umständlich, indem du erst ein Batch-Script erstellst, etc. und nicht gleich direkt über das .Net-Framework den FTP-Upload regelst?

edit://

Hier nochmal zwei kleine Snippets...

http://dotnet-snippets.de/dns/c-datei-auf-einen-ftp-uploaden-SID494.aspx
http://dotnet-snippets.de/dns/c-ftp-file-upload-mit-buffer-SID886.aspx

Thema: TypoLaunch - Schnellstarter für Programme
Am im Forum: Projekte

Klingt ja schonmal gut, leider bekomm ich es nicht zum laufen.
Beim Versuch das Programm, nach der Installation, zu starten, bekomme ich eine IO.Filenotfound-Exeception...

liebe Grüße,
Raffi

Thema: [gelöst] Problem mit mehreren Instanzen einer Klasse
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das mit der Liste hat super geklappt!
Ich muss mir das mit den Listen nochmal ernsthaft einbleuen. Das war letztens auch schon die Lösung eines anderen Problems. (Aber das ist hier wohl eher OT.)

Danke nochmal und einen schönen Montag-Restabend ;)

Liebe Grüße,
ein blutiger_anfänger

Thema: [gelöst] Problem mit mehreren Instanzen einer Klasse
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich weiß, dass ich sie außerhalb deklarien kann, aber dann funktioniert die Reportgeschichte nicht mehr.

In meiner Klasse gibt es einen string Namens DownloadState. Wenn ich die Funktion DownloadVideo(); aufrufe, dann schreibt diese den aktuellen Downloadstatus in den String DownloadState.

Diesen String lese ich mit dem schon erwähnten Timer aus und aktualiere dann das UI (Progressbar, Label, ...).
Wenn ich die Klasse außerhalb des OnClick deklariere und dann 2 Downloads parallel laufen lasse, dann schreiben beide in den DownloadState String, was zur folge hat, dass mein Timer nurnoch Schrott einließt. Deshalb hatte ich die Klasse ja erst im OnClick deklariert...

Danke dir trotzdem schonmal!

Thema: [gelöst] Problem mit mehreren Instanzen einer Klasse
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo liebe CSharpler,
ich stehe mal wieder auf dem Schlauch.
Ich habe mir eine Klasse gebastelt, die mir Videos herunterladen und konvertieren kann.
Der aktuelle Status des Downloads/der Kovertierung wird in einem String in der Klasse abgelegt, den ich mit Hilfe eines Timers im Sekundentakt einlese und dann damit einige Controls mit den Infos befülle.

Doch nun zu meinem eigentlichen Problem. Wenn ich die Klasse einmal Instanziere und dann zwei Downloads starte, dann haut das mit dem Status nicht mehr hin, weil der Statusstring andauernd wechselseitig überschrieben wird.

Also habe ich die Klasse nun erst beim Button-Click instanziert. Jetzt weiß ich jedoch nicht mehr wie ich mit meinem Timer auf die aktuelle Instanz bzw. alle Instanzen zugreifen kann, da der TimerTick-Eventhandler ja garnicht von der Klasse weiß, da diese ja im ButtonOnclick instanziert wurde.

Ich hatte auch schon überlegt, den Timer im ButtonOnclick zu instanzieren und dann im Tickevent erst die Klasse zu instanzieren, aber ich weiß nicht wie ich dann, wenn der Download Fertig ist, den Timer wieder stoppen kann, da ja dann der Timer im ButtonOnclick instanziert wurde und ich dann außerhalb des ButtonOnClick-Events den Timer nicht mehr "kenne", sprich ihn auch nicht mehr ála timer.Stop(); anhalten kann.

Ich hoffe ihr könnt mir einigermaßen folgen und mir einen Anstoß geben, wie ich das Problem lösen kann.

liebe Grüße,
Raffi

Thema: Ausgabe einer DOS Shell komplett! umleiten
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mache Applikationen geben ihren Output auch über den StandardErrorStream aus... ;) Also einfach mal ausprobieren, dass hat mich letztens auch sehr viel nerven gekostet, bis ich dahinter gekommen bin.

String output = p.StandardError.ReadToEnd() 

Thema: Progressbar/Marquee wird nicht aktualisiert
Am im Forum: GUI: Windows-Forms

Probier's mal so:


BackgroundWorker bgw = new BackgroundWorker();

private void buttonDone_Click(object sender, EventArgs e)
        {
            float wert1 = Convert.ToSingle(numericUpDown_wert1.Value);
            float wert2= Convert.ToSingle(numericUpDown_wert2.Value);
            this.Cursor = Cursors.WaitCursor;


 bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
            bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
            bgw.RunWorkerAsync();

           
                     
        }



void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
 konfigurieren(wert1, wert2);
}

 void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
Close(); //"Dialog" wieder schliessen  
}

public void konfigurieren(float wert1, float wert2)
        {

           WartenProgresser progressMarquee = new WartenProgresser();
           progressMarquee.Show();

            int konfigurieren = 0;

                try
                {

                    konfigurieren = MeineDll.Konfigurieren(wert1, wert2);
                }
                catch (Exception) { }
                this.Cursor = Cursors.Default;
progressMarquee.Dispose();
} 


Das wäre ein Beispiel, wie du deine rechenintensiven Aufgaben in einen anderen Thread verlagerst.
Du kannst das natürlich auch direkt über Thread mythread = new Thread()... oder einen Timer machen, aber in deinem Fall sollte ein Backgroundworker am praktischsten sein.

Thema: Auslesen der maximalen Bandbreite meiner Internetverbindung
Am im Forum: Netzwerktechnologien

Mir fallen spontan 2 Möglichkeiten ein.
Die erste wäre sich eine beliebig Große Datei zu erstellen und diese dann per webClient auf einen FTP Server zu laden und dann die Bandbreite in Anbetracht der Übertragungszeit und der Dateigröße zu errechnen.
Nachteile sind natürlich, dass du einen FTP-Server brauchst und dieser die nötige Bandbreite/Geschwindigkeit auch zur Verfügung stellt. (Was bei den meisten Freehostern schonmal nicht gegeben ist.)

Möglichkeit zwei wäre per Webbrowser Element oder alternativ HttpWebRequest/HttpWebResponse Seiten wie z.B. http://www.wieistmeineip.de/speedtest/ aufzurufen und diese dann zu automatisieren und die Daten auszulesen.

liebe Grüße,
ein blutiger_anfänger

Thema: Dynamische Rahmen um Controls zeichnen
Am im Forum: Grafik und Sound

Habe das gerade mal ausprobiert. Entweder ich versteh hier immernoch was falsch, oder ich hab doch garnicht zu sehr "web"-gedacht.
Denn wenn ich mein Form nun maximiere, vergrößert sich mein UserControl um locker 100% seiner ursprünglichen Größe und der Rahmen sieht gestreckt einfach nur doof aus. Sprich er verpixelt, etc..

Hatte grad noch eine Idee, auch wenn das vielleicht eine etwas unschöne Frickelei ist.
Ich nehme mir 8 Pictureboxen. Für jede der Ecken eine und dann, wie schon auf dem Bild angedeutet, für die Seiten auch jeweils eine. Die für die Seiten bekommen als BackgroundImage den entsprechenden kleinen Teil des Rahmen und das backgroundImageLayout kommt auf Tile.
Das ist zwar in deinen Augen wahrscheinlich extrem in Richtung Web gedacht, aber die andere Lösung verzerrt das Ergebnis, was auch nicht wirklich schön ist...

Thema: Dynamische Rahmen um Controls zeichnen
Am im Forum: Grafik und Sound

An die Sache mit dem UserControl habe ich auch shcon gedacht, aber ich habe keine Ahnung, wie ich das Umsetzen soll. (Also nicht das erstellen des UserControls, sondern das der eigene Rahmen "resizeable" ist.)

Ich habe mal ein Bild als Beispiel angehängt. theoretisch müsste ich doch den Rahmen irgendwie an den blauen Linien zerschneiden. und je nach dem, wie weit ich das Form strecke müssten, die kurzen Rahmenabschnitte zwischen den blauen Linien immer wieder aneinander-gezeichnet werden, oder? Bloß wie stelle ich das an? Ich versteh grad halt auch nciht, inwiefern mich da ein UserControl weiterbringen kann...

liebe Grüße und trotzdem schonmal Danke für die Antwort,
ein blutiger_anfänger

Thema: WebBrowser soll kein Audio abspielen
Am im Forum: Web-Technologien

Warum benutzt du kein HttpRequest? Du brauchst doch keine Visuelle Darstellung, oder?


HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.youtube.com/watch?v=-NRpP_tnC80");
            HttpWebResponse httpWebesponse = (HttpWebResponse)httpWebRequest.GetResponse();

            Stream dataStream = httpWebesponse.GetResponseStream();
            StreamReader streamreader = new StreamReader(dataStream, Encoding.UTF8);
            string YoutubeHtmlCode = streamreader.ReadToEnd();
            streamreader.Close();
            httpWebesponse.Close();

Thema: Dynamische Rahmen um Controls zeichnen
Am im Forum: Grafik und Sound

Guten Miattag euch allen,
ich ahbe mal wieder eine kleine Denkblockade.
Ich habe einen kleinen Mediaplayer. Das VideoControl besitzt jedoch keinerlei Rahmen, was nicht gerade schön aussieht, wenn das "blanke" Video auf dem Form liegt.
nun wollte ich gerne einen Rahmen drumherum haben. Zuerst hatte ich mir überlegt, einfach eine PictureBox hintersetzen und die mit einem vorgefertigten Rahmen befüllen.
Doch das funktioniert nur solange das Form nicht in seiner Größe verändert wird. Sobald ich das Form strecke, wird und soll ja auch das VideoControl mitgestreckt werden. Das haut dann aber mit meinem Rahmen nicht mehr hin.

Gibt es da villeicht eine Lösung wie per Html+Css das man nur ein Stückchen des Rahmens angibt und sagt, dass diese Grafik auf der x-/y-Achse beliebig oft wieder eingeblendet wird?

liebe Grüße,
ein blutiger_anfänger

Thema: [gelöst] Listview Images werden "zu klein" angezeigt
Am im Forum: GUI: Windows-Forms

Super! Vielen Dank für die schnelle Antwort.
Hatte die Property einfach nicht gefunden. Wahrscheinlich auch, weil sie immer in den Eigenschaften des ListViews gesucht habe. Aber nun klappt ja alles.
Danke nochmal!

liebe Grüße,
blutiger_anfänger

Thema: [gelöst] Listview Images werden "zu klein" angezeigt
Am im Forum: GUI: Windows-Forms

Hallo,
ich habe ein Listview und befülle dieses mit Item und weise den Items jeweils ein Bild aus einer Imagelist zu.
Die Icons werden jedoch sehr klein dargestellt.

Meine Frage ist nun, wo muss ich ansetzen, dass die Icons größer dargestellt werden. Gibt es da eine "schnelle" Lösung oder ist das schon ein etwas "tieferer" Eingriff.
Die View-Property ist "LargeIcon".


liebe Grüße,
blutiger_anfänger

p.s.: Oder hat vielleicht jemand sogar ein passenderes Control im Hinterkopf? Das Control muss eigentlich nur Thumbnails mit einer kurzen Beschreibung anzeigen können.

Thema: Möglichst ressourcenschonende MP3 Wiedergabe
Am im Forum: Grafik und Sound

Zitat von blutiger_anfänger
...da ich das hier auf nem P4 mit 1,4Ghz und 384MB SD-Ram teste.
Festplatten:

Intern:
IDE -> 20GB

Extern:
USB -> 160GB
USB -> 500GB


edit://

OS -> WinXP Professional SP3

Thema: Möglichst ressourcenschonende MP3 Wiedergabe
Am im Forum: Grafik und Sound

Denke mal, dass das sogar schon relativ aussagekräftig wird, da ich das hier auf nem P4 mit 1,4Ghz und 384MB SD-Ram teste.

Mit dem WMP 11 komm ich bei MP3 Wiedergabe auf ca. 13MB im Arbeitsspeicher und ner CPU-Last von ca. 10-12%...

Das MCI Beispiel aus dem Thread, den du gepostet hast, sieht vom Interface wesentlich "schmaler" aus, nimmt aber schon 21MB im Arbeitsspeicher in Anspruch und auch 15-20% CPU-Last...
Das mit dem Arbeitsspeicher könnte man vll. noch verbessern, muss ich mir den Code mal anschauen, aber dass das Teil mehr Rechenleistung als der WMP11 braucht, verwundert mich...

Naja mal sehen - ich werd mal alles durchtesten und mich dann wieder melden.

Thema: Möglichst ressourcenschonende MP3 Wiedergabe
Am im Forum: Grafik und Sound

Oh je, ich hab's mir fast schon gedacht... 2 Antworten und beide klingen so, als wäre jede davon die einzig richtige... Naja, dann werd' ich wohl beides mal umsetzen und sag euch dann, was Objektiv (im bezug auf meine System) ressourcenschonender war...
Danke euch trotzdem für die Antworten und nehme natürlich weiterhin jeden Vorschlag an!

liebe Grüße,
blutiger_anfänger

Thema: Möglichst ressourcenschonende MP3 Wiedergabe
Am im Forum: Grafik und Sound

Guten Abend,
ich habe schon ein Weilchen gegoogelt, aber nichts wirklich aufschlussreiches gefunden.
Deshalb hoffe ich, dass vielleicht der ein oder andere schon ein paar Erfahrungen gesammelt hat.

Ich möchte mir einen ganz simplen "Mp3 Player" basteln. Wirklich nur Start/Pause/Stop, Lautstärke und die Möglichkeit mehrere Song in eine Queue zu hauen (obwohl das ja sogar noch "von Hand" per Schleife gehen würde...)

Das einzige was zählt, es sollen möglichst wenig Ressourcen verbraucht werden.
Von daher ist meine Frage an euch nun - was ist eurer Meinung am besten dafür geeignet? bass.net? wmp-control? ...?

liebe Grüße,
ein blutiger_anfänger

Thema: Internetradio mit Bass.net: Wo ist der Stream?
Am im Forum: Grafik und Sound

Hey sth_Weird,
hab mir Planetrock eben mal angeschaut... Die StreamUrl müsste folgende sein:

rtmp://91.193.247.26/PLANETROCK
Ob die Bass.net das kann weiß ich nicht...
Bei der Seite stand's in den FlashVars des Player im Quelltext. War eigentlich relativ zu schnell zu finden.

Thema: Internetradio mit Bass.net: Wo ist der Stream?
Am im Forum: Grafik und Sound

Du brauchst nur die StreamUrl? Wenn ja, dann lass dir doch mit Rechtsklick mal den Quelltext des PopUps anzeigen udn such dann nach einer Url die auf eine .pls/.asx datei verweist...
Wenn das nicht klappt kannst du auch immer noch die HttpHeader durchforsten. (Firefox -> LiveHttpHeaders (Plugin))
Die erste Mathode ist jedoch meiner Meinung nach wesentlich schneller und meist völlig ausreichend!

Viel Erfolg,
ein blutiger Anf#änger

p.s.:
Solltest du absolut nicht weiterkommen, dann gib uns ein Beispiel und dann gehen wir das Anhand dessen mal Schritt-für-Schritt durch.

Thema: ipcounter.de "api" klasse(n)
Am im Forum: .NET-Komponenten und C#-Snippets

Erst einmal vielen Dank für dein Feedback. Der 30 Tage Rückblick lässt sich nun auch als DataTable ausgeben.
Jedoch würde ich mich freuen, wenn du mir deine Idee mit dem UserControl nochmal erklärst, da konnt ich dir leider noch nicht ganz folgen.
Ein vom DataGridView abgeleitetes und angepasstes Control hatte ich jetzt zw8ar auch nochmal gebastelt, aber ich sehe da einfach keinen Vorteil drin?

Es ist doch am Ende viel einfach sich ein DatagridView zu nehmen und meine Klasse konfiguriert es dann richtig, als wenn der User erst extra das neue Control hinzufügen muss, oder nicht?
Klär' mich bitte mal einer auf... ;)

liebe Grüße,
ein blutiger_anfänger

Thema: ipcounter.de "api" klasse(n)
Am im Forum: .NET-Komponenten und C#-Snippets

Beschreibung:

Der ein oder andere von euch kennt vielleicht den Counterservice www.ipcounter.de
Da ich auf 2-3 Homepages diesen Service in Anspruch nehme und keine Lust habe immer alle Statistikseiten einzeln aufzurufen habe ich 2 Klassen gebastelt, mit denen es möglich ist diverse Infos auszulesen.


Verwendung:

1. Klasse aufrufen und Anzahl der Versuche übergeben (Manchmal gibt es MySQL Errors auf ipcounter.de, dann klappt das auslesen natürlich nicht. Dafür kann man angeben, wie oft bei einem Fehler versucht werden soll die Statistikdaten erneut aufzurufen... )


IpCounter ipc = new IpCounter(3);

2. Daten auslesen (Beim aufruf immer die ID des gewünschten Counters mitgeben!):


ipc.Last30DaysGridView(dataGridView1, IPcounter_ID);
// Befüllt & konfiguriert das übergebene dataGridView mit den Statistikdaten der letzten 30 Tage

//Alternativ kann das ganze nun auch als DataTable zurückgegeben werden.
dataGridView1.DataSource = ipc.Last30DaysDataTable(IPcounter_ID);


string[] LastDays = ipc.Last30Days(IPcounter_ID);
//Gibt die Statistikdaten der letzten Tage, als StringArray zurück


string OnlineUsers = ipc.OnlineUsers(IPcounter_ID);
//Gibt die Anzahl der Online User als string zurück

string HitsGesamt = ipc.AllHits(IPcounter_ID);
// Gibt die Anzahl aller Seitenaufrufe als String zurück

string UniqueVisits = ipc.AllUniqueVisitors(IPcounter_ID);
// Gibt die Anzahl aller eindeutigen Besucher als string zurück



IPcounter.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Net;
using System.Windows.Forms;
using System.Data;



namespace MyStats
{
    class IpCounter
    {
        
        string html = string.Empty;
        int ErrorTry;
        int Trys = 0;

        public IpCounter(int AnzahlVersuche)
        {
            this.ErrorTry = AnzahlVersuche;
        }


        public string OnlineUsers(int id)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.ipcounter.de/stats.php?u=" + id.ToString());
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

                StreamReader sr = new StreamReader(res.GetResponseStream());
                html = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                res.Close();

                RegExSolve Solver = new RegExSolve(html);

                string[] ActualItems = Solver.StatsOnline();




                return ActualItems[0].Remove(0, 102);
            }
            catch
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    OnlineUsers(id);

                    return "error";
                }
                else
                {
                    Trys = 0;

                    return "error";
                }
            }

        }

        public string AllHits(int id)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.ipcounter.de/stats.php?u=" + id.ToString());
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

                StreamReader sr = new StreamReader(res.GetResponseStream());
                html = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                res.Close();

                RegExSolve Solver = new RegExSolve(html);


                string[] SeitenAufrufe = Solver.StatsAll();
                SeitenAufrufe[0] = SeitenAufrufe[0].Remove(0, 89);
                if (SeitenAufrufe[0].Contains("</strong></span></td>") == true)
                {
                    SeitenAufrufe[0] = SeitenAufrufe[0].Replace("</strong></span></td>", "");
                }

                return SeitenAufrufe[0];
            }
            catch
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    AllHits(id);

                    return "error";
                }
                else
                {
                    Trys = 0;

                    return "error";
                }
            }
        }


        public string AllUniqueVisitors(int id)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.ipcounter.de/stats.php?u=" + id.ToString());
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

                StreamReader sr = new StreamReader(res.GetResponseStream());
                html = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                res.Close();

                RegExSolve Solver = new RegExSolve(html);


                string[] SeitenAufrufe = Solver.StatsUniqueAll();
                SeitenAufrufe[0] = SeitenAufrufe[0].Remove(0, 106);
                if (SeitenAufrufe[0].Contains("</strong></span></td>") == true)
                {
                    SeitenAufrufe[0] = SeitenAufrufe[0].Replace("</strong></span></td>", "");
                }
                return SeitenAufrufe[0];
            }
            catch
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    AllUniqueVisitors(id);

                    return "error";
                }
                else
                {
                    Trys = 0;

                    return "error";
                }
            }

            
        }



        public string[] Last30Days(long id)
        {
            string[] error = new string[1];
            error[0] = "error";
            try
            {
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.ipcounter.de/stats.php?u=" + id.ToString() + "&a=balken");
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

                StreamReader sr = new StreamReader(res.GetResponseStream());
                html = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                res.Close();
            }
            catch
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    Last30Days(id);
                    
                    return error;
                }
                else
                {
                    Trys = 0;
                    
                    return error;
                }
            }

            RegExSolve Solver = new RegExSolve(html);

            string[] Days = Solver.Stats30Days();
            if (Days.Length != 128)
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    Last30Days(id);
                    
                    return error;
                }
                else
                {
                    Trys = 0;
                    
                    return error;
                }
            }
            else
            {
                int count = 0;
                foreach (string item in Days)
                {
                    Days[count] = item.Replace("<strong>", "").Replace("</strong>", "").Replace("<td class=\"col1\" style=\"text-align: right;\">", "").Replace("</td>", "").Replace("<td class=\"col0\">", "").Replace("<td class=\"col1\" style=\"text-align: center\">", "").Replace("<td class=\"col0\" style=\"text-align: center\">", ""); ;
                    count++;
                }

                Trys = 0;
                return Days;
            }
        }



        public DataTable Last30DaysDataTable(long id)
        {
            
            DataTable Stats = new DataTable("30TageRueckblick");

            DataColumn[] ipcColumns = new DataColumn[4];
            ipcColumns[0] = new DataColumn("Tag");
            ipcColumns[1] = new DataColumn("Datum");
            ipcColumns[2] = new DataColumn("UniqueVisits");
            ipcColumns[3] = new DataColumn("Hits");

            Stats.Columns.AddRange(ipcColumns);


            try
            {
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.ipcounter.de/stats.php?u=" + id.ToString() + "&a=balken");
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

                StreamReader sr = new StreamReader(res.GetResponseStream());
                html = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                res.Close();
            }
            catch
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    Last30Days(id);

                    Stats.Reset();

                    ipcColumns = new DataColumn[4];
                    ipcColumns[0] = new DataColumn("Wochentag");
                    ipcColumns[1] = new DataColumn("Datum");
                    ipcColumns[2] = new DataColumn("UniqueVisits");
                    ipcColumns[3] = new DataColumn("Hits");

                    Stats.Columns.AddRange(ipcColumns);

                    DataRow dr = Stats.NewRow();
                    dr[0] = "Error";
                    dr[1] = "Error";
                    dr[2] = "Error";
                    dr[3] = "Error";
                    return Stats;
                }
                else
                {
                    Trys = 0;

                    Stats.Reset();

                    ipcColumns = new DataColumn[4];
                    ipcColumns[0] = new DataColumn("Wochentag");
                    ipcColumns[1] = new DataColumn("Datum");
                    ipcColumns[2] = new DataColumn("UniqueVisits");
                    ipcColumns[3] = new DataColumn("Hits");

                    Stats.Columns.AddRange(ipcColumns);

                    DataRow dr = Stats.NewRow();
                    dr[0] = "Error";
                    dr[1] = "Error";
                    dr[2] = "Error";
                    dr[3] = "Error";
                    return Stats;
                }
            }

            RegExSolve Solver = new RegExSolve(html);

            string[] Days = Solver.Stats30Days();
            
            
            

            if (Days.Length != 128)
            {
                Trys++;

                if (Trys < ErrorTry)
                {
                    Last30Days(id);

                    Stats.Reset();

                    ipcColumns = new DataColumn[4];
                    ipcColumns[0] = new DataColumn("Wochentag");
                    ipcColumns[1] = new DataColumn("Datum");
                    ipcColumns[2] = new DataColumn("UniqueVisits");
                    ipcColumns[3] = new DataColumn("Hits");

                    Stats.Columns.AddRange(ipcColumns);

                    DataRow dr = Stats.NewRow();
                    dr[0] = "Error";
                    dr[1] = "Error";
                    dr[2] = "Error";
                    dr[3] = "Error";
                    return Stats;
                }
                else
                {
                    Trys = 0;

                    Stats.Reset();

                    ipcColumns = new DataColumn[4];
                    ipcColumns[0] = new DataColumn("Wochentag");
                    ipcColumns[1] = new DataColumn("Datum");
                    ipcColumns[2] = new DataColumn("UniqueVisits");
                    ipcColumns[3] = new DataColumn("Hits");

                    Stats.Columns.AddRange(ipcColumns);

                    DataRow dr = Stats.NewRow();
                    dr[0] = "Error";
                    dr[1] = "Error";
                    dr[2] = "Error";
                    dr[3] = "Error";
                    return Stats;
                }
            }
            else
            {
                int count = 0;
                
                
                while (count < 128)
                {
                    string item1 = Days[count].Replace("<strong>", "").Replace("</strong>", "").Replace("<td class=\"col1\" style=\"text-align: right;\">", "").Replace("</td>", "").Replace("<td class=\"col0\">", "").Replace("<td class=\"col1\" style=\"text-align: center\">", "").Replace("<td class=\"col0\" style=\"text-align: center\">", ""); ;
                    string item2 = Days[count + 1].Replace("<strong>", "").Replace("</strong>", "").Replace("<td class=\"col1\" style=\"text-align: right;\">", "").Replace("</td>", "").Replace("<td class=\"col0\">", "").Replace("<td class=\"col1\" style=\"text-align: center\">", "").Replace("<td class=\"col0\" style=\"text-align: center\">", ""); ;
                    string item3 = Days[count + 2].Replace("<strong>", "").Replace("</strong>", "").Replace("<td class=\"col1\" style=\"text-align: right;\">", "").Replace("</td>", "").Replace("<td class=\"col0\">", "").Replace("<td class=\"col1\" style=\"text-align: center\">", "").Replace("<td class=\"col0\" style=\"text-align: center\">", ""); ;
                    string item4 = Days[count + 3].Replace("<strong>", "").Replace("</strong>", "").Replace("<td class=\"col1\" style=\"text-align: right;\">", "").Replace("</td>", "").Replace("<td class=\"col0\">", "").Replace("<td class=\"col1\" style=\"text-align: center\">", "").Replace("<td class=\"col0\" style=\"text-align: center\">", ""); ;
                    
                    DataRow datrow =  Stats.NewRow();
                    datrow[0] = item1;
                    datrow[1] = item2;
                    datrow[2] = item3;
                    datrow[3] = item4;
                   
                    Stats.Rows.Add(datrow);
                    
                    count = count + 4;
                   
                }

                Trys = 0;
                return Stats;
            }
        }


        public void Last30DaysGridView(DataGridView datagridview_name, long IPcounterID)
        {
            datagridview_name.Rows.Clear();
            string[] StatsTage = Last30Days(IPcounterID);

            if (datagridview_name.ColumnCount != 4 || datagridview_name.Columns[0].HeaderText != "Tag" || datagridview_name.Columns[1].HeaderText != "Datum" || datagridview_name.Columns[2].HeaderText != "Unique" || datagridview_name.Columns[3].HeaderText != "Hits")
            {
                datagridview_name.Columns.Clear();
                datagridview_name.Columns.Add("Tage", "Tag");
                datagridview_name.Columns.Add("Datum", "Datum");
                datagridview_name.Columns.Add("Unique", "Unique");
                datagridview_name.Columns.Add("Hits", "Hits"); 
            }

            datagridview_name.AllowUserToAddRows = false;
            datagridview_name.AllowUserToDeleteRows = false;
            datagridview_name.AllowUserToResizeColumns = false;
            datagridview_name.AllowUserToResizeRows = false;
            datagridview_name.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
            datagridview_name.BorderStyle = BorderStyle.Fixed3D;
            datagridview_name.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
            datagridview_name.MultiSelect = false;
            datagridview_name.ReadOnly = true;
            datagridview_name.ScrollBars = ScrollBars.Vertical;
            datagridview_name.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            datagridview_name.ShowCellToolTips = false;
            datagridview_name.ShowEditingIcon = false;

            if (StatsTage[0] != "error")
            {
                int typec = 1;
                int rowc = 0;
                datagridview_name.Rows.Add();

                foreach (string item in StatsTage)
                {
                    if (typec == 5)
                    {
                        datagridview_name.Rows.Add();
                        typec = 1;
                        rowc++;
                    }

                    if (typec == 1)
                    {
                        datagridview_name.Rows[rowc].Cells[0].Value = item;
                    }
                    if (typec == 2)
                    {
                        datagridview_name.Rows[rowc].Cells[1].Value = item;
                    }
                    if (typec == 3)
                    {
                        datagridview_name.Rows[rowc].Cells[2].Value = item;
                    }
                    if (typec == 4)
                    {
                        datagridview_name.Rows[rowc].Cells[3].Value = item;
                    }
                    typec++;

                }
            }
            else
            {
              
                datagridview_name.Columns.Clear();
                datagridview_name.Columns.Add("Tage", "Error");
                datagridview_name.Columns.Add("Datum", "Error");
                datagridview_name.Columns.Add("Unique", "Error");
                datagridview_name.Columns.Add("Hits", "Error"); 

            }
        }

    }
}



RegExSolve.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace MyStats
{
    class RegExSolve
    {
        
        string HTML;


        public RegExSolve(string html)
        {
           this.HTML = html;
        }

        public string[] StatsOnline()
        {
            Regex RegExPattern = new Regex(@"((<td width=""80"">Online:</td>\n      <td align=""right"" width=""70""><span style=""font-size: 12px;""><strong>)+[0-9]+)");
            MatchCollection ResultCollection = RegExPattern.Matches(this.HTML);

            string[] Results = new string[ResultCollection.Count];
            for (int x = 0; x < ResultCollection.Count; x++)
                Results[x] = ResultCollection[x].ToString();

            return Results;
        }


        public string[] StatsAll()
        {
            Regex RegExPattern = new Regex(@"((<td>Seitenaufrufe:</td>\n        <td align=""right""><span style=""font-size: 12px;""><strong>)+(.)*[0-9]+(.)*)");
            MatchCollection ResultCollection = RegExPattern.Matches(this.HTML);

            string[] Results = new string[ResultCollection.Count];
            for (int x = 0; x < ResultCollection.Count; x++)
                Results[x] = ResultCollection[x].ToString();

            return Results;
        }

        public string[] StatsUniqueAll()
        {
            Regex RegExPattern = new Regex(@"((<td width=""80"">Besucher:</td>\n        <td align=""right"" width=""70""><span style=""font-size: 12px;""><strong>)+(.)*[0-9]+(.)*)");
            MatchCollection ResultCollection = RegExPattern.Matches(this.HTML);

            string[] Results = new string[ResultCollection.Count];
            for (int x = 0; x < ResultCollection.Count; x++)
                Results[x] = ResultCollection[x].ToString();

            return Results;
        }
        

        public string[] Stats30Days()
        {
            Regex RegExPattern = new Regex(@"(((<td class=""col0"">)+((Mo,)|(Di,)|(Mi,)|(Do,)|(Fr,)|(<strong>Sa</strong>,)|(<strong>So</strong>,))+(</td>)+)|((<td class=""col1"" style=""text-align: right;"">)+[0-9.]+(</td>)+)|((<td class=""col1"" style=""text-align: center"">)+[0-9.]+(</td>)+)|((<td class=""col0"" style=""text-align: center"">)+[0-9.]+(</td>)+))");
            MatchCollection ResultCollection = RegExPattern.Matches(this.HTML);

            string[] Results = new string[ResultCollection.Count];
            for (int x = 0; x < ResultCollection.Count; x++)
                Results[x] = ResultCollection[x].ToString();

            return Results;
        }
    }
}


Noch eine kleine Anmerkung zum Schluss - das ist das erste Snippet, was ich in der Form irgendwo poste. Sollten mir Fehler unterlaufen sein, oder ihr habt generell Verbesserungsvorschläge, dann bin ich natürlich jederzeit für (konstruktive) Kritik offen!

Liebe Grüße,
ein blutiger_anfänger

Schlagwörter: ipcounter.de regex statistik

Thema: Problem mit Pfad im SQL string
Am im Forum: Datentechnologien

Ich hab's jetzt nicht ausprobiert, aber müsste es nicht reichen, wenn du entweder ein @ vor deinen Statement-String setzt bzw. vier \ nimmst?

also so:

string statement = @"SELECT  DISTINCT M_Mieter.MI_Name1,M_Mieter.MI_Vorname1,M_Mieter.MI_Straße,M_Mieter.MI_PLZ, M_Mieter.MI_Ort, M_Mieter.MI_Mail FROM M_Mieter WHERE M_Mieter.MI_Nummer IN (SELECT tblMieter.MI_Nummer FROM tblMieter IN  '\\Master\D\Villa\Daten\Daten.mdb'  WHERE tblMieter.MI_MA_zlr = 47 AND tblMieter.MI_OB_zlr = 53)"; 

//bzw

string statement = "SELECT  DISTINCT M_Mieter.MI_Name1,M_Mieter.MI_Vorname1,M_Mieter.MI_Straße,M_Mieter.MI_PLZ, M_Mieter.MI_Ort, M_Mieter.MI_Mail FROM M_Mieter WHERE M_Mieter.MI_Nummer IN (SELECT tblMieter.MI_Nummer FROM tblMieter IN  '\\\\Master\\D\Villa\\Daten\\Daten.mdb'  WHERE tblMieter.MI_MA_zlr = 47 AND tblMieter.MI_OB_zlr = 53)"; 

Thema: Projekt: PursuitDrift (2D-Autorennspiel)
Am im Forum: Projekte

Zitat von pdelvo
Es liegt wohl am Vollbildmodus, welcher nicht auf allen Rechnern funktioniert, wo IMHO das Seitenverhältnis dran Schuld ist. Ich schalte ihn in der neuen Version aus.
Das kann sein... Ich fahr' momentan 'ne Auflösung von 1680*1050px.

Wahrscheinlich würd's jetzt sogar klappe, aber meine Grafikkarte an der Workstation hier hat mich soeben disqualifiziert... Naja, dann werd ich's nachher mal an nem anderen Rechner testen...

Thema: Projekt: PursuitDrift (2D-Autorennspiel)
Am im Forum: Projekte

Hab mir die aktuelle Version gerade auch mal aus eurem Forum gezogen, aber musste leider feststellen, dass ich nichtmal bis zum Menü komme...

XNA 3.0 und .NEt Framework 3.5 SP1 sind drauf...
Beim ersten Versuch schien er noch das Menü laden zu wollen und jeder weitere Versuch führte zum sofortigen Absturz...

Screen ist im Anhang. Wenn ihr den komplette Fehlerbericht wollt, dann sagt nochmal bescheid, dann kann ich den auch gerne posten.

liebe Grüße,
ein blutiger_anfänger

Thema: [gelöst] Zeit kontinuierlich anzeigen - GUI hängt sich auf
Am im Forum: GUI: Windows-Forms

Entschuldige, dass es doch etwas länger gedauert hat, aber ich habe die letzten Tage keine Zeit gefunden...

Deine Uhr läuft jetzt soweit. Ich habe dir das Projekt mal mit angehängt, damit du dir alles nochmal anschauen kannst.

Im wesentlichen habe ich nicht mehr viel dran geändert. Ich habe lediglich die

Thread.Sleep(10);

entfernt, da sie durch das einsetzen, des Timers unnötig sind und ganz wichtig, der entscheidene Punkt - ich habe beim eintreten des Timer-Tick-Events, den Timer angehalten, und ihn erst ganz am Ende wieder gestartet.
Das hat folgenden Grund, da das Tick-Event sonst greift, bevor alle Zeichen gezeichnet sind und es so sein kann, dass nicht immer alle Zeichen richtig angezeigt werden...

Ansonsten wüsste ich grad nicht, was ich noch groß geändert habe...
Projekt liegt im Anhang - viel Spaß damit!

liebe Grüße,
ein blutiger_anfänger ;)

Thema: Form eine "feste" Location geben
Am im Forum: GUI: Windows-Forms

Macht nichts ;) Es wird dich auch nicht nerven... Ist eh nur für mich und 2-3 andere Leute, doch ohne die Interaktion, auf die das Form hinweißt ist die Effektivität gleich 0, also macht's schon Sinn, dass das Form nicht irgendwo hingezogen/verteckt wird und man vergisst zu "interagieren". ;)