Zum Inhalt springen

Maulwurf_der_Schlaue

Mitglieder
  • Gesamte Inhalte

    801
  • Benutzer seit

  • Letzter Besuch

Beiträge von Maulwurf_der_Schlaue

  1. Hallo,

    kurze suche bei Tante Google nach "Add-Ons verwalten deaktiviert" hat folgendes gefunden:

    Wie kann ich Add-Ons verwalten, wenn die Menüoption abgeblendet ist?

    Die Option Add-Ons verwalten im Menü Extras ist deaktiviert, wenn Internet Explorer im Modus ohne Add-Ons ausgeführt wird. Sie können weiterhin Add-Ons verwalten, Sie müssen dazu aber Internetoptionen in der Systemsteuerung verwenden. Und so geht's:

    1. Öffnen Sie die Internetoptionen, indem Sie auf die Schaltfläche Start klicken, auf Systemsteuerung klicken, auf Netzwerk und Internet klicken und dann auf Internetoptionen klicken.

    2. Klicken Sie auf die Registerkarte Programme, und klicken Sie dann auf Add-Ons verwalten.

    Hinweis

    Die vorgenommenen Änderungen werden erst wirksam, wenn Sie Internet Explorer normal neu starten (wenn Sie nicht den Modus ohne Add-Ons verwenden).

    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,

    [...]

    @echo off
    
    [...]
    
    for /f "tokens=1,2 delims=." %i in (%delfile%) do @echo %j %i / %i.%j
    
    [...]
    
    

    Du weißt schon was der Befehl da macht?

    [...]

    Kann ich eigentlich im for-Befehl annstat ' auch " setzen, oder gibs da ne regelung ?

    Kommt darauf an, für Dateinamen gibt es in der Hilfe folgenden Text zu finden:

    [...] Dateinamen, die Leerzeichen enthalten, müssen Sie innerhalb doppelter Anführungszeichen angeben. Dazu müssen Sie die Option "usebackq" verwenden. Andernfalls werden doppelte Anführungszeichen zur Definition eines auszuwertenden Literals verwendet. [...]

  6. Hallo,

    [...] Wenn ich jetzt das ,,Full Screen Logo'' ausschalte, kommt der erste Bildschirm gar nicht mehr [...]

    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,

    [...] Da für jeden Film (für jeden User) eine neue Datei zu speichern, würde wohl schnell in Chaos ausarten. [...]

    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 :D, aber egal.

  8. Hallo,

    [...] IF NOT '%%a' == %skipfile% [...]

    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 /?

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

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

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

    Also die Delphi Hilfe hilft dir bestimmt so gut wie ich. Da hab ich auch

    viel gelernt.

    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.

  12. 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----[+]

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

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

  15. 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 :D

    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 :P

    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 :D )

    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

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

  17. Hmmm, threads in Delphi sind schon eine Weile her... ich versuch es mal.

    Erstmal, was mit gleich aufgefallen ist:

    ... * code aus Platzgründen entfernt * ...

    var im protected?

    Willst du deine Threads weitervererben? Oder die Variablen irgendwem sonst zugänglich machen? Denke doch nicht.

    Also solltest du die ganz normal als Felder im Private des threads deklarieren:

    Ok, das habe ich wie vorgeschlagen korrigiert. Hierzu habe ich keine Einwände weil es einfach so stimmt :)

    ... * code aus Platzgründen entfernt * ...

    Und ohne var davor.

    Weiter die Einbindung von Form1. :eek

    Ich hab jetzt keine Delphi-Hilfe mehr da oder sonst was, aber sowas ist ein abolutes NoGo.

    Zum einen beziehst du dich direkt auf den Formnamen (wobei form1 auch nicht form1 heißen sollte, aber egal ;) ). Wenn du den mal änderst? Oder wenn du die Threads in einem anderen Programm verwenden willst? Wenn du ein zweites Formulas hinzufügst, was dann den Threadaufruf startet?

    Der Sinn der modularen Programmierung ist ja, dass die Module (die einzelnen Units) recht frei verwendet werden können, auch in anderen Programmen. Genau das verhinderst du ja hier, weil du alles von deinem Hauptformular abhängig machst.

    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.

    Also:

    Die Prozedur AusListeEntfernen entfernen. Das uses Code entfernen.

    In der Objektorientierung gibt es etwas wunderbares, nämlich die Events. Ein TThread bietet auch ein paar Events, unter anderem das OnTerminate-Event.

    Das wird genau dann abgefeuert, wenn der Thread sich beendet.

    Das solltest du dann auch nutzen.

    Ich kenn die genaue Signatur des Events nicht mehr, aber die Hilfe sagt dir da ne Menge. (Hab ich schonmal gesagt, dass ich die Delphi Hilfe liebe? Ich hab noch keine Hilfe gesehen, die so ausführlich und gut ist wie die von Delphi. Weder Visual Studio, MSDN, noch Java oder ähnliches haben auch nur annähernd so eine gute Hilfe wie Delphi!)

    Falls du das noch nie gemacht hast hier eine kleine Erklärung:

    Einem Event kannst du eine Prozedur zuweisen, die dann ausgeführt wird, wenn das Event aufgerufen wird. Die Prozedur kann irgendeine sein, sie muss nur dieselben Parameter haben wie die geforderten. du kennst es vielleicht, wenn du einen Doppelklick auf einen TButton machst in Delphi. Dann legt Delphi eine ButtonClick Prozedur an und weißt die auch gleich dem Event zu. Das machst du hier auch, nur händig.

    ... * code aus Platzgründen entfernt * ...

    Somit wird deine Prozedur aufgerufen, sobald der Thread sich beendet.

    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)

    Was das Problem bei deinem Code sein kann:

    ... * code aus Platzgründen entfernt * ...

    Wenn UrlDownload einen Fehler Produziert, wird AusListeEntfernen nicht aufgerufen! Das solltest du in finally schreiben, dass das also auf jeden Fall aufgerufen wird. Und um einen Fehler abzufangen musst du eh Try Except benutzen ;)

    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.

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