amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Examine [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

15.05.2007, 14:20 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Ich habe unter AROS folgendes Problem.

Um die Größe einer Datei herauszufinden bevor ich Sie geladen habe, möchte ich die Examine Funktion verwenden.

Bedauerlicherweise führt das unmittelbar zu einem Komplettabsturz.

Hier ist mein Code

Mache ich da irgenwas grundsätzliches falsch ?
--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

15.05.2007, 14:37 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Kaesebroetchen:
Mache ich da irgenwas grundsätzliches falsch ?

Versuchs mal so:

struct FileInfoBlock MurksFib;
...
Examine( BPTRFileLock, &MurksFib );
return MurksFib.fib_Size;

und selbst das hat noch Potential für Nichtfunktionieren, da der FileInfoBlock langwortausgerichtet sein muß, dh. man braucht noch eine __aligned Direktive, die jedoch Compilerabhängig ist. Wenn Du das alles umgehen möchtest, dann allokierst Du den FileInfoBlock per AllocDosObject(), den Du dann natürlich per FreeDosObject() wieder freigeben mußt.

[ - Antworten - Zitieren - Direktlink - ]

15.05.2007, 14:50 Uhr

Kaesebroetchen
Posts: 643
Nutzer
@gni:
Ah, Danke das funktioniert !

Aus AllocDosObject werde ich nicht so recht schlau.
Die Dokumentation ist da recht spärlich:

Zitat:
AllocDosObject
Synopsis

APTR AllocDosObject(
ULONG type,
struct TagItem * tags );

Function

Creates a new dos object of a given type. This memory has to be
freed with FreeDosObject().

Inputs

type - Object type.
tags - Pointer to taglist array with additional information. See
<dos/dostags.h> for a list of all supported tags.

Result

Pointer to new object or NULL, to indicate an error.


Ich finde da wäre ein Beispiel ganz nett...

--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

15.05.2007, 15:13 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Kaesebroetchen:
Aus AllocDosObject werde ich nicht so recht schlau. Die Dokumentation ist da recht spärlich: [...]

Da steht doch alles drin, was Du wissen mußt? Welche Werte "type" annehmen kann, ist in dos/dos.h dokumentiert (zb. DOS_FIB). Die Tagliste kann leer bleiben, entweder per NULL Argument oder eine leere Tagliste, die nur TAG_END enthält.

[ - Antworten - Zitieren - Direktlink - ]

15.05.2007, 15:28 Uhr

Kaesebroetchen
Posts: 643
Nutzer
@gni:
z.B. das type in dos.h dokumentiert ist hätte auch ruhig da stehen können :)

Danke für den Hinweis!
--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

15.05.2007, 18:30 Uhr

MaikG
Posts: 5172
Nutzer
Mit Seek bekommst du auch die größe ohne die Datei in den Speicher
zu laden.

[ - Antworten - Zitieren - Direktlink - ]

16.05.2007, 08:00 Uhr

gni
Posts: 1106
Nutzer
Zitat:
MaikG:
Mit Seek bekommst du auch die größe ohne die Datei in den Speicher zu laden.

Schlechter Rat. Abhängig vom Dateisystem ist Seek() um ein Vielfaches langsamer als Examine().

[ - Antworten - Zitieren - Direktlink - ]

16.05.2007, 09:53 Uhr

MaikG
Posts: 5172
Nutzer
>Schlechter Rat. Abhängig vom Dateisystem ist Seek() um ein Vielfaches langsamer als Examine().

Aha, ist aber einfacher - weil wenn ich sogar mit Seek umgehen kann :-)

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Examine [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2022 by amiga-news.de - alle Rechte vorbehalten.
.