Software > Coding
Disk-Label löschen
Count:
Hallo zusammen,
gibt es wirklich keine Möglichkeit, unter TOS mit GEMDOS-Funktionen den Diskettennamen zu löschen? Ändern geht ja (ab TOS 1.04) einfach mit Fcreate(name, FA_LABEL) und Fclose(). Ein Löschversuch mit Fdelete(name) liefert aber EFILNF (-33).
Thorsten Otto:
Siehe https://www.atari-forum.com/viewtopic.php?p=464383&hilit=label+name#p464383
Count:
Also geht es erst mit TOS-Versionen höher als 2.06?
Thorsten Otto:
Nein, alte TOS-Versionen verhalten sich nur anders.
Ohne es jetzt direkt testen zu können, aber folgendes sollte unabhängig vom TOS funktionieren:
(unter der Annahme, das C:\ das aktuelle Verzeichnis ist wenn das Label von C gelöscht werden soll,
ansonsten müssen die Pfadnamen entsprechend zusammengebastelt werden)
--- Code: ---DTA dta;
DTA *olddta;
int ret;
olddta = Fgetdta();
Fsetdta(&dta);
ret = 0;
if (Fsfirst("C:\*.*", FA_VOLUME) == 0)
{
/* altes Label löschen. Alte TOS-Versionen veweigern dies mit -33 */
ret = Fdelete(dta.d_fname);
if (ret == -33)
{
/* normale Datei mit gleichem Namen anlegen */
ret = (int)Fcreate(dta.d_fname, 0);
if (ret > 0)
{
Fclose(ret);
ret = Fdelete(dta.d_fname);
}
}
}
Fsetdta(olddta);
return ret;
--- Ende Code ---
Danach kann dann ein neues Label angelegt werden, wenn gewünscht.
Count:
Nein, mit deinem Codeschnipsel funktioniert es leider auch nicht (echte Hardware mit TOS 2.06). Es scheint wirklich so zu sein, dass Dateien mit dem Attribut 0x08 nicht gelöscht werden können. Stattdessen kann man aber eine normale Datei mit dem selben Namen wie das Label anlegen. Diese Datei wird dann auch gelöscht, aber das Label bleibt erhalten.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln