Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
pIxXxeL
Anmeldungsdatum: 25.01.2005 Beiträge: 4
|
Verfasst am: 27.01.2005, 21:28 Titel: Schreibschutz hinzufügen |
|
|
Hallo (:
Ich möchte gerne meine .txt Datei schreibschützen aus QBasic heraus...
Kann mir jemand sagen wie das geht?
Danke im Vorraus |
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 27.01.2005, 21:44 Titel: |
|
|
ASTTRIB /? hat Folgendes geschrieben: | Zeigt die Dateiattribute an oder ändert sie.
ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [[Laufwerk:][Pfad]Dateiname] [/S]
+ Aktiviert ein Attribut.
- Deaktiviert ein Attribut.
R Dateiattribut "Schreibgesüch?tzt".
A Dateiattribut "Archiv".
S Dateiattribut "Systemdatei".
H Dateiattribut "Versteckte Datei".
/S Verarbeitet Dateien in allen Verzeichnissen des angegebenen Pfads. |
Dementsprechend kannst du also in QB
Code: | SHELL "ATTRIB +R Text.txt" | schreiben. _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
pIxXxeL
Anmeldungsdatum: 25.01.2005 Beiträge: 4
|
Verfasst am: 27.01.2005, 21:55 Titel: |
|
|
so nächstes problem ;\
Mein Programm soll einmalig beim ersten Start eine Datei erzeugen.
In der Datei ist ein Wert gespeichert der jedesmal wenn mein Programm ausgeführt wird um 1 erhöht wird und wenn er 5 erreicht hat soll er wieder auf 0 gesetzt werden...
Mein Problem... wenn ich die Schreibschutzattribute hinzufüge kommt beim 2. Start des Programms die Fehlermeldung das er nicht zugreifen konnte....
Wenn ich sie Weglasse dann wird die Datei jedesmal überschrieben und der Wert in der Datei bleibt 1
Ich hoffe ihr könnt mir Helfen obwohl ich alles so unübersichtlich geschrieben habe
Code: | OPEN "C:\asdf.txt" FOR OUTPUT AS #1
CLOSE #1
OPEN "C:\asdf.txt" FOR INPUT AS #1
DO UNTIL EOF(1)
INPUT ; restart
LOOP
CLOSE #1
IF restart >= 5 THEN
LET restart = 0
SHELL "ATTRIB -R C:\asdf.txt"
OPEN "C:\bootlog.txt" FOR OUTPUT AS #1
PRINT #1, restart
CLOSE #1
SHELL "ATTRIB +R C:\asdf.txt"
ELSE
LET restart = restart + 1
SHELL "ATTRIB -R C:\asdf.txt"
OPEN "C:\asdf.txt" FOR OUTPUT AS #1
PRINT #1, restart
CLOSE #1
SHELL "ATTRIB +R C:\asdf.txt"
END IF
END |
|
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 27.01.2005, 22:27 Titel: |
|
|
Code: | SHELL "ATTRIB -R C:\asdf.txt" ' Hatte C:\ vergessen
OPEN "C:\asdf.txt" FOR OUTPUT AS #1
CLOSE #1
OPEN "C:\asdf.txt" FOR INPUT AS #1
INPUT #1, zahl% ' wenn die Zahl in der ersten Zeile steht
CLOSE #1
OPEN "C:\asdf.txt" FOR OUTPUT AS #1
zahl% = zahl% + 1
IF zahl% = 5 THEN zahl% = 0
PRINT #1, zahl%
CLOSE #1
SHELL "ATTRIB +R C:\asdf.txt" ' Auch hier war kein C:\
END | Wie immer: Ungetestet  _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
pIxXxeL
Anmeldungsdatum: 25.01.2005 Beiträge: 4
|
Verfasst am: 27.01.2005, 23:02 Titel: |
|
|
Das hilft nichts damit ist mein Problem leider nicht gelöst, aber danke (;
Weil wenn
Code: | OPEN "C:\asdf.txt" FOR OUTPUT AS #1
CLOSE #1 |
ausgeführt wird überschreibt er ja die Datei mit dem Wert
Allerdings brauche ich diese 2 Zeilen, damit beim ersten Programmstart die Datei überhaupt erzeugt wird :\
Hat jemand eine Ahnung wie das umgangen werden kann?
Code: |
OPEN "C:\asdf.txt" FOR OUTPUT AS #1
CLOSE #1
OPEN "C:\asdf.txt" FOR INPUT AS #1
DO UNTIL EOF(1)
INPUT ; restart
LOOP
CLOSE #1
IF restart >= 5 THEN
LET restart = 0
SHELL "ATTRIB -R C:\asdf.txt"
OPEN "C:\bootlog.txt" FOR OUTPUT AS #1
PRINT #1, restart
CLOSE #1
SHELL "ATTRIB +R C:\asdf.txt"
ELSE
LET restart = restart + 1
SHELL "ATTRIB -R C:\asdf.txt"
OPEN "C:\asdf.txt" FOR OUTPUT AS #1
PRINT #1, restart
CLOSE #1
SHELL "ATTRIB +R C:\asdf.txt"
END IF
END |
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.01.2005, 23:18 Titel: |
|
|
Bei so einem Post darf natürlich die CALL INTERRPUPT-Variante nicht fehlen, ist schliesslich noch ein Quentchen schneller, weil im Gegensatz zu SHELL kein Tochter-Prozess im MS-DOS-Betriebssystem gestartet werden muss. :-) Vollständiges Beispiel:
http://beilagen.dreael.ch/QB/DAT_ATTR.BAS
Hinweis: Durch Anpassen der Zeile
in der Programmmitte kann man auch beliebig andere Attribute setzen und löschen.
Datei verstecken:
Read-Only wieder aufheben:
Code: | attr% = attr% AND -2 |
(-2 = &HFFFE = 11111111'11111110 = NOT 1) _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Gremlin

Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 29.01.2005, 21:20 Titel: |
|
|
Vielleicht folgendes:
Code: | ON ERROR GOTO Fehlerbehandlung
' Eigentlicher Code
END
Fehlerbehandlung:
OPEN "C:\asdf.txt" FOR OUTPUT AS #1
CLOSE #1
RUN |
_________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt.  |
|
Nach oben |
|
 |
|