Autor Beitrag
Mister Riös
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 7, HTML, CSS, PHP, Java
BeitragVerfasst: Do 29.04.10 18:41 
Hi, ich suche nach einer Möglichkeit Dateien eines beliebigen Dateityps zu verstecken und dennoch darauf zugreifen zu können.
Das Ganze sieht bei mir bis jetzt so aus (Beispiel):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  AssignFile(Datei, name + '_Exist.HGS');
    ReWrite(Datei);
  //FileSetAttr(name + '_Exist.HGS', faHidden);    //Mein bisheriger Versuch
    CloseFile(Datei);


Was ich bis jetzt probiert hab, funktioniert zwar, aber ich kann später nicht mehr auf die versteckte Datei zugreifen, die Fehlermeldung sagt so viel wie "Dateizugriff verweigert". Der Programmteil oben erstellt die Datei, versteckt sie dann und schließt sie. An folgender Stelle tritt dann der Fehler auf:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
    AssignFile(Datei, name + '_Exist.HGS');
      ReSet(datei);                                //Hier 
      ReadLn(datei, SSL);
      CloseFile(Datei);


Irgendwelche Ideen?

Danke im Voraus!


Zuletzt bearbeitet von Mister Riös am Do 29.04.10 19:02, insgesamt 1-mal bearbeitet
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 29.04.10 18:47 
Die Kürzel, die du an die Dateinamen hängst, sind unterschiedlich?

_________________
PROGRAMMER: A device for converting coffee into software.
Mister Riös Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 7, HTML, CSS, PHP, Java
BeitragVerfasst: Do 29.04.10 19:02 
Oh, nein, Entschuldigung, ich greife auf mehrere Dateien zu und hab die Falsche Anweisungsfolge rauskopiert^^ Ich werd' es ändern
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 29.04.10 19:55 
Warum nicht vor dem zweiten Einlesen einfach die Attribute wieder zurücksetzen, und nach dem Lesen wieder setzen?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Mister Riös Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 7, HTML, CSS, PHP, Java
BeitragVerfasst: Do 29.04.10 20:21 
Wie geht das? Ich hab das bereits probiert, war mir aber nicht sicher mit welchem Befehl. Ich hab den gleichen genommen wie zum Verstecken und das ging nicht.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 29.04.10 20:41 
Dir ist schon klar, dass das Augenwischerei ist? Ich habe den Explorer so eingestellt, dass er mir auch versteckte Dateien anzeigt. Was willst du damit bezwecken?
Mister Riös Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 7, HTML, CSS, PHP, Java
BeitragVerfasst: Do 29.04.10 22:01 
Das ist mir schon klar, aber für den ersten Blick reicht es wenn die Dateien "weg" sind. Das System auf dem mein Programm hauptsächlich ausgeführt wird ist derart beschränkt worden, es unterstützt nicht mal das Anzeigen von verstecktet Dateien (Außer man sucht explizit nach ihnen).
Mister Riös Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 7, HTML, CSS, PHP, Java
BeitragVerfasst: Sa 01.05.10 22:14 
Problem immer noch ungelöst.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 01.05.10 23:38 
Die versteckte Datei kann man ganz einfach mit SetFileAttributes wieder sichtbar machen.
Mister Riös Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 7, HTML, CSS, PHP, Java
BeitragVerfasst: So 02.05.10 00:46 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die versteckte Datei kann man ganz einfach mit SetFileAttributes wieder sichtbar machen.

Damit kann ich nichts anfangen.

Ich hab probiert, die Datei vor dem Zugriff wieder sichtbar zu machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
program Project1;

uses
  SysUtils;

{$APPTYPE CONSOLE}

var
  Datei:Textfile;
  h:string;

begin
  AssignFile(Datei, 'test.txt');
  ReWrite(Datei);
  FileSetAttr('test.txt', faHidden);
  CloseFile(Datei);

  readln(h);

  AssignFile(Datei, 'test.txt');
  ReSet(Datei);
  FileSetAttr('test.txt', faHidden);
  WriteLn(Datei, h);                              //Hier
  FileSetAttr('test.txt', faHidden);
  CloseFile(Datei);

end.


An der kommentierten Stelle kracht es 'E/A-Fehler 105'

Was mache ich falsch?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: So 02.05.10 00:55 
Warum gehts du eigentlich diesen händischen Weg, mit AssignFile und so?
Geht doch auch einfacher, z.B. mit ner StringList.

Btw: Relative Dateipfade sind böse..

_________________
PROGRAMMER: A device for converting coffee into software.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.05.10 10:05 
user profile iconMister Riös hat folgendes geschrieben Zum zitierten Posting springen:
Ich hab probiert, die Datei vor dem Zugriff wieder sichtbar zu machen:
Wo denn? :gruebel:
Du setzt doch nur überall das Attribut versteckt.

Wenn du es nicht mehr haben willst, dann darfst du es auch nicht als zu setzendes Attribut angeben:
ausblenden Delphi-Quelltext
1:
  FileSetAttr(DateiInklPfad, 0);					
Bzw. einmal komplett korrekt mit dem oben geposteten direkten API-Befehl (warum kannst du damit nichts anfangen :gruebel:):
ausblenden Delphi-Quelltext
1:
2:
  SetFileAttributes(PChar(ExtractFilePath(ParamStr(0)) + 'test.txt'),
    GetFileAttributes(PChar(ExtractFilePath(ParamStr(0)) + 'test.txt')) and not FILE_ATTRIBUTE_HIDDEN);
So änderst du auch keine anderen Attribute, sondern entfernst nur dieses.
Auf den Zugriff hat das aber ohnehin keinen Einfluss welche Attribute da gesetzt sind. Das funktioniert auch bei versteckten Dateien.

Nur öffnest du die Datei zum Lesen (Reset) und versuchst dann da hinein zu schreiben, was erwartest du da anderes als einen Fehler? :autsch:
(Bei Binärdateien geht das mit Reset, bei Textdateien wie hier öffnet man diese aber nur zum Lesen, siehe Doku.)

Ja, dass die Pfadangabe fehlt, wurde ja bereits erwähnt, trotzdem einmal noch der Link inkl. Demo wo es schiefgeht:
www.delphi-library.d...ewtopic.php?p=499701