Zum Inhalt springen

Maulwurf_der_Schlaue

Mitglieder
  • Gesamte Inhalte

    801
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Maulwurf_der_Schlaue

  1. Hallo, kurze suche bei Tante Google nach "Add-Ons verwalten deaktiviert" hat folgendes gefunden: Quelle: Quelle zum Zitat
  2. Hallo, wenn Du von "Task" sprichst kannst Du entweder deine Anwendung in den Autostartordner legen oder einen "geplanten Task" in der Systemsteuerung anlegen, der dein Programm alle 15 Minuten startet. Solltest Du allerdings einen "Service" bzw. "Dienst" meinen kann Tante Google bestimmt helfen.
  3. Hallo Diminbg, willkommen an Board ^^. Zu deinem Problem: Eine Eingabefenster erzeugst Du indem Du einen Namen eingibst der nicht in deiner Datenquelle (meist Tabelle / andere Abfrage) vorhanden ist. Beispiel: select * from filme where titel like EingabeTitel or darsteller like EingabeDarsteller or Regisseur like EingabeRegisseur In diesem Beispiel sind die Namen EingabeTitel, EingabeDarsteller und EingabeRegisseur nicht in der Tabelle Filme, deshalb frag Access dann nach einem Wert den es einsetzten muss. Wenn Du jetzt bei einem Wert nichts eingibst weil Du alles suchst, muss ich Dich enttäuschen, hier musst Du einen * (Stern) eingeben. (* = Platzhalter für beliebig viele Zeichen) Wenn Du also bei allem einen Stern eingibst erhälst Du alle Einträge. Gibst Du bei Titel "Titanic" ein und bei den anderen einen Stern erhältst Du alle Treffer die exakt "Titanic" sind. (jeweils ohne ") Jetzt lass ich Dich mit den Informationen mal etwas ausprobieren
  4. Hallo, da wir anscheinend so nicht weiterkommen hab ich mich entschlossen - nur weil ich Zeit und Lust hatte - Dir eine Komplettlösung zu geben: Hinweis: Verwenden des Skiptes ohne Gewähr und auf eigene Gefahr. Auf meinem System hat es mit einem Testordner sehr gut funktioniert. @echo off echo. echo == BEREINIGEN EINES ORDNERS == rem Mehr Output rem [true] = Ausgabe zusätzlicher Zeilen rem [false] = Minimale Ausgabe set debugmode=false rem Verzeichnis in welchem die Dateien geloescht werden sollen set delpath=C:\Users\Name\Desktop rem Benutzerdefiniert Ausnahmen festlegen (Dateierweiterung) set skipfile1=lnk set skipfile2=db set skipfile3=ini @echo. @echo Dateien loeschen... for /f "usebackq tokens=1,2 delims=." %%a in (`dir %delpath% /a:-d /b`) do ( if '%debugmode%' == 'true' ( @echo "[----------------------------------------]" @echo Pruefe: '%delpath%\%%a.%%b' [Endung: %%b] ) if not '%%b' == '%skipfile1%' ( if not '%%b' == '%skipfile2%' ( if not '%%b' == '%skipfile3%' ( @echo [LOESCHEN] '%delpath%\%%a.%%b' [COLOR="DarkRed"]rem Entferne REM vor erase zum ENTGÜLTIGEN löschen rem erase %delpath%\%%a.%%%b[/COLOR] ) ELSE ( if '%debugmode%' == 'true' ( @echo [IGNORE] Dateiendung [%skipfile3%] ) ) ) ELSE ( if '%debugmode%' == 'true' ( @echo [IGNORE] Dateiendung [%skipfile2%] ) ) ) ELSE ( if '%debugmode%' == 'true' ( @echo [IGNORE] Dateiendung [%skipfile1%] ) ) ) rem Setvariablen aufloesen set delpath= set debugmode= set skipfile1= set skipfile2= set skipfile3= echo. echo ABGESCHLOSSEN ! Über Start->Ausführen->CMD öffnen und cleanup.bat starten. Möchtest Du die Ausgabe als Log-File haben mach folgendes: cleanup.bat >> cleanup.output.txt
  5. Hi, Du weißt schon was der Befehl da macht? Kommt darauf an, für Dateinamen gibt es in der Hilfe folgenden Text zu finden:
  6. Hallo, Ja es kommt nicht mehr weil Du es ausgeschaltet hast. Spass bei Seite. Was meinst du mit jetzt kommt kar nichts mehr? Fährt er jetzt nicht mehr hoch oder wie? Meinst Du vllt. den Bildschirm wo er den Hauptspeicher anzeigt und den Prozessor etc.?
  7. Hi, also jetzt hast das Thema schon eröffnet, dann sag uns doch bitte noch wie Du das Problem jetzt gelöst hast. Danke.
  8. Hi, also eigentlich dachte ich das Du da nur eine Datei hast. Beispiel: name movie mov-index user001 abc 0001 user001 abc dek 0002 user001 def 0003 user039 akc 0001 user040 dkeu 0001 user001 dkudi 0004 jetzt muss halt die "einlese-funktion" die einzelnen Datensätze lesen und in das dafür vorgesehene Array speichern. userram = record name:string[20]; saw: array of movie; end; ungefähr so: userram.name = "user001 " for zeile in datei.txt do begin // angenommen du willst nur die daten von user001 if userfile.name = userram.name begin // weiteren Platz für Array-Element schaffen setlength(userrram.saw, high(userram.saw)+1) // daten ablegen userram.saw[High(userram.saw)].name := userfile.movie end; end; Wie mir soeben auffällt braucht man den Index nicht wirklich , aber egal.
  9. Hallo, so wie das da steht wird des nicht funktionieren. Du vergleichst "dateiname.txt" mit "*.txt". Du musst den for-befehl anpassen, um zum vergleich die Dateiendung zu haben. Hier ein Beispiel: for /f "tokens=1,2 delims=." %i IN (dateien.txt) do @echo %j %i / %i.%j dateien.txt habe ich erstellt mit dir /b >> dateien.txt Zum verknüpfen deiner Ausschlüsse kannst Du im do-Bereich der for-Schleife einen Verschachtelten If-Block verwenden: for ... do if not '%j' == '%skipfile%' ( if not '%j' == '%skipfile1%' ( @echo Lösche Datei %i !! ) ELSE ( @echo %i Datei nicht löschen. ) ELSE ( @echo Verschone %i Datei vor dem löschen. ) Sieht ein wenig kompliziert aus aber so ist das eben eine Komplettlösung gibt's es nur selten Falls Du noch Informationen zum einem Befehl brauchst gib in der Konsole einfach /? ein. Für weitere Hilfe zum dir-Befehl => dir /? Für weitere Hilfe zum for-Befehl => for /?
  10. Hallo, Hab ich was verpasst? Seit wann gibt es 1Gbit-WLan zu kaufen?
  11. Hallo, oft wird das auch als "Top N Analyse" bezeichnet. In Verbindung mit deinem Namen der Datenbank solltest Du bei Tante google fündig werden.
  12. Hallo Zakum, ich hätte einen Lösungsansatz. userfile = record index:string[12]; name:string[20]; saw: movie; favGenre: string[20]; favActor: array[1..7] of string[20]; favDirec: array[1..3] of string[20]; end; Hast Du jetzt zwei Einträge - Array von Länge 2 - so musst Du zwei Einträge speichern jeweils mit dem gleichen Index - Index könnte Datum + Uhrzeit sein, hängt davon ab wie schnell du Daten erzeugst. Du kannst ja einen zweiten Typ anlegen der so ist: (wie der von Dir zuvor definierte) userram = record name:string[20]; saw: array of movie; favGenre: array of string[20]; favActor: array[1..7] of string[20]; favDirec: array[1..3] of string[20]; end; und dann eine Routine schreiben welche die Daten von userfile in den userram umwandelt und zurück. Anhand des Indexes könntest Du dann erkennen welche Einträge zusammengehören. Hoffe das ich meinen Gedankengang ausreichend gut in Wortform gebracht habe. Der Fehler müsste doch für favGenre auch kommen, oder nicht?
  13. Hallo, vielen Dank nochmal für den Link, scheint zu funktionieren. Ist mir jetzt fast schon peinlich das ich den nicht selber finden konnte...
  14. Hallo, werde ich ausprobieren. Du wirst lachen aber zu so einen ähnlichen Artikel Beschreibung: des Pack 1 Access 2003-post-service-Hotfix-Pakets: 20. August 2004 habe ich gefunden, dann hab ich versucht irgendwie von da aus was neues zu finden, leider erfolglos. Danke schonmal.
  15. Hallo zusammen, ich habe hier eine Access-Datenbank welche immer einwandfrei funktioniert hat. Die Datei wurde in Office 2000 erstellt und jedesmal konvertiert wenn eine neue Version von Office erschienen ist. Jetzt habe ich das Problem das Anwender mit Access 2003 SP3 keine Berichte und Abfragen mehr öffnen können, es kommt die Meldung "Access hat ein Problem festgestellt ..." Unter Office 2003 (SP2) hat es aber noch funktioniert. Kennt jemand einen Hotfix oder eine andere Lösung um dieses Problem zu lösen. Googeln und suchen im Board haben mich nicht weitergebracht. - Leider kann ich wegen internen Richtlininen kein Office 2003 SP2 installieren bzw. installiert lassen weil es sich selbst aktualisiert. - Eine neue Datei im 2003er Format erstellen und alles Importieren hat leider nicht funktioniert. Für Anregungen und Tipps bin ich dankbar.
  16. Hallo JesterDay, ich wollte Dir in keiner Weise zu nahe treten, ich bin doch froh das Du Dir das überhaupt ansiehst. Es existiert kein Zeitdruck oder ähnliches, es dient ja als Lern Beispiel wie man mit Threads umgehen kann. Ich werde versuchen mit der Delphi-Hilfe besser klar zu kommen. Genauso wenig drehe ich dir einen Strick daraus wenn da etwas im Programm nicht funktioniert hat. Das meine Eigenarbeit weiterhin erforderlich ist habe ich nicht ausgeschlossen. Ich dachte ich schreib Dir welche Probleme noch aufgetreten sind da ich deine Vorschläge verwendet habe. Die Hilfe wird niemals einen Menschen ersetzen können , auch wenn sie noch so gut ist. Werde mir das mit der "Set of"-Thematik mal ansehen.
  17. Hallo, neben den bereits genannten Titeln, habe ich noch folgendes RedSteel: Finde die Steuerung recht interessant (Schwertkampf) ist aber etwas eintönig und ist nur in speziellen Szenen einsetzbar. Ansonsten ist es ein Shooter wie FarCry. Meine persönlich Wertung: [0]----x----[+]
  18. Hallo, hast Du schon mal ein Bios-Update gemacht? Kann zwar nicht garantieren das das was bringt, nur als ich mal ähnliche Probleme mit dem Sound hatte hat das geholfen. Ansonsten wüsste ich dazu auch keinen besseren Ratschlag.
  19. Nachdem ich mit lachen fertig bin muss ich doch auch was schreiben Find die Antworten einfach super klasse Also meine Vorschläge: 1. Wenn Du den Fernseher nicht willst dann verkauf ihn halt bei eBay oder so. 2. Anscheinend hast Du kein Geld, oder kannst nicht ran. Dann geh arbeiten. also ich mein bezahlte Ferienarbeit, Zeitung austragen etc. Meinst Du nicht das deine Eltern etwas komisch vorkommt wenn Du Geld für ein neues Gerät willst, die dir sagen nur wenn das alte kaputt ist und plötzlich ist dann dein Fernseher kaputt ?? Also mich als Elternteil käme das sehr verdächtig vor. Das mit den geladenen Netzteilen war mir auch nicht bewusst, gut das ich noch nie einen Fernseher oder ähnliches aufgeschraubt habe <Nachtrag> den PC mal ausgenommen </Nachtrag>
  20. Guten Abend, habe mir jetzt den ganzen Nachmittag bis jetzt das Programm angesehen und habe zur Vereinfachung ein neues geschrieben mit den wesentlichen Verbesserungen. Die neue Version befindet sich im Anhang. Nachdem die Syntaxfehler behoben waren, die man automatisch macht wenn man den Code nur im "Windows Editor" schreibt bekam ich noch echte "Probleme". Ich erhielt ständig Zugriffsverletzungen im Speicher. Ich kam nicht dahinter wie/wo diese entstehen bzw. es mir unerklärlich war, habe ich kurzerhand einfach Version 2.0 erstellt. Selbstverständlich mit den entsprechenden Verbesserungen und sogar ein wenig den Stil beachtet Es kam dann zu folgenden Problemen: Das Programm ist immer abgestürzt als es den FreeAndNil-Befehl durchführte. Deswegen habe ich diesen dann entfernt , hörte sich von der Definition nach nicht schlecht an. Wobei ich sowieso nicht sicher bin ob es FreeOnTerminate := True und FreeAndNil() gemeinsam bringen. Vielleicht weiß jemand (*schiel zu JesterDay*) mehr Das nächste war von der Grundfunktion her: Bei meiner Version konnte man nachdem man 12 Threads gestartet hatte und diese fertig waren, erneut 12 Threads starten. Dies ging in der neuen Version nicht mehr da hier das Array dynamisch erweitert wurde mit SetLength(). Es war z.B. möglich wenn 12 Threads liefen und einer davon fertig war, man sofort wieder einen "nachstarten" konnte, weil ja wieder ein Platz frei wurde von den maximal 12 . Da war meine Version dann doch einfacher umzusetzen mit for.to.do -> Hab aber trotzdem Teile übernommen, jetzt muss man nur eine Konstante ändern um das Array zu vergrößern/verkleinern. (Böse Falle ist weg ) Sonst hat bei Version 2.0 alles gepasst Ich wusste z.B. das Variablen in der OnTerminate-Prozedur nicht mehr verfügbar sind, weswegen ich dies umständlich gelöst habe. Durch den modifizierten Code habe ich festgestellt das das nicht für "Properties" gilt. Somit konnte ich den Event OnTerminate des Threads verwenden. Ich hab diesmal sogar Kommentare hinterlassen Sind zwar noch nicht so gut wie die von JesterDay aber die Übung macht den Meister Vielen Dank JesterDay. :uli MultiThread2.0.zip
  21. Hallo JesterDay, werde mir deine Verbesserungen ansehen. Danke.
  22. Hallo zusammen, ich konnte mich leider nicht eher melden, dafür hab ich aber was mitgebracht :cool: Ich denke das Problem mit den verschollenen Threads habe ich behoben. Habe mir hierzu ein kleines Programm geschrieben, um die Thread-Thematik ohne großes "Drumherum" zu analysieren. Da ich das Programm geschrieben habe, wird auch mein "unschöner" Code verwendet. Damit ich aber auch hier etwas dazulernen kann, bitte ich euch das Ihr über mein Programm schaut und mir dann mitteilt wie man das "schöner" lösen könnte. Schon einmal vielen Dank vorab. Ich bitte um Verständnis das ich zum Thema Programmierstil in diesem Fall kein neues Thema eröffne, da es sonst aus dem Zusammenhang gerissen werden wird. MultiThread.zip
  23. Hallo JesterDay, erstmal danke für eine ausführlichen Antworten.
  24. Ok, das habe ich wie vorgeschlagen korrigiert. Hierzu habe ich keine Einwände weil es einfach so stimmt Soweit habe ich mir noch keine Gedanken gemacht ob ich die Unit wirklich in anderen Projekten verwenden möchte. Ich arbeitet zurzeit an der fünften Version des Programms. Die Threads sind in dieser Version neu weil ich so mehrere Aufgaben gleichzeitig verarbeiten kann ohne auf "Wartezeiten" andere Faktoren Rücksicht nehmen zu müssen. Wenn ich das mit OnTerminate erledige, was durchaus auch in Ordnung wäre habe ich keine Möglichkeit mehr im Hauptformular das Ereignis zu visualisieren. Bisher konnte ich genau herausfinden welcher Thread fertig war und welcher noch nicht. Hierzu ist eben der Griff über "Form1" nötig. Signatur : OnTerminate(Sender: TObject) Ich dachte immer das alles nach end des finally auch durchlaufen wird. Werde diese Fehlerquelle korrigieren. Werde nochmal einen Langzeittest durchführen um zu sehen ob das Programm immer noch Threads verliert oder ob es sich gebessert hat. Danke für bereits geleistet Unterstützung.
  25. Hallo liebe Community, ich habe ein Problem bei der Thread-Programmierung. Ich starte mehrere Threads, viele dieser gestarteten Threads melden sich ordnungsgemäß ab (über Synchronize). Doch es gibt einige schwarze Schafe welche diese "Bin-Fertig"-Routine nicht durchlaufen, obwohl es keinen Umweg gibt. Den Thread starte ich so: (* viel Code vorher *) (* Neuen Thread erzeugen und in Array merken*) AktivThreads[idxAktivThread] := TDownload.Create( (* Erster Parameter : Speicherort *) linkSaveName, (* Zweiter Parameter : Quelle *) link, (* Dritter Parameter : Zusätzlich Identifikations# da ThreadID doppelt vorkommt *) threadUID, (* Vierter Parameter : Create Suspended *) True ); (* viel Code nachher *) [/PHP] Der Thread selber sieht so aus: [PHP] unit Download; interface uses Classes, UrlMon; type TDownload = class(TThread) public constructor Create(pSpeichort: String; pLink: String; pUniqueID: String; CreateSuspended : BOOLEAN = TRUE); private protected procedure Execute; override; (* Synchronisierter Zugriff auf Hauptthread *) procedure AusListeEntfernen; var Speicherort: String; SourceFile: String; UniqueID: String; end; implementation (* Code ist das Hautpprogramm *) uses Code; (* Überladene Create-Funktion zur Variablen Übergabe *) constructor TDownload.Create(pSpeichort: String; pLink: String; pUniqueID: String; CreateSuspended : BOOLEAN = TRUE); begin Inherited Create(CreateSuspended); Speicherort := pSpeichort; SourceFile := pLink; UniqueID := pUniqueID; end; procedure TDownload.AusListeEntfernen(); begin Form1.ThreadEntferneAusListe(Self.ThreadID, UniqueID); end; procedure TDownload.Execute; begin try UrlDownloadToFile(nil, PChar(SourceFile), PChar(Speicherort), 0,nil); finally (* keine Aktion nötig, soll nur nicht abstürzen bei Fehler *) end; Synchronize(AusListeEntfernen); end; end. so und jetzt noch die Synchronisierte Funktion im Haupt-Thread: procedure TForm1.ThreadEntferneAusListe(ID: Cardinal; UID: String); var index : byte; ThreadFound : Boolean; begin ThreadFound := False; (* Array Durchlaufen und entsprechenden Thread finden *) for index := 1 to maxDownloadThreads do begin if (AktivThreads[index].ThreadID = ID) and (UniqueIDs[index] = UID) then begin AktivThreads[index] := nil; Protokoll.Lines.Add('Thread #' + IntToStr(index) + ' mit ID ' + IntToStr(ID) + ' beendet.'); (* weiterer kurzer Code um Ereignis sichtbar zu machen *) ThreadFound := True; end; end; if not ThreadFound then begin Protokoll.Lines.Add('**SPEICHERLECK** Thread' + ' mit ID ' + IntToStr(ID) + ' nicht gefunden!'); Sleep(500); end; end; [/PHP] Die Meldung mit dem Speicherleck hatte ich noch nie! Das heißt eigentlich das alles Threads immer Ordnungsgemäß funktionieren müssten, leider "verliert" das Programm Threads. Sie melden sich einfach nicht ab, obwohl er fertig sein müsste. Ich weiß nicht wie das Problem entsteht, vllt. habe ich einen Denkfehler oder etwas falsch implementiert. Ich hoffe Ihr könnt mir einen Tipp geben an welcher Stelle ich etwas besser machen kann/sollte/muss . Danke vorab!

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...