Entwickler-Ecke
Dateizugriff - Dateien Verstecken
Mister Riös - Do 29.04.10 18:41
Titel: Dateien Verstecken
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):
Delphi-Quelltext
1: 2: 3: 4:
| AssignFile(Datei, name + '_Exist.HGS'); ReWrite(Datei); 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:
Delphi-Quelltext
1: 2: 3: 4:
| AssignFile(Datei, name + '_Exist.HGS'); ReSet(datei); ReadLn(datei, SSL); CloseFile(Datei); |
Irgendwelche Ideen?
Danke im Voraus!
Xentar - Do 29.04.10 18:47
Die Kürzel, die du an die Dateinamen hängst, sind unterschiedlich?
Mister Riös - 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 - Do 29.04.10 19:55
Warum nicht vor dem zweiten Einlesen einfach die Attribute wieder zurücksetzen, und nach dem Lesen wieder setzen?
Mister Riös - 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.
Delete - 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 - 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 - Sa 01.05.10 22:14
Problem immer noch ungelöst.
Mister Riös - So 02.05.10 00:46
Damit kann ich nichts anfangen.
Ich hab probiert, die Datei vor dem Zugriff wieder sichtbar zu machen:
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); FileSetAttr('test.txt', faHidden); CloseFile(Datei);
end. |
An der kommentierten Stelle kracht es 'E/A-Fehler 105'
Was mache ich falsch?
Xentar - 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..
jaenicke - So 02.05.10 10:05
Mister Riös hat folgendes geschrieben : |
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:
Delphi-Quelltext
1:
| FileSetAttr(DateiInklPfad, 0); |
Bzw. einmal komplett korrekt mit dem oben geposteten direkten API-Befehl (warum kannst du damit nichts anfangen :gruebel:):
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:
http://www.delphi-library.de/viewtopic.php?p=499701
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!