file_load(char* name,void* buffer,long* size)
Öffnet die Datei name, liest den Inhalt in den buffer und schließt die Datei wieder.
Parameter:
name - Dateiname oder NULL, zum Freigeben des gegebenen Buffers.
buffer - Pointer auf einen praeallokierten Buffer oder NULL. Bei NULL wird ein Buffer von der Engine zugewiesen.
size - Pointer auf eine long-Variable, die auf die Dateilänge oder NULL gesetzt wird.
Rückgabewert:
Pointer auf Buffer
oder, wenn die Anweisung fehlschlägt, NULL.
Modifiziert:
buffer, size
Bemerkungen:
- Die Anweisung ist für lite-C und externe Programmiersprachen gedacht und
arbeitet deswegen mit char* und long* anstatt STRING* und var*.
- Die Datei wird zunächst in den benannten Buffern (siehe add_buffer),
dann im Pfad und zuletzt - falls die Dateiextension ".pak"
ist - im WRS-Resource-Pfad gesucht.
- Wird die Datei in einem benannten Buffer gefunden, wird size auf 0 gesetzt.
- Wurde der Funktion ein Buffer-Pointer zugewiesen, muss seine Größe über den size-Pointer
angegeben werden. Ist die Dateigröße größer
als der Buffer, wird nichts gelesen und NULL zurückgegeben.
- A7.76 Um eine Datei nicht zu laden, sondern lediglich ihren Pfad zu finden, geben Sie einen Buffer-Pointer soeie einen Größenpointer, der auf 0 zeigt. Wird die Datei im Pfad gefunden, wird path_name auf den Pfadnamen gesetzt und *size auf die Länge der Datei.
- Wurde ein Buffer von der Engine allokiert, muß er vor Beenden der Applikation per file_load(NULL,buffer,NULL); freigestellt werden.
Geschwindigkeit:
langsam
Beispiel:
void* pTerrain = file_load("terrain.hmp",NULL,&size);
add_buffer("terrain1.hmp",pTerrain,size);
...
file_load(NULL,pTerrain,NULL); // free the buffer before exiting the application.
...
STRING* find_pathname(STRING* filename)
{
int size = 0;
file_load(chr_(filename),&size,&size);
if (size > 0)
return path_name;
else
return NULL; // file not found in path
}
Siehe auch:
file_save, file_exists, add_buffer
► Aktuelle Version Online