Typkonverierung

Hallo Experten!

Ich arbeite gerade mit dem Borland C++ Builder4.
Jetzt habe ich eine Datei geöffnet mit _rtl_open und eingelesen mit _rtl_read.
Jetzt liegt der Inhalt in einem Buffer.
Wie krieg ich diesen Buffer (deklariert als void* buf; //wie im Beispiel der C++ Builder4-Hilfe) in einen AnsiString oder einen Char* um ihn in einem Panel anzuzeigen.
Jetzt ist die Datei noch ein Text-File, in naher Zukunft wird es ein Binary sein.
In dem Panel wird der Dateiinhalt zur Kontrolle angezeigt.

Danke für die Antworten.

Christof

Probiere es mal so :
char *var1 = buffer;
dann kannst du var1 benutzen;
oder du benutzt die funktion so :
(char*)Funktionsname(…);

Probiere es mal so :
char *var1 = buffer;

klingt ganz gut, doch leider wird die methode _rtl_read so definiert:

**#include

void *buf;
buf = malloc(10);**
//damit wird speicher fuer 10 bytes reserviert.

int _rtl_read(int handle, void *buf, unsigned len);

(char*)Funktionsname(…);

geht nicht, da _rtl_read als rueckgabewert einen int liefert

Probiere es so
int _rtl_read(handle, (char*)buf,len);

Probiere es so
int _rtl_read(handle, (char*)buf,len);

ist danach leider immer noch ein void*
ich kann das dann einfach nicht zum String machen.

Hallo !

so sollte es gehen
char buf[10];
int iRead=_rtl_read(handle, (void *)buf, 10);
if (iRead!=10)
{
//Fehler
}

Nimm aber lieber Funktionen aus stdio.h z.B. fread oder fscanf anstatt so ein dubioses Zeug wie _rtl_read, bzw nimm gleich Klassen aus der C++ Standard Lib. Das erleichtert die die Portierung wenns mal noetig wird.

Tschuess !

Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo !

so sollte es gehen
char buf[10];
int iRead=_rtl_read(handle, (void *)buf, 10);
if (iRead!=10)
{
//Fehler
}

Nimm aber lieber Funktionen aus stdio.h z.B. fread oder fscanf
anstatt so ein dubioses Zeug wie _rtl_read, bzw nimm gleich
Klassen aus der C++ Standard Lib. Das erleichtert die die
Portierung wenns mal noetig wird.

Tschuess !

Andreas

So tuts, tausend Dank
Die Standard-Funktionen werd ich mal ausprobieren.

Danke.

Christof

Nimm aber lieber Funktionen aus stdio.h z.B. fread oder fscanf
anstatt so ein dubioses Zeug wie _rtl_read, bzw nimm gleich
Klassen aus der C++ Standard Lib. Das erleichtert die die
Portierung wenns mal noetig wird.

Tschuess !

Andreas

So tuts, tausend Dank
Die Standard-Funktionen werd ich mal ausprobieren.

Danke.

Christof

Hab gemerkt, ich brauch diese „dubiosen“ Methoden, da ich später Binary Files aufmachen will.
Das Programm bleibt eh auf einem WinNT-Rechner

Trotzdem Danke für den Tip.

Christof

Hallo !

Hab gemerkt, ich brauch diese „dubiosen“ Methoden, da ich
später Binary Files aufmachen will.

brauchst Du nicht !

probier mal
FILE * fpMyFile=fopen(„binaerdatei.bin“,„rb“);
if(fpMyFile==NULL)
{

}
char charFeld[100];
if(fread((void*)charFeld,sizeof(char),100,fpMyFile)!=100)
{

}
fclose(fpMyFile);

und alles aus stdio.h und geht sogar unter Windows :smile:

Das Programm bleibt eh auf einem WinNT-Rechner

Kann ja sein, dass Du zwar nicht das Betriebssystem, aber mal den Compiler wechselst. Selbst wenn der Code nicht noch einmal verwendet wird lohnt es sich die umfangreichen Funktionen der Standard Libs zu kennen, da man erst Dann ueberhaupt C programmiert.

Trotzdem Danke für den Tip.

Christof

Tschuess !

Andreas