AGB  ·  Datenschutz  ·  Impressum  







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

Datei als array of byte einlesen

Ein Thema von tofse · begonnen am 30. Okt 2017 · letzter Beitrag vom 6. Nov 2017
Antwort Antwort
Redeemer

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

AW: Datei als array of byte einlesen

  Alt 30. Okt 2017, 19:38
Ich werfe noch Delphi-Referenz durchsuchenTBytesStream in die Runde.

Es gibt die globale Variabel FileMode, über die gesteuert wird, wie eine Datei geöffnet wird und was andere gleichzeitig mit der Datei machen dürfen.

Der Standard ist fmOpenReadWrite, das dürfte für dich aber nicht relevant sein. Versuch es mal mit:

fmShareDenyNone. Andere haben uneingeschränkten Zugriff.

Oder eventuell:

fmOpenRead. Nur Lesezugriff.

Ansonsten hier mal nachschauen: http://docwiki.embarcadero.com/Libra...ystem.FileMode
Mich irritiert der Satz in der Doku: "Hinweis: Unter Windows wird der Parameter Rights ignoriert."
Ist das wirklich so? Also zumindest bei fmCreate kann man Rights nicht angeben (ist immer fmShareExclusive), aber beim Rest ging das glaube ich...
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.643 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datei als array of byte einlesen

  Alt 31. Okt 2017, 09:52
Mich irritiert der Satz in der Doku: "Hinweis: Unter Windows wird der Parameter Rights ignoriert."
Ist das wirklich so?
Da hat die Doku durchaus Recht! Die fmShareXXX Attribute müssen mit dem Mode-Parameter (fmCreate/fmOpenXXX) per OR verknüpft werden. Der Parameter Rights wird unter Windows nicht ausgewertet.

Also zumindest bei fmCreate kann man Rights nicht angeben (ist immer fmShareExclusive), aber beim Rest ging das glaube ich...
Das stimmt nicht so ganz. Bei fmCreate wird nur dann fmShareExclusive verwendet, wenn als Mode $FFFF bzw. fmCreate OR $FF übergeben wird. Dabei wird aber auch das fmCreate quasi herausgenommen und eben nur fmShareExclusive übergeben.

Der Rights-Parameter wird sogar ausschließlich beim fmCreate ausgewertet und das auch nur unter POSIX. Dabei wird die Datei mit den angegebenen Zugriffsrechten angelegt. Beim Öffnen einer existierenden Datei würde das Ändern der Zugriffsrechte ja auch keinen Sinn ergeben.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Redeemer

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

AW: Datei als array of byte einlesen

  Alt 31. Okt 2017, 10:28
Wie kann ich denn bei TFileStream eine Datei nicht-exklusiv erstellen und öffnen?
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.643 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datei als array of byte einlesen

  Alt 31. Okt 2017, 10:53
Wie kann ich denn bei TFileStream eine Datei nicht-exklusiv erstellen und öffnen?
Z.B. so: TFileStream.Create(<filename>, fmCreate or fmShareDenyWrite);

Sobald die Datei dann existiert kannst du über TFileStream.Create(<filename>, fmOpenRead or fmShareDenyNone); von anderer Stelle lesend darauf zugreifen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Redeemer

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

AW: Datei als array of byte einlesen

  Alt 31. Okt 2017, 12:23
In Delphi 2009 ist fmCreate als $FFFF definiert...
Ich möchte die Datei nur schreiben, nicht lesen.
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.643 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datei als array of byte einlesen

  Alt 31. Okt 2017, 13:36
In Delphi 2009 ist fmCreate als $FFFF definiert...
Ich möchte die Datei nur schreiben, nicht lesen.
Soweit ich weiß, ist in D2009 bei fmCreate der Share-Mode immer 0.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Datei als array of byte einlesen

  Alt 31. Okt 2017, 16:59
Man kann auch problemlos einen eigenen Constructor für TFileStream schreiben
oder nutzt THandleStream mit MSDN-Library durchsuchenCreateFile
und kann da dann machen was man will.

PS: Delphi-Referenz durchsuchenTFile.ReadAllBytes
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (31. Okt 2017 um 17:04 Uhr)
  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 14:37 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