Forum: Programmieren allgemein
by Blup,
21. Mär 2014
Die richtige Konstante ist hier 'Max_Path' und nicht 'MaxChar'.
Der Buffer 'path' wird nicht gelöscht und das Ergebnis von 'SHGetFolderPath' nicht ausgewertet.
In dieser Kombination kann StrPas einen riesigen String voller Speichermüll zurückgeben oder sogar eine Zugriffsverletzung auslösen.
Man könnte das z.B. so lösen:
function AppDataPath: AnsiString;
const
SHGFP_TYPE_CURRENT = 0;...
Forum: Programmieren allgemein
by Blup,
19. Mär 2014
Der Überwachungs-Thread fügt neue Elemente dem Array Events hinzu. ("schön sychronisiert" sollte bedeuten, er tut das innerhalb einer Criticalsection.)
Der Mail-Thread liest die Elemente aus Events und löscht diese sogar. ("schön sychronisiert" sollte bedeuten, er tut das ebenfalls innerhalb der selben Criticalsection.)
Ich habe keine einzige Zeile in dieser Hinsicht gesehen.
Hoffentlich...
Forum: Programmieren allgemein
by Blup,
18. Mär 2014
Die 'Log()'- Aufrufe erzeugen einen zeitlichen Abstand zwischen den 'SendMail()'-Aufrufen.
In deinem Beispiel 4 Sekunden sind eine kleine Ewigkeit.
In welchem Zusammenhang stehen die Jobs, Events und die Threads?
Wenn z.B. die Threads parallel neue Events der Liste hinzufügen und im Hauptthread Events ausgelesen und entfernt werden, ist eine saubere Synchronisation notwendig.