Zeichen auslesen/schreiben(htm->txt)

CompeIlIe

Grünschnabel
Hallo Leute,
Ich möchte gleich mal zum thema kommen,
also, ich bin dabei ein kleines windowsprog zu schreiben was 1. zeichen aus htm seiten auslesen soll.
2. Diese zeichen in eine txt datei schreiben soll.
---------------------------------------------------------------------------------------------------
ich hab schon den filedialog hinbekommen,also das mann per button(Wähle Pfad) einen pfad wählen soll wo die htm gespeichert ist.
(Kann das sein das die fuktion "OpenFile.GetFileName" nur den Namen der Datei zurückgibt?)
diese rückgabe muss ich doch irgendwie verwenden können um ihm zu sagen hier DIESE DATEI bitte.
jetzt soll er diese htm per buttondruck(LeseHTM) auslesen.
Und genau da liegt mein problem.Ich bin absolut nicht in der lage eine datei auszulesen und die informationen in einen buffer zu packen.Kurtz und knapp mir fehlt die c++ erfahrung.Kann mir jemand Helfen(per bsp?)
DANKE....
 
nun währ noch interessant zu wissen ob du API oder MFC programmierst.. denn der unterschied is ziemlich gravirend...

im API machst du
CreateFile()
nicht erschrecken lassen von der parameter liste, es is nur halb so schlimm wie es aussieht.. CreateFile wird so benutzt:

HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
// pointer to security attributes
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to
// copy
);

lpFileName = name der datei
dwDesiredAccess = entweder GENERIC_READ zum lesen aus der datei oder GENERIC_WRITE zum schreiben..
dwShareMode = 0
lpSecurityAttributes = NULL
dwCreationDisposition = OPEN_ALWAYS
dwFlagsAndAttributes = 0
hTemplateFile = NULL

CreateFile gibt die n dateihandle zurück und mit dem handle kannst du dann WriteFile oder ReadFile machen...
nicht vergessen den handel auf NULL zu prüfen, NULL = fehler

BOOL WriteFile(
HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure for overlapped I/O
);

hFile = dateihandle von CreateFile
lpBuffer = pointer auf einen datebuffer (ein char[] oder char*)
nNumberOfBytesToWrite = die anzahl der zeichen die geschrieben werden soll
lpNumberOfBytesWritten = ein pointer auf ein DWORD.. da steht dannach drin wie viele zeichen er wirklich geschrieben hatt...
LPOBERLAPPED = NULL

BOOL ReadFile(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // pointer to buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // pointer to number of bytes read
LPOVERLAPPED lpOverlapped // pointer to structure for data
);
hFile = dateihandle
lpBuffer = pointer auf einen buffer wo die daten hinein geschrieben werden
nNumberOfBytesToRead = die maximale anzahl an byte die in deinem buffer platz haben oder die du lesen willst
lpNumberOfBytesRead = die anzahl an byte die wirklich gelesen wurde (z.B. wenn das dateiende erreicht ist, ist die kleier als die angegebene)
lpOverlapped = NULL

naja und beim MFC is es dann so:

CFile* myFile = new CFile(dateiname, CFile::modeRead );
oder CFile::modeWrite wenn du schreiben willst...

und dann myFile->Read und myFile->Write

naja pass aber auf das du wenn du MFC benutzt die exceptions abfangen muss
try { } catch() {}


im MFC is es glaub ich ne klasse namens CFile... ebenfals MSDN
 
zeichen auslesen/schreiben(html->txt)

die frage ist leicht zu beantworten,programmeire MFC.
erstmal danke fuer die ausführliche hilfe.
jetzt hab ich aber noch 2 fragen.
Wie bringe ich den filename in die funktion,den ich im filedialog ausgewählt habe?
da müsste doch ein zusätzlicher buffer her um darin den filename zu speichern?

hier die pfadfuktion mit filedialog

void CEbayprogDlg::OnPemail()
{
// TODO: Add your control notification handler code here
......

OpenFile.m_ofn.lpstrFile=fbuffer;

}

void CEbayprogDlg::OnRemail()
{

CFile* myFile = new CFile(fbuffer, CFile::modeRead );
myFile->Read(databuffer,40960);

}

könnte das so fuktionieren?bei mir verusache ich damit eine zugriffsverletzung der ausgewählten datei..:(
und wie fange ich die exceptions ab?
try { } catch() {}
Schlimm ich weiss aber hab echt nich viel plan davon..
DANKE für die Hilfe...
 

Neue Beiträge

Zurück