Gibt es eine Möglichkeit, im Zwischenspeicher (Clipboard) immer wieder denselben Bereich zum Zwischenspeichern zu benützen, sodaß da - zB im Falle eines Crashes - von einem anderen Programm darauf zugegriffen werden kann?
Ich habe nämlich ein Programm, bei dem ich Byte für Byte aus einer Datei einlese und diese bearbeite. Da das Programm immer wieder abstürzte, mußte ich mir eine Log-datei einrichten, in die ich für jedes eingelesene Byte die relevanten Parameter hineinschrieb. Um immer aktuell zu bleiben, mußte ich die dazu natürlich jedesmal neu öffnen, den Text anhängen und die Datei wieder schließen. Das verschlingt viel Zeit, v.a. bei größeren Eingabedateien.
Praktischer wäre, ich könnte den Text in einen Puffer im Zwischenspeicher schreiben (den ich, sobald er voll ist, in die Logdatei schreibe), auf den auch "von außen" (d.h. von einem externen Programm) zugegriffen werden kann, sodaß bei einem evtl. Absturz die Daten im Puffer nicht verloren gehen. Aber dazu müsste ich wissen, welcher Speicherbereich für diesen Puffer verwendet wird und dies dem externen Programm mitteilen bzw. in die Logdatei zum Beginn hineinschreiben. Kann man das herausbekommen?
Herzlichen Dank für alle Hinweise!
immer gleichen Zwischenspeicher benutzen?
Re: immer gleichen Zwischenspeicher benutzen?
Ich würde da ansetzen und das Prog. absturzsicher machen.br_klaus hat geschrieben:Da das Programm immer wieder abstürzte,
Clipboard funtkioniert nicht so, jedenfalls nicht unter Linux.
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Re: immer gleichen Zwischenspeicher benutzen?
Ich habe Windows. Die Logausgabe habe ich ja gebraucht, um den Grund des Absturzes heauszubringen (und inzwischen auch gefunden: eine Variable ohne feste Zuweisung).theo hat geschrieben:Ich würde da ansetzen und das Prog. absturzsicher machen.br_klaus hat geschrieben:Da das Programm immer wieder abstürzte,
Clipboard funtkioniert nicht so, jedenfalls nicht unter Linux.
Aber für künftige Versuche wäre es halt schon praktisch, wenn der Zwischenspeicher auch von anderen Programmen genutzt werden könnte.
Aber ob das (unter Windows, Win32) überhaupt möglich ist?
Re: immer gleichen Zwischenspeicher benutzen?
Ich würde etwas in dieser Richtung nehmen:
https://github.com/alrieckert/lazarus/t ... ebugserver
Ist auch im Lazarus "tools" Verzeichnis zu finden.
https://github.com/alrieckert/lazarus/t ... ebugserver
Ist auch im Lazarus "tools" Verzeichnis zu finden.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: immer gleichen Zwischenspeicher benutzen?
Die Zwischenablage hält immer nur einen Eintrag, der kann zwar in verschiedenen Formaten darin liegen aber es ist immer einer. Wie kommst du drauf das das nicht so funktioniert wie du willst ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Re: immer gleichen Zwischenspeicher benutzen?
Herzlichen Dank für den Hinweis. Inzischen habe ich schon Versuche mit der Zwischenablage gemacht. Komme aber zu dem Ergebnis, daß das dreimal so lange dauert, wie wenn man die einzelnen Strings jewaeils in einer Datei anhängt (und die dann gleich wieder schließt). Das scheint wohl sehr zeitaufwendig zu sein, Text aus der Zwischenablage lesen, neuen Text hinzufügen, wieder zwischenspeichern. Auch besteht die Gefahr, daß die Zwischenablage beim nächsten Start des Programms schon wieder überschrieben wurde.Christian hat geschrieben:Die Zwischenablage hält immer nur einen Eintrag, der kann zwar in verschiedenen Formaten darin liegen aber es ist immer einer. Wie kommst du drauf das das nicht so funktioniert wie du willst ?
Re: immer gleichen Zwischenspeicher benutzen?
Ich selber nutze für soetwas (Überwachung des eigenen Programms) immer TSimpleIPC (soweit ich das gelesen habe nutzt das auch der DebugServer - Theos Link). Das hat den Vorteil, dass man, z.B. beim Abbruch einer Standalone-Anwendung, sehen kann, wo der Abbruch/die Exception aufgetreten ist, da der TSimpleIPC-Server in einem externen Programm steckt, was noch weiter läuft. Gut ist auch, dass man so recht einfach auch Threads überwachen kann.
Ich hatte auch hier mal die Basis-/Rohversion mein Status-Prog. gepostet - aber nicht zu viel erwarten - ist nur als Anregung zu verstehen
Ich hatte auch hier mal die Basis-/Rohversion mein Status-Prog. gepostet - aber nicht zu viel erwarten - ist nur als Anregung zu verstehen

Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;