AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
Thema durchsuchen
Ansicht
Themen-Optionen

TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

Ein Thema von v2afrank · begonnen am 21. Mär 2018 · letzter Beitrag vom 22. Mär 2018
Antwort Antwort
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#1

TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 15:09
Delphi-Version: 5
Ich habe hier ein Stück älteren Code in dem unter anderem folgender Code steht
FileStream := TFileStream.Create(Filename, fmOpenRead); Jetzt sollte das Programm parallel benutzt werden und es kam auf eine Fehlermeldung dass auf eine Datei nicht zugegriffen werden kann. Diese wird mit dem obigen Dateischnipsel geladen.
In der Hilfe steht " and (possibly) a share mode or'ed together"
Was ist wenn ich den Modus nicht angebe. Welcher Zugriff ist dann erlaubt ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#2

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 15:23
Nur ich und sonst keiner, wenn ich mich nicht irre. (ShareDeniedAll oder so)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#3

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 15:26
Wenn dem so ist könnte ich mein Problem ja beheben. Ich brauche in allen Instanzen nur lesenden Zugriff.
Wobei glaube ich nicht in dem Hilfelink sthet ja dass es eine Veroderung ist.
Demzufolge müßte es fmShareCompat: Integer = 0; sein fmShareExclusive hat den Wert 10. Oder ?
Dazu noch was bedeutet fmShareCompat ? Die Hilfe sagt Open File in Dos Mode. Das bedeutet ?
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.049 Beiträge
 
Delphi 2009 Professional
 
#4

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 15:34
https://docs.microsoft.com/de-de/win...-fcb-structure

Verstehe auch nicht, wo das Problem ist, einen Parameter unbedingt weglassen zu wollen...
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#5

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 17:20
Demzufolge müßte es fmShareCompat: Integer = 0; sein fmShareExclusive hat den Wert 10.
Eben weil fmShareCompat = 0 ist, hat es beim OR ja keine Auswirkung. In deinem Fall wäre fmShareDenyWrite oder fmShareDenyNone wohl die bessere Wahl.

FileStream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyNone);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 21:23
Mit dem TStream kenn ich mich nicht so super aus aber falls Dir auch ein Handle zu einer Datei ausreicht könntest Du Sie so öffnen ohne das andere Prozesse (oder Dein eigener) meckern:
Delphi-Quellcode:
hFile := CreateFile(pChar(FullPathFilename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if (hFile = INVALID_HANDLE_VALUE) then
 begin
  // Fehler: Dateizugriff nicht möglich
  Exit;
 end;
  // mach was mit dem Handle, Beispiel: Daten in einen Puffer laden. ReadFile() würde sich dafür eignen.
CloseHandle(hFile);
PChar für alte Delphi's.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#7

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 21:57
hFile := CreateFile(pChar(FullPathFilename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
Das ist interessanterweise genau das, was TFileStream.Create(Filename, fmOpenRead or fmShareDenyRead) intern tut.

Übrigens: PChar funktioniert auch für neue Delphiversionen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 21. Mär 2018, 22:15
Wobei ich mir die SDK/Win32 Hilfe nahm um den Befehl so zu nutzen (WinApi Programm),
das TFileStream das auch so einsetzt wusst ich bis jetzt auch noch nicht, hab ich noch nie reingeschaut aber ja, interessant!
Ich nutze es für Hashes/Diggest oder simples bytecompare bzw generell binär-daten lesen.
Wenn man sich einmal dran gewöhnt hat, vermisst man kaum die TStream-Deluxe funktionen ;-D

ps: Sorry falls das mit PChar falsch/richtig angeben wurde!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#9

AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt

  Alt 22. Mär 2018, 06:44
Auf jeden Fall Danke für Eure Hilfe. Ich werde es heute direkt einmal testen
  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 10: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