Laden...

Forenbeiträge von Melone Ingesamt 190 Beiträge

26.02.2008 - 15:42 Uhr

Also das Problem stellt ja die SearchOption.AllDirectories dar. Wenn du da irgendwo einen Hardlink hast, kann es zu Schleifen und damit zum Stackoverflow kommen.

Daher wäre es besser, wenn du anstelle von dieser Option, eine eigene Suche schreibst.

Am einfachsten kann man da halt eben eine rekursive Suche schreiben, die deine Verzeichnisse durchsucht. Bei dieser Suche kannst du dann solche Hardlink gesondert behandeln.

Mit den gefundenen Dateien hast du die Möglichkeiten:

  1. Du suchst ersteinmal einfach alle Dateien, schreibst diese in eine Liste und kannst nachher nach Herzenslust diese Liste filtern und ...
  2. Du suchst direkt nach den richtigen Dateien und verarbeitest diese weiter

Eine solche Suche funktioniert so in diesem Stil:

        private void search(DirectoryInfo info)
        {
            foreach (FileInfo finfo in info.GetFiles())
            {
                try
                {
                    if (Regex.IsMatch(finfo.FullName, ".pdf")) // Das geht bestimmt besser
                        listBox1.Items.Add(finfo.FullName);
                    else
                        listBox2.Items.Add(finfo.FullName);
                }
                catch (Exception ex)
                {
                    //Fehler
                }
            }
            
            foreach (DirectoryInfo tmp in info.GetDirectories())
            {
               try 
                {
                    search(tmp);
                }
                catch (Exception ex)
                {
                    //Fehler
                }
            }

        }

EDIT:
Um eine Progressbar zu füllen, müsste eine solche Suche natürlich mindestens einmal laufen.

26.02.2008 - 14:48 Uhr

😉 Poste doch noch mal wie dein Code jetzt aussieht.

26.02.2008 - 14:35 Uhr

Das war ja nur Schematisch 😉
Das man die schon noch filtern kann/ sollte ist mir schon klar.

Edit: Wobei man für ein ernstes Problem ja schon einen Hardlink auf ein Verzeichnis braucht. Und wer benutzt schon Hardlinks auf Verzeichnisse?

26.02.2008 - 14:29 Uhr

Also eine Rekursive Dateisuche würd ich mir so vorstellen.

  1. eine Methode die ein Verzeichnis übergeben bekommt.
  2. diese Methode sucht darin nach den gwünschten Dateien zur Not Regex.ismatch auf den Namen
  3. falls weitere Unterverzeichnisse existieren wird die Methode damit erneut aufgerufen.
26.02.2008 - 14:08 Uhr

Bricht das eine Element mit einem Fehler ab, kann dieser doch entweder ignoriert werden oder gezählt werden. Vielleicht ist er auch gravierend und die Suche wird abgebrochen.
Sollte der Fehler aber nur von geringer Bedeutung sein, kann die Methode doch auch einfach erneut mit dem nächsten Element aufgerufen werden (rekursiv also).

Die andere Alternative ist die von herbivore kleinere try catch Einheuten zu benutzen.

26.02.2008 - 12:25 Uhr

Wenn du zum Schluss etwas ausführen willst, gibts ja auch noch Finaly.
Du könntest die Fehler also auch sammeln und im Finaly Teil ausgeben.

26.02.2008 - 12:23 Uhr

???
Das versteh ich nicht wie du das meinst.

Wenn ich meinen WS instanziiere, kann ich den so ändern wie da oben beschrieben.

26.02.2008 - 11:35 Uhr

Das Nullmodem kann man sich für Tests auch sparen.
Man kann mit Büroklammern auch den eigenen Ausgang wieder auf den eigenen Eingang legen. Das ist für Tests vielleicht etwas einfacher zu handhaben.

26.02.2008 - 11:16 Uhr

Poste doch mal ein wenig Code, wo du nicht weiterkommst.

26.02.2008 - 11:15 Uhr

Hi,
ohne jetzt zu wissen, ob es da auch was fertiges für gibt, würde ich glaub ich so vorgehen:
Die fehler, die wegen irgendeines Schutzes auftreten filter.
Wenn ein solcher auftritt, die Suche einfach im catch-Block einfach nochmal mit der nächsten Datei/Verzeichnis aufrufen.
Die Fehler kannst du ja in einer Liste sammeln.
Sollten andere Fehler auftreten, kannst du ja immer noch die gesamte Sucheabbrechen.

25.02.2008 - 13:10 Uhr

Der Fehler sagt aber doch, dass er Probleme mit dem Tabellen bzw View Namen hat. Hast du mal den Namen geprüft?

25.02.2008 - 13:07 Uhr

Das du dich anmelden kannst bedeutet nicht zwangläufig, dass der Server richtig arbeitet. Windows speichert die Benutzer ja auch zwischen. Solange man sich einmal an der Domäne angemeldet hat, ist danach nicht unbedingt ein Zugriff auf diese nötig, damit Windows dich rein lässt. Das geht sogar soweit, dass nicht mal eine Netzwerk verbindung bestehen muss. Macht ja auch Sinn, wie machen das sonst Aussendienstler, etc. ??

Es kann also durchaus auch sein das es am Server liegt.

25.02.2008 - 12:59 Uhr
            Webservice ws = new Webservice();
            ws.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6";
            MessageBox.Show(ws.UserAgent.ToString());

Sollte ich das richtig verstanden haben, meinst du das da.

18.02.2008 - 14:47 Uhr

Es gibt generell die Möglichkeit des shared memory. Musst du mal nach suchen.

In diesem Artikel geht es unter anderem auch darum.

18.02.2008 - 12:42 Uhr

Naja da musst du den Quellcode wohl nach einem Link durchsuchen. Den ersten gefundenen rufst du auf ...
Sollte nicht soo schwer sein.

28.01.2008 - 16:13 Uhr

Mit einem Fachabitur darfst Du maximal an Fachhochschulen (mit ein paar Ausnahmen) studieren

Das reicht ja wohl auch 😉

Ich bin mir jetzt nicht ganz sicher was du unter Technik verstehst, aber an der FH-Münster z. B. gibt es den Studiengang Angewandte Informatik. Der ist schon ziemlich an die Elektrotechnik angelehnt. Alternativ dazu gibt es auch bei unseren Etechnikern eine Fachrichtung Technische Informatik das ist dann halt Etechnik an die Informatik angelehnt. Beide sehr interessant.
Ich hab AI studiert.
Wenn du noch mehr auf Technik stehst dann kommt da vielleicht auch Etechnik mit Schwerpunkt Automatisierung in Frage, da muss man auch sehr viel Software erstellen.

Edit:
Dazu kommt noch, dass Münster eine unglaublich schöne Stadt ist und da fast nur Studenten rumlaufen.

23.01.2008 - 13:47 Uhr

Nimmt man dann nicht besser einen Reader? Der liest ja nunmal eh jeden Knoten aus.

23.01.2008 - 12:49 Uhr

Warum willst du denn durch die Knoten navigieren und bei Bedarf Childnodes ausgeben?
Mit XPATH kannst du doch direkt mit z.B.


SelectNodes("Klassifizierung_des_Prüflings"))

die Klassifizierungen aufrufen.

03.01.2008 - 16:07 Uhr

??????


class KlasseA
{
}

class KlasseB
{
   KlasseA EinA;
}


21.12.2007 - 23:52 Uhr

Das das in Java geht kann ich ja kaum glauben.
Methodenaufrufe sind nur innerhalb von Methoden erlaubt.

Soweit ich weiß bei Java auch, da es sich um rein objekt orientierte Sprachen handelt.

21.12.2007 - 23:50 Uhr

Beim instanziieren übergeben.
FindForm();
GetContainerControl();

Das wären so die Wege die ich wüsste.

21.12.2007 - 23:18 Uhr

Meine auch so ist das ja nicht 🙂
Aber das Buch ist nunmal wirklich gut und damit kannste diese Fragen halt viel schneller selber klären.

21.12.2007 - 23:14 Uhr

Tja irgendeinen Tod muss man doch immer sterben 😉 such dir den für dich schönsten aus.
Aber mich würd interessieren wie du es dann löst so aus reiner Neugier.

21.12.2007 - 11:48 Uhr

Versuchs mal mit


public void Execute(Control ctrl)
{
//tuwas
}

Dann kannst du ja jegliche Controls übergeben.
Oder du übergibst direkt einfach object dann kannst du ja alles übergeben musst dann aber aufpassen ob du auch das bekommst was du denn eigentlich erwartest.

21.12.2007 - 11:38 Uhr

aber was ist denn, wenn das command auf viele verschiedene controls angewendet werden kann/muss?

Wenn du dem Command ein Control, welches es dann bearbeitet übergibst, dann ist das doch kein Problem oder versteh ich noch nicht was du meinst?

21.12.2007 - 11:34 Uhr

Der Aufruf von Funktionen ausserhalb von einer Funktion ist nicht erlaubt.

[EDIT]


rand.next(1,7) // das hier meine ich

Ich kann dir nur raten das 🛈 zu lesen. Da werden deine Fragen beantwortet.

21.12.2007 - 11:28 Uhr

????????????
Jetzt versteh ich gar nicht mehr was du möchtest.

Du hast doch geschrieben du kompilierst alles in eine EXE.
Also willst du doch durch diese EXE debuggen oder?

Wenn du also den Debugger an diesen Prozess hängst, dann kannst du doch einfach an die entsprechenden Stellen Breakpoints setzen und glücklich sein.

Die EXE wird dann natürlich über Debug --> start debugging (F5) gestartet.

21.12.2007 - 11:24 Uhr

Wenn du nicht weißt wie man Funktionen aufruft, solltest du vielleicht das hier noch mal lesen. 🛈

21.12.2007 - 11:22 Uhr

So bindest du den Debugprozess an die EXE, damit sollte man dann eigentlich alles debuggen können was da so kommt bzw wovon du Sourcen hast.

Ich starte so zum Beispiel N-Unit und kann dann auch durch meine Testroutinen durch debuggen obwohl ja eigentlich N-Unit gestartet ist. Sobald er aber an eine Codezeile von mir kommt wo ein Breakpoint ist springt er an die richtige stelle im Code.

21.12.2007 - 11:11 Uhr

Versuch mal in den Eigenschaften des Projektes-->Debug-->
anstelle von Start Projekt --> Start external Programm.
Da gibst du dann deine EXE an.
Dann sollte der Debugger damit verknüpft werden.

21.12.2007 - 10:30 Uhr

So in der Art

        public void ClearAll(Control ctrl)
        {
            foreach (Control tmp in ctrl.controls)
            {
                if (tmp is Form || tmp is GroupBox || tmp is TabControl)
                    ClearAll(tmp);
                else
                    if (tmp is TextBox)
                        (TextBox)tmp.Text = "";

            }


        }
20.12.2007 - 20:05 Uhr

nein, mir geht es darum, das mehrere Controls ein und das selbe command besitzen, das wenn ich (gesponnen) 10 verschiedene Öffnenmöglichkeiten habe, immer das selbe command ausgeführt wird, und nicht 10 commands der gleichen art!

Also kann ich das command ruhig an ein objekt binden (hat ja nicht direkt was mit dem MVC Pattern zu tun oder?)?

Das widerspricht sich doch oder seh ich das Falsch? Also ein Command für mehrere Objekte aber ein Command an ein Objekt binden.

Wie gesagt ich würd dem Command dann einfach gleich das ganze Control über geben und eventuell noch zusätzliche Steuerparameter.
Kannste entweder über eine eigene Übergabeklasse machen oder du nimmst einfach ein Object[].
Wenn du das ganze Control übergibst und im Command selber dann auch wirklich die Schrift änderst, dann brauchst du auch keinen Rückgabewert höchsten True/False.

Zum halten der Kommandos würd ich sagen, wenn du eine Übersichtliche Anzahl hast, dann initialisier die beim Starten und Speicher die irgendwo. Aber ob das in einem Dictionary sein muss.. das Ding musst du ja auch übergeben/verwalten wie auch immer aber da würd ich sagen das ist alles Geschmack.

20.12.2007 - 19:54 Uhr

Also willst du aus dem Web was runter laden?? Du müsstest das etwas konkretisieren.

20.12.2007 - 15:18 Uhr

Ich muss gestehen, dass mit dem Event versteh ich nicht so ganz.
Ich hab das Commandpattern mal in einem Java-Prog benutzt.
Wiso machst du das über einen Delegaten? Das ganze kann doch einfach synchron abgearbeitet werden oder?

Den Sinn des Executers versteh ich auch nicht.
Führ das Kommando doch einfach aus.

Die Übergabe beim Erzeugen könnte man sich vielleicht auch sparen, wenn du beim Execute ein Object[] als Parameter übergibst. Dann kannst du das Kommando etwas besser einsetzen und musst nicht für jede Textbox ein eigenes haben (command.execut(Textbox1)).
Da bin ich aber nicht sicher ob das sauber ist wenn man das so macht.

Wenn du schon einen Executer hast sollte der vielleicht den Stack beschreiben weil er ja auch für das ausführen zentral zuständig ist.

Die Kommandos solltest du btw immer als


ICommand mycommand = GreaterCommand()

erstellen.

In der Msdn gibts ein ziemlich ausführliches Video vielleicht hilft das.

20.12.2007 - 14:50 Uhr

Von wo möchtest du denn downloaden? Oder was?

Wo genau liegt dein Problem?

20.12.2007 - 13:45 Uhr

Wo ist denn jetzt dein Problem?

20.12.2007 - 12:28 Uhr

Schau mal in der :rtfm: Hilfe unter Random.

18.12.2007 - 15:25 Uhr

Ein Item (stellvertretend für ein Lied, was ja ein Playlisteintrag darstellt) hat Eigenschaften, die es Beschreiben (Titel, Dateiname, Spieldauer) während eine List nur eine Aufzählung ohne Eigenschaften ist. Oder nicht?

Ich würd sagen das ist ein bischen Geschmackssache. Eine Playlist hat auch Titel, Dateinamen und eine Spieldauer oder?

Das klingt für mich ein bißchen nach dem Composite Pattern.

14.12.2007 - 15:16 Uhr

Mathematisch sind es aber
(3+3)3 = 18
und
3+3
3 = 12
Wenn das für dich gleich ist ...
Ich werd dich in der nächsten Matheklausur zitieren 😉.

[EDIT]

Gibts eigentlich noch Reaktionen von LukeGEE? Würd mich mal interessieren wofür du das jetzt genau verwendest und wie du es löst 🙂
[/EDIT]

14.12.2007 - 15:03 Uhr

hallowelt. Das ist natürlich nicht immer noch ungleich hallo welt 😉 aber da besteht auch noch der Widerspruch zur Voraussetzung, dass "der Rest gleich" ist.

Jaja da hab ich ein " " vergessen. Ich geb euch ja recht das die Strings technisch gleich sind wenn man die Klammern ignoriert.
Allerdings nochmal

bräuchte folgendes für meinen Vokabeltrainer:

Bei einem Vokabeltrainer kommt es nach meinem Verständniss auf korrekte Schreibweisen an. Wenn man jetzt einige Zeichen ignoriert, ist das für mich nicht == sondern !=.

Mit dem Trim() geb ich dir recht meinte auch eigentlich Replace().

Womit ich halt zu bedenken geben will, dass man ja nicht einfach irgendwelche Klammern ignorieren kann. Im allgemeinen stehen Klammern ja nicht einfach völlig sinnfrei in irgendwelchen Texten.
Das sehe ich eher wie el_panter, wozu sind die Klammern dann überhaupt in einem der beiden Texte?

Aber das sollten vielleicht auch nicht wir ausdiskutieren 🙂 LukeGee muss sich ja einfach nur überlegen wie er damit umgeht.

[EDIT]
Wenn man das mal weiterspielt..
Sind dann für dich etwa (3+3)3 und 3+33 etwa auch gleich wenn man die Klammern ignoriert?
[/EDIT]

14.12.2007 - 14:16 Uhr

da irrst du dich.

hallo(welt) ist nicht = hallo welt

bräuchte folgendes für meinen Vokabeltrainer:

Bei einem Vokabeltrainer kommt es nach meinem Verständniss auf korrekte Schreibweisen an. Wenn man jetzt einige Zeichen ignoriert, ist das für mich nicht == sondern != 😉 .

Mit dem Trim() geb ich dir recht meinte auch eigentlich Replace().

14.12.2007 - 14:06 Uhr

Dann sind sie ja aber nicht gleich.
Stringvergleich mit % darüber wurde hier neulich schon mal geredet.

Ansonsten vielleicht als workaround, entfern die Klammern vorher mit trim().

14.12.2007 - 11:20 Uhr

Du startest ja mit deinem Programm einen Prozess. Dieser läuft in einer für einen User denifierten Umgebung. Dort hat er auch seine Rechte, seinen Speicher... .
Wenn du jetzt eine einzelne Funktion in einem anderen Benutzerkontext starten würdest, dann würden ja dort ganz andere Rechte gelten. Das klingt sehr nach Schädlingsprogrammen 😉. Dann wäre dein Programm ja gar nicht mehr gekapselt.

Der wie ich finde korrekte Weg wäre diese Funktionalität auszulagern in einen eigenen Prozess und mit diesem Nachrichten auszutauschen.

14.12.2007 - 11:06 Uhr

Ich glaube auch das es so nicht geht. Da wirst du wohl einen anderen Prozess starten müssen und dann über interprozess kommunikation Nachrichten austauschen.

Wenn man eine einzelne Funktion unter einem anderen Account starten könnte, bzw dürfte, dann wäre das ja auch eigentlich ein ziemlicher Hack oder?

14.12.2007 - 11:02 Uhr

Historisch bedingt benutzen wir ab und zu TeamViewer.

Der funktioniert auch unter Vista (bei mir zumindest).

14.12.2007 - 10:29 Uhr

Naja wer ruft schon eine Funktion so auf 😉.

this.irgendwas ("");

Wenn du halt vorher ein


string tuhiermitwas;

hast der dann halt einfach nicht gefüllt wird, dann kannste den ja so einfach übergeben.
Wenn du die Funktion natürlich ohne Parameter aufrufen willst dann hast du recht dann musst du das überladen.

13.12.2007 - 16:06 Uhr

Hab ich mal irgendwo so gefunden.

    public sealed class Wallpaper
    {
        Wallpaper() { }

        const int SPI_SETDESKWALLPAPER = 20;
        const int SPIF_UPDATEINIFILE = 0x01;
        const int SPIF_SENDWININICHANGE = 0x02;

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

        public enum Style : int
        {
            Tiled,
            Centered,
            Stretched
        }

        public static void Set(Uri uri, Style style)
        {
            System.IO.Stream s = new WebClient().OpenRead(uri.ToString());

            System.Drawing.Image img = System.Drawing.Image.FromStream(s);
            string tempPath = Path.Combine(Path.GetTempPath(), "wallpaper.bmp");
            img.Save(tempPath, System.Drawing.Imaging.ImageFormat.Bmp);

            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
            if (style == Style.Stretched)
            {
                key.SetValue(@"WallpaperStyle", 2.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            if (style == Style.Centered)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            if (style == Style.Tiled)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 1.ToString());
            }

            SystemParametersInfo(SPI_SETDESKWALLPAPER,
                0,
                tempPath,
                SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
        }
    }
13.12.2007 - 15:53 Uhr

Muss das zwingend remote sein? Kannst ja ein Startscript laufen lassen.


foreach(Screen scr in Screen.AllScreens)
      {
			
	listBox1.Items.Add("Devicename: " + scr.DeviceName);
	listBox1.Items.Add("Primary: " +scr.Primary.ToString());
	listBox1.Items.Add("Bounds: " +scr.Bounds.ToString());
	listBox1.Items.Add("Type: " +scr.GetType().ToString());
	listBox1.Items.Add("WorkingArea: " +scr.WorkingArea.ToString());
	listBox1.Items.Add("----------------------------------------");
       }

13.12.2007 - 15:17 Uhr

void irgendwas (string hello)
hello = hello ?? "Hello World";
13.12.2007 - 14:25 Uhr

Du rufst aber diese Methode nicht auf Database() ist KEIN Konstruktor für public class cSQL