AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Datei wird von einem anderen Prozess benutzt-trotzdem lesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Datei wird von einem anderen Prozess benutzt-trotzdem lesen?

Ein Thema von stefangeorg · begonnen am 21. Jan 2005 · letzter Beitrag vom 21. Jan 2005
Antwort Antwort
stefangeorg
(Gast)

n/a Beiträge
 
#1

Datei wird von einem anderen Prozess benutzt-trotzdem lesen?

  Alt 21. Jan 2005, 11:51
Servus,

ich möchte eine Log-Datei, die ständig von einem
anderen Programm aktualisiert wird mit Delphi
auswerten und in einem kleinen Status-Fenster
Informationen anzeigen lassen.

In der Theorie klappt auch alles, nur ich habe per
slLog.LoadFromFile keinen Zugriff auf die gewünschte
Datei.

Ich bekomme immer die Fehlermeldung
"Cannot Open File, Prozess kann nicht auf die Datei
zugreifen weil sie von einem anderen Prozess verwendet wird"


Kann ich diese Sperre umgehen und die Log-Datei trotzdem
mit anderen Methoden auslesen?

mfg

Georg Härting
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 11:59
Versuche mal folgendes:
Delphi-Quellcode:
procedure LoadIntoStrings(aFileName: String; aStrings: TStrings);
var
  FS: TFileStream;
begin
  FS := TFileStream.Create(aFileName, fmOpenRead or fmShareDenyNone);
  try
    aStrings.LoadFromStream(FS);
  finally
    FS.Free;
  end;
end;
Der Unterschied zur Delphi-Variante ist, dass auf die Datei kein Schreibverbot gelegt wird, das kann unter Umständen allerdings zu einer unvollständigen Log-Information führen, ist also Abwägungssache. Wenn das nicht geht, dann hast Du aber auch keine reele Chance

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 12:16
Delphi-Quellcode:
procedure LoadIntoStrings(aFileName: String; var aStrings: TStrings);
var
  FS: TFileStream;
begin
  FS := TFileStream.Create(aFileName, fmOpenRead or fmShareDenyNone);
  try
    aStrings.LoadFromStream(FS);
  finally
    FS.Free;
  end;
end;
Du hast das var vergessen! Ohne des wird nämlich nichts mehr zurückgeben

Delphi-Quellcode:
function LoadIntoStrings(aFileName: String) : TStrings;
var
  FS: TFileStream;
begin
  FS := TFileStream.Create(aFileName, fmOpenRead or fmShareDenyNone);
  try
    result.LoadFromStream(FS);
  finally
    FS.Free;
  end;
end;
So müsste es doch auch gehen?
Weil dann könnte man gleich so schreiben:
slog.lines := LoadIntoStrings('C:\Path\log.log');

//edit hab nur auf Delphi Tags geändert
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 12:22
Zitat von gsh:
Du hast das var vergessen! Ohne des wird nämlich nichts mehr zurückgeben
Falsch, aStrings ist ein Objekt, welches man ändern kann. Var ist nicht nötig, teste es.

Zitat von gsh:
So müsste es doch auch gehen?
Weil dann könnte man gleich so schreiben:
Nein, Du hast vergessen Deine Strings zu erstellen.

Ich muss Dich enttäuschen, aber in diesem Falle ist meine Variante die sauberere, da der Ersteller sich um die Erstellung und Zerstörung der StringListe kümmern musst. In Deinem Beispiel würde Deine Funktion die Liste erstellen und der aufrufende Code muss sich um die Freigabe kümmern - eine der Hauptquellen für Fehler von Speicherlecks. Ansonsten ist die Lösung natürlich machbar.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#5

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 12:24
Zitat von gsh:
Weil dann könnte man gleich so schreiben:
slog.lines := LoadIntoStrings('C:\Path\log.log');
Da fällt mir auf, diese Zeile wäre auch inkorrekt, wenn dann: slog := LoadIntoStrings('C:\Path\log.log'); Bei mir sähe der Aufruf so aus (weniger zu tippen): LoadIntoStrings('C:\Path\log.log', SLog); ......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
stefangeorg
(Gast)

n/a Beiträge
 
#6

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 13:03
Servus,

ging ja fix . Jetzt funktionert es. Danke!!!

mfg

Georg Härting


PS: wie markiere ich die Frage jetzt als 'beantwortet' ?
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 13:06
OK du hast mich überzeugt.
Die Fehler hät ich dann spätestens im delphi gemerkt aber ich hab des alles so aus dem stehgreif aufgeschrieben
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#8

Re: Datei wird von einem anderen Prozess benutzt-trotzdem le

  Alt 21. Jan 2005, 16:56
Was willst du bitte als beantwortet markieren?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Antwort Antwort


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