Autor |
Beitrag |
Mister Riös
      
Beiträge: 43
Win XP
Delphi 7, HTML, CSS, PHP, Java
|
Verfasst: 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):
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!
Zuletzt bearbeitet von Mister Riös am Do 29.04.10 19:02, insgesamt 1-mal bearbeitet
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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 
      
Beiträge: 43
Win XP
Delphi 7, HTML, CSS, PHP, Java
|
Verfasst: 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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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 
      
Beiträge: 43
Win XP
Delphi 7, HTML, CSS, PHP, Java
|
Verfasst: 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
|
Verfasst: 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 
      
Beiträge: 43
Win XP
Delphi 7, HTML, CSS, PHP, Java
|
Verfasst: 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 
      
Beiträge: 43
Win XP
Delphi 7, HTML, CSS, PHP, Java
|
Verfasst: Sa 01.05.10 22:14
Problem immer noch ungelöst.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 01.05.10 23:38
Die versteckte Datei kann man ganz einfach mit SetFileAttributes wieder sichtbar machen.
|
|
Mister Riös 
      
Beiträge: 43
Win XP
Delphi 7, HTML, CSS, PHP, Java
|
Verfasst: So 02.05.10 00:46
jaenicke hat folgendes geschrieben : | 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:
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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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?
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  ): 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?
(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
|
|
|