Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datei öffnen ... (https://www.delphipraxis.net/10685-datei-oeffnen.html)

sharkx 23. Okt 2003 12:34


Datei öffnen ...
 
Hallo,

ich möchte eine, die bereits von einem anderen Programm genutzt wird, simple Text Datei öffnen.
Aus dieser Textdatei suche ich nach bestimmten Strings mit Pos(). Diese wiederum trage ich dann in eine ListView ein. Gelöst habe ich das ganze zur Zeit mit

Code:
var
 list : TStrings;
begin
 list.LoadFromFile(path);
 .....
Dieses jedoch lässt mich die Datei nicht öffnen, wenn sie von einem anderen Programm zur Zeit genutzt wird. Das ist aber leider bei der file die ich öffnen mag immer der Fall. Um genau zu sein, das ist eine Log Datei von mirc, die auch ständig offen ist, jedoch muss ich sie auch in meinem Programm öffnen können.

thanks für die hilfe :-)

Christian Seehase 23. Okt 2003 12:43

Re: Datei öffnen ...
 
Moin Sharkx,

zum einen:
Nimm mal statt TStrings lieber TStringList.
TStrings ist eine abstrakte Klasse, die man nur als Basisklasse für andere verwenden, und keine Instanzen davon bilden sollte.

Wenn die Datei von dem Programm mit exklusiven Zugriff geöffnet wurde, wirst Du wohl Pech haben.
Hast Du mal versucht, die Datei zu kopieren (SHFileOperationSHFileOperation), während sie geöffnet war? (ich geh' mal davon aus, dass das auch nicht funktioniert, aber den versuch wäre es Wert).

sharkx 23. Okt 2003 13:03

Re: Datei öffnen ...
 
Die Datei muss sich aber auch so irgendwie öffnen lassen, jedenfalls kann es so ziemlich jeder text editor ja auch ( Ultraedit, Cooledit etc. )

Tom 23. Okt 2003 13:06

Re: Datei öffnen ...
 
Gesperrt ist gesperrt. Da hilft auch kein guter Editor. Die von Christian vorgeschlagene Kopie sollte funktionieren. Ggf. mal im Explorer testen, ob sich die Datei trotz Sperrung kopieren läßt.

sharkx 23. Okt 2003 13:11

Re: Datei öffnen ...
 
Wie gesagt, ich kann die datei mit jeglichem Editor auf meinem Sys auch dann öffnen, wenn sie ein anderes programm benutzt. So muss es auch ne lösung geben ;P

mirage228 23. Okt 2003 13:12

Re: Datei öffnen ...
 
Versuchs mal mit nem TFileStream und den Optionen fmOpenRead or fmShareDenyNone beim Erstellen der Stream Instanz.

Mfg
mirage228

Tom 23. Okt 2003 13:14

Re: Datei öffnen ...
 
Zitat:

Zitat von sharkx
So muss es auch ne lösung geben ;P

Wie sieht denn Dein bisheriger Versuch aus? Der Source aus dem 1. Beitrag kann es ja nicht sein ...

sharkx 29. Okt 2003 12:12

Re: Datei öffnen ...
 
So .. da dieses Problem noch immer besteht, schieb ich mal den tread hier etwas nach oben.

Wir hatten auch schon hier drüber disktutiert - brachte aber auch keine wirkliche lösung.

Aber ne nette Idee habe ich dazu - mag vllt einfacher sein.

Da ich auf einen bestimmten Satz im mIRC reagieren möchte, habe ich das im Moment mit dem auslesen der Log (aktuell beschriebene log lässt sich nicht öffnen) gelöst.
Nun kann ich aber doch auch, den aktuell gewollten Satz von mIRc aus gleich als Parameter an mein programm übergeben. Jedoch wird der Parameter etwa alle 10 sec. an das Programm gesendet, nun mag ich ja auch nicht das sich das programm dann alle 10 sec. neu öffnet.

Mag es nun die bessere Lösung sein die mIRC Log zu parsen, oder den Parameter von mIRC gleich zu übergeben? Und wie stell ich das am besten an, das sich mein Programm dann nicht immer wieder öffnet. Ich möcht gleich dazu sagen, mit Parameterübergabe oder DLL habe ich noch nie was gemacht :/

Christian Seehase 29. Okt 2003 12:36

Re: Datei öffnen ...
 
Moin Sharkx,

Dein Programm muss sich auch nicht alle 10 sek. neu öffnen.

Ich hatte in diesem Thread
Mit Mehreren Datein ein Program Starten
mal ein Demoprogramm gepostest, wie man neue Parameter an die gleiche laufende Instanz eines Programmes übergibt.
Lass Dich nicht davon stören, dass es hier um Dateien ging, da diese ja auch nur als Pfade übergeben werden geht's nur um die Parameter. Welche Bedeutung sie für das Programm haben ist eine andere Sache.

Aber nur um das noch einmal genau zu verstehen:
Während mIRC auf die Datei zugreift, kannst Du mit einem Editor auch auf die Datei zugreifen?

Dann könntest Du noch einmal zwei Dinge versuchen:
  1. Kannst Du die Datei mit TFileStream.Create(...,fmOpenRead) öffnen?
  2. Sollte 1. fehlschlagen: Kannst Du die Datei mit CreateFile öffnen, wenn Du für den Parameter dwDesiredAccess FILE_READ_DATA, und für dwShareMode FILE_SHARE_READ angibst?
    Unter NT/2000/XP könnte beim Parameter dwFlagsAndAttributes noch FILE_FLAG_BACKUP_SEMANTICS hinzugefügt werden.

@Mirage:
Zitat:

Zitat von mirage228
Versuchs mal mit nem TFileStream und den Optionen fmOpenRead or fmShareDenyNone beim Erstellen der Stream Instanz.

Das wird nichts helfen können, da das genau die Angaben sind, mit denen LoadFromFile arbeitet, was ja nicht funktioniert.

sharkx 29. Okt 2003 12:46

Re: Datei öffnen ...
 
Hallo Christian,

Wenn mIRC läuft kann ich ohne weiteres mit UltraEdit auf die datei zugreifen.

Mit TFileStream.Create(file, fmOpenRead) kann ich die Datei auch nicht öffnen, kommt der gleiche Fehler.

Vorschlag Nr2. kann ich von hier aus nun nicht testen, werde ich aber sobald ich nach hause komme.

Das beispiel von dir werd ich mir auch ansehen, mag vieleicht doch die bessere Lösung sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 Uhr.
Seite 1 von 2  1 2      

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