Autor Beitrag
Jonathanubx
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 32



BeitragVerfasst: Mo 05.11.07 21:50 
Hi,
ich wollte mal eine allgemeine Frage stellen und zwar:

Gibt es eine Möglichkeit eine txt-Datei das Attribut "Schreibgeschützt" hinzuzufügen, allerdings alternativ zu der üblichen Methode (Eigenschaften-->Schreibschutz)? ich dachte da vielleicht an einen speziellen Dateinamen oder ähnliches. ich möchte eine txt Datei auf die man ganz normal zugreifen kann, aber eben darin nichts verändern kann.
quasi einmal erstellt und dann unveränderlich (bzw fast, irgendeinen weg gibts ja meistens, aber eben vlt so, dass es nicht jeder Laie kann)

es wär nett wenn ihr mir helfen könntet, ich bin auch für alternativen dankbar!

Danke schon mal!
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mo 05.11.07 22:13 
user profile iconJonathanubx hat folgendes geschrieben:
Hi,
Gibt es eine Möglichkeit eine txt-Datei das Attribut "Schreibgeschützt" hinzuzufügen, allerdings alternativ zu der üblichen Methode (Eigenschaften-->Schreibschutz)? ich dachte da vielleicht an einen speziellen Dateinamen oder ähnliches. ich möchte eine txt Datei auf die man ganz normal zugreifen kann, aber eben darin nichts verändern kann.
quasi einmal erstellt und dann unveränderlich (bzw fast, irgendeinen weg gibts ja meistens, aber eben vlt so, dass es nicht jeder Laie kann)


Eigenschaften -> Sicherheit und dann allen die Schreibrechte wegnehmen (auch dem Admin, der kann sie sich ja notfalls wieder zurueckgeben).

Das erfordert allerdings NTFS als Dateisystem.

twm
Jonathanubx Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 32



BeitragVerfasst: Di 06.11.07 21:06 
sehr gut, danke damit komme ich schon recht weit, allerdings würde ich noch gerne wissen ob diese Recht übertragen werden, wenn die datei auf einen anderen rechner kopiert wird und wenn nein was ich dann evtl noch machen kann?
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mi 07.11.07 10:30 
user profile iconJonathanubx hat folgendes geschrieben:
sehr gut, danke damit komme ich schon recht weit, allerdings würde ich noch gerne wissen ob diese Recht übertragen werden, wenn die datei auf einen anderen rechner kopiert wird und wenn nein was ich dann evtl noch machen kann?


Nein, es wird nicht mit uebertragen.
Du kannst das Kopieren nicht verhindern, keine Chance.
In Abhaengikeit davon, was Du eigentlich erreichen willst, gibt es noch folgende Moeglichkeiten:

1. Datei mit einer Pruefsumme versehen und im Programm, das sie benutzt, diese pruefen und die Datei ablehnen, wenn sie nicht stimmt.
2. Datei im Programm nur aus einem bestimmten Ordner oeffnen, diesen Ordner dann schreibschuetzen.

twm
Jonathanubx Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 32



BeitragVerfasst: Do 08.11.07 21:11 
Prüfsumme klingt vielversprechend.
wie kann ich erreichen, das mein programm (mit delphi 7 geschrieben) diese datei nur dann mit notepad öffnet (shellexecute) falls eben diese prüfsumme vorhanden ist?
und wie weiße ich überhaupt eine prüfsumme zu? :oops:
ich hoffe das problem ist einigermaßen verständlich ...:)
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Fr 09.11.07 21:20 
user profile iconJonathanubx hat folgendes geschrieben:
Prüfsumme klingt vielversprechend.
wie kann ich erreichen, das mein programm (mit delphi 7 geschrieben) diese datei nur dann mit notepad öffnet (shellexecute) falls eben diese prüfsumme vorhanden ist?
und wie weiße ich überhaupt eine prüfsumme zu? :oops:
ich hoffe das problem ist einigermaßen verständlich ...:)


Zuerst musst die eine Pruefsumme berechnen, z.B. einen MD5 Hash. Diese muss dann irgendwie sinnvoll in die Datei eingefuegt werden, moeglichst so, dass sie die Pruefsumme nicht veraendert (z.B. als Header, der beim Berechnen der Pruefsumme ignoriert wird). Dann musst Du in Deinem Programm die Pruefsumme der Datei gegen die darin gespeicherte Pruefsumme checken. Wenn sie uebereinstimmen, dann Notepad aufrufen.

twm
Jonathanubx Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 32



BeitragVerfasst: Sa 10.11.07 09:43 
das ist ne spitzen möglichkeit, allerdings muss ich zugeben, dass ich noch relativ unwissend bin, was den umgang mit delphi bzw. programmieren angeht. mir würde der code sehr weiterhelfen, soweit das möglich ist.^^
und wie kann ich dann die prüfsumme (MD5: f877342e83af4c10b85aa30a0b806955) in den header schreiben und auf diese dann im meinem Programm zugreifen?
oder ist mit header der dateiname gemeint?

ich hab mir auch überlegt ob es nicht vlt auch möglich wäre, die zeichen der txt datei zu zählen und dann die datei von meinem programm nur dann zu öffnen, wenn die anzahl der zeichen die gleiche ist. ich weiß zwar das dies nicht sonderlich sicher ist, aber für meine zwecke würde es reichen denke ich.
dazu müsste ich allerdings wissen wie ich bei delphi die zeichen in einer txt datei auslesen kann ...
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Sa 10.11.07 18:42 
user profile iconJonathanubx hat folgendes geschrieben:
das ist ne spitzen möglichkeit, allerdings muss ich zugeben, dass ich noch relativ unwissend bin, was den umgang mit delphi bzw. programmieren angeht. mir würde der code sehr weiterhelfen, soweit das möglich ist.^^
und wie kann ich dann die prüfsumme (MD5: f877342e83af4c10b85aa30a0b806955) in den header schreiben und auf diese dann im meinem Programm zugreifen?
oder ist mit header der dateiname gemeint?

ich hab mir auch überlegt ob es nicht vlt auch möglich wäre, die zeichen der txt datei zu zählen und dann die datei von meinem programm nur dann zu öffnen, wenn die anzahl der zeichen die gleiche ist. ich weiß zwar das dies nicht sonderlich sicher ist, aber für meine zwecke würde es reichen denke ich.
dazu müsste ich allerdings wissen wie ich bei delphi die zeichen in einer txt datei auslesen kann ...


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('meinedatei.txt');
    // sl.Text enthaelt jetzt die komplette Datei incl. Zeilenumbrueche
    // sl[0] ist die 1. Zeile, sl[1] die 2. Zeile etc. bis sl[sl.Count-1]
  finally
    sl.Free;
  end;


mit sl.SaveToFile kann man den Inhalt in eine Datei schreiben. Die Pruefsumme zu berechnen ist etwas komplizierter, such' Dir dazu besser eine fertige Funktion. Wenn die Pruefsumme immer in der 1. Zeile steht, kann man diese mit sl.Delete(0) rausloeschen und hat dann in sl.Text nur noch den eigentlichen Dateiinhalt stehen und kann darueber dann die Pruefsumme berechnen. Mit sl.Insert(0, Pruefsumme) kann man sie dann am Dateianfang einfuegen.

Das sollte eigentlich als Anleitung reichen, oder?

btw: Wieso nicht gleich in 'nem Memo anzeigen statt extern Notepad aufrufen?

twm
Jonathanubx Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 32



BeitragVerfasst: So 11.11.07 21:58 
danke hat mir sehr geholfen :D
den Rest bekomm ich jetzt wieder allein hin