![]() |
Delphi-Version: 5
TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
Ich habe hier ein Stück älteren Code in dem unter anderem folgender Code steht
Delphi-Quellcode:
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.
FileStream := TFileStream.Create(Filename, fmOpenRead);
In der ![]() Was ist wenn ich den Modus nicht angebe. Welcher Zugriff ist dann erlaubt ? |
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
Nur ich und sonst keiner, wenn ich mich nicht irre. (ShareDeniedAll oder so)
|
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
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 ? |
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
![]() Verstehe auch nicht, wo das Problem ist, einen Parameter unbedingt weglassen zu wollen... |
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
Zitat:
Delphi-Quellcode:
ist, hat es beim OR ja keine Auswirkung. In deinem Fall wäre fmShareDenyWrite oder fmShareDenyNone wohl die bessere Wahl.
fmShareCompat = 0
Delphi-Quellcode:
FileStream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyNone);
|
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
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:
PChar für alte Delphi's.
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); |
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
Zitat:
Delphi-Quellcode:
intern tut.
TFileStream.Create(Filename, fmOpenRead or fmShareDenyRead)
Übrigens:
Delphi-Quellcode:
funktioniert auch für neue Delphiversionen.
PChar
|
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
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! |
AW: TFilestream.LoadFromFile welcher Defaultlockmechanismus wird genutzt
Auf jeden Fall Danke für Eure Hilfe. Ich werde es heute direkt einmal testen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz