immer gleichen Zwischenspeicher benutzen?

Für Fragen rund um die Ide und zum Debugger
Antworten
br_klaus
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)

immer gleichen Zwischenspeicher benutzen?

Beitrag von br_klaus »

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!

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: immer gleichen Zwischenspeicher benutzen?

Beitrag von theo »

br_klaus hat geschrieben:Da das Programm immer wieder abstürzte,
Ich würde da ansetzen und das Prog. absturzsicher machen.
Clipboard funtkioniert nicht so, jedenfalls nicht unter Linux.

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

Beitrag von br_klaus »

theo hat geschrieben:
br_klaus hat geschrieben:Da das Programm immer wieder abstürzte,
Ich würde da ansetzen und das Prog. absturzsicher machen.
Clipboard funtkioniert nicht so, jedenfalls nicht unter Linux.
Ich habe Windows. Die Logausgabe habe ich ja gebraucht, um den Grund des Absturzes heauszubringen (und inzwischen auch gefunden: eine Variable ohne feste Zuweisung).
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?

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: immer gleichen Zwischenspeicher benutzen?

Beitrag von theo »

Ich würde etwas in dieser Richtung nehmen:
https://github.com/alrieckert/lazarus/t ... ebugserver
Ist auch im Lazarus "tools" Verzeichnis zu finden.

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

Beitrag von Christian »

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/

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

Beitrag von br_klaus »

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

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: immer gleichen Zwischenspeicher benutzen?

Beitrag von Michl »

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

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten