Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
22. Jan 2006
Hallo,
ist vielleicht etwas Offtopic, trotzdem hier die Frage: welche Speicherorte läßt XP (von Vista nicht zu sprechen) überhaupt zu?
Ich habe vor kurzem versucht eine kleine Anwendung als Installation auf internationalen Systemen mit Gast-Rechten zur Verfügung zu stellen - es blieb wie zu alten DOS-Zeiten nur die Möglichkeit, auf C: ein Verzeichnis anzulegen. Direkt auf C:\ gespeicherte...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
20. Jan 2006
Dann willst Du sie während der Programmausführung also im Windows-Editor-Fenster öffnen... was wenn Du auf Shellexecute verzichtest und dir selber einen Editor baust (gibts bestimmt auch fertig), kannst Du die Datei bei Start besetzen und zum Ende freigeben und dann löschen.
Grüße, Messie
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
19. Jan 2006
Nö, muß meiner Meinung nach nicht sein.
Du möchtest ja "irgendeine" Datei (also eine vom Programm unabhängige Datei) für den Zugriff sperren. Das geht, wissen wir ja.
Du möchtest diese "irgendeine" Datei aber auch mit Shellexecute ausführen, also mußt Du sie für diesen Zugriff freigeben. Das geht auch, vielleicht reicht processmessages nicht aus (könnte an Cache etc. liegen). In Zweifelsfall...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
19. Jan 2006
Bau' mal Deinen Aufruf so um:
fs := TFilestream.create(...); //bei FormCreate
//in Deiner Routine wo Du die externe Datei aufrufst:
freeandnil(fs);
application.processmessages;//das können auch viel mehr als ein paar hundert Prozessorschritte sein...
if ShellExecute(Application.Handle,'Open',PChar(filename),nil,nil,SW_ShowNormal)> 0 then
begin
//Shellexecute wartet auf die Beendigung...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
19. Jan 2006
Schreib' mal, was genau nicht klappt..
Grüße, Messie
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
19. Jan 2006
Habe ich das richtig verstanden:
Du möchtest die Datei von Beginn bis Ende Deiner Programmlaufzeit für andere Prozesse sperren, sie aber während Deiner Programmausführung per Shellexecute starten können?
Dann kannst Du direkt vor Shellexecute freeandnil(FS) benutzen, und danach wieder FS.create(...). Damit bleibt für andere Prozesse nur ein Zeitfenster von einigen hundert Prozessorschritten...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by messie,
19. Jan 2006
Du hast mit Deinem Code zwei unabhängige Zugriffe gebaut: zuerst den exclusiven Zugriff per Filestream (damit gehört die Datei exclusiv Deinem TFilestream) und dann einen Zugriff auf Betriebssystemebene (der wird dann natürlich geblockt).
Gib' zuerst Deinem Filestream einen Namen:
Fs := TFilestream.create(...)
FS.Read(var Buffer; Count: Longint): Longint;//das schaust Du in der Hilfe nach
...