AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei exklusiv öffnen

Ein Thema von Avax2k · begonnen am 19. Jan 2006 · letzter Beitrag vom 22. Jan 2006
Antwort Antwort
Seite 2 von 4     12 34      
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#11

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 21:03
klappt leider auch nicht
Delphi-Quellcode:
FreeAndNil(fs);
ShellExecute(0, 'OPEN', PChar(FILE_NAME),nil,nil,0);
fs:=TFileStream.Create(FILE_NAME, fmOpenRead);
geht leider auch nicht
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 21:28
Schreib' mal, was genau nicht klappt..

Grüße, Messie
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#13

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 21:30
da kommt eben die meldung, dass die datei durch einen anderen prozess genutzt wird und nicht geöffnet werden kann


wenn ich

fs.create()

weglasse geht es das ist aber klar
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 21:45
das was du vor hast geht einfach nicht. Denn sobald die Datei gestartet ist, ist sie in Verwendung und somit kannst du nicht mehr die Datei sperren weil Sie von einem anderen Process teilweise gesperrt ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#15

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 21:53
das habe ich befürchtet...kann ich denn überhaupt die Datei sperren, wenn sie von einem bestimmten Programm geöffnet wird..sie zum Beispiel wordpad..solange eben wordpad auf die Datei zugreift kann man nicht separat zugreifen.
Das würde mir auch sehr weiterhelfen.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#16

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 21:57
Zitat von Avax2k:
da kommt eben die meldung, dass die datei durch einen anderen prozess genutzt wird und nicht geöffnet werden kann

wenn ich

fs.create()

weglasse geht es das ist aber klar
Bau' mal Deinen Aufruf so um:
Delphi-Quellcode:
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 des Aufrufs und gibt das Handle der aufgerufenen Datei zurück...
  //...habe ich wenig Erfahrung mit, schau Dir mal Beispiele an
end;
application.processmessages;
fs := TFilestream.create(...);
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#17

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 22:15
das geht auch nicht..ist auch logisch, denn egal was als Ergebnis ist, sobald das Programm versucht die Datei zu starten ist der Prozess auf Öffnen und zeitgleich wird der Zugriff gesperrt..ist wohl wie dein Vorredner sagte..unmöglich umzusetzen


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
freeandnil(fs);
ShellExecute(Application.Handle, 'OPEN', PChar(FILE_NAME),nil,nil,fmShareExclusive);
//Application.Run;
fs:=TFileStream.Create(FILE_NAME, fmShareExclusive);
komischerweise geht das ganze, wenn ich Application.Run mache...jedoch werden die Rechte dann nicht wie es sollte zugrückgesetzt und die Datei ist frei kopierbar.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#18

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 22:34
Zitat von Avax2k:
das geht auch nicht..ist auch logisch, denn egal was als Ergebnis ist, sobald das Programm versucht die Datei zu starten ist der Prozess auf Öffnen und zeitgleich wird der Zugriff gesperrt..ist wohl wie dein Vorredner sagte..unmöglich umzusetzen
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 kann man ein sleep(100 oder so) nachschalten. Hinterher greifst Du dir die Datei wieder und sperrst sie.
Also wenn ich Deine Aufgabe richtig verstanden habe, sollte es grundsätzlich gehen.

Grüße, Messie
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#19

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 22:41
im Grundegenommen ist das schon richtig nur kann ich sie nicht sperren, weil sie ja dann von meinem Programm benutzt wird..

somit gilt leider..Sperrung möglich wenn mein Programm an der Datei nichts macht..wenn ich diese Öffnen will muss die solange ohne zugriffsicherung bleiben, bis ich sie nicht mehr brauche..und das bringt mir ergo nichts .
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 22:50
Moin Zusammen,

Zitat von messie:
//Shellexecute wartet auf die Beendigung des Aufrufs und gibt das Handle der aufgerufenen Datei zurück...
das stimmt nicht.
ShellExecute gibt einen Rückgabewert von > 32 wenn der Aufruf erfolgreich war, oder einen Wert <= 32 wenn ein Fehler aufgetreten ist.

(MSDN-Library durchsuchenShellExecute)

Die bei Delphi mitgelieferten Teile des SDK sind nicht gerade aktuell, besser wäre es, nach Möglichkeit, das aktuelle PSDK bei MS herunterzuladen (nach Möglichkeit, da ca. 350MB, bei vollem Download)

@Avax2k:
Das Problem wirst Du wohl nur lösen können, wenn Du die Datei selber verarbeitest.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz