FileRead()

Tags:    c++

<< < 12 > >>

Jeg har åbnet en fil med FileOpen
herefter vil jeg gerne læse de første 33 karaktere
og har derfor brugt.

void * laesbuf ;
int laes = FileRead(openhandle,laesbuf,33);

Jeg får ingen fejl men hvordan ser jeg hvad jeg har læst ?
som jeg forstår det er de 33 karaktere nu i laesbuf men hvordan får jeg det konverteret til en AnsiString ?





12 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Nu kan jeg ikke lige finde noget info på den funktion, men sådan som det ser ud kunne jeg forestille mig, at laesbuf indeholder det læste...



Nu kan jeg ikke lige finde noget info på den funktion, men sådan som det ser ud kunne jeg forestille mig, at laesbuf indeholder det læste...


Ja det skulle ligge i laesbuf men det er jo en Void * ...
hvordan får jeg indholdt ud ?


eller måske skulle jeg hellere spørge..
Hvordan læser jeg en txt fil med Borland builder ?




Indlæg senest redigeret d. 21.01.2007 19:29 af Bruger #4090
Man læser tekst filer i Borland C++ Builder som med alle andre C++ compilere:

Fold kodeboks ind/udKode 




Nu bruger jeg ikke Cout så jeg er ikke skide go til lige at omstrukturere dit eksempel da jeg kører fra en form

jeg har en fil winpath.txt som jeg bare skal åbne og læse
jeg ved ikke hvor mange charaktere der er i denda den indeholder en sti til en anden fil

Jeg har et Handle til filen som jeg fik fra FileOpen()

Hvordan ville jeg gå herfra for at læse indholdet ?
Dette er hvad jeg gør nu
Fold kodeboks ind/udKode 

Buffer indeholder texten jeg vil have ud.
Jeg kan læse den med en ShowMessage()
men hvis jeg prøver at lagre den i eks en AnsiString så får jeg en exception sDT:class bad_alloc




I mit eksempel ender strengen i Line, som er en std::string.
Så vidt jeg husker kan ud læse denne over i en AnsiString ved at bruge std::string's c_str();
AnsiString pop = Line.c_str();

I dit eksempel kan bør du kunne læser Buffer over i en AnsiString:

AnsiString Foo = Buffer;

Husk at delete [] Buffer når du er færdig med at bruge den.



Jeg kan ikke gøre som du siger

AnsiString Foo = Buffer;

eller det vil sige at jeg kan godt og compiler brokker sig heller ikke men jeg kan ikke afvikle uden programmet crasher.

men det sjove er at hvis jeg smider Buffer ind i en ShowMessage() så får jeg ikke problemmer...



Jeg tror at vi skal se lidt mere kode.
Jeg vil også gerne vide hvor den går ned.



Jeg starter med at åbne min fil

Fold kodeboks ind/udKode 



Herefter læser jeg indholdet
og skriver den ud i en Editbox

Problemmet opstår når sidste linje køres
Fold kodeboks ind/udKode 




Du skal sætte TextSize til en passende størrelse.
Du skal bruge:
delete [] Buffer.



Er det ikke lettere at:

#include <fstream>

{
std::ifstream In("C:\\\\wowpath.txt");
std::string foo;
std::getline(In, foo);
Edit1->Text = foo.c_str();
}



<< < 12 > >>
t