PDA

Visualizza la versione completa : [C++] Elenco files e loro lettura


Angler84
17-03-2005, 12:29
Ciao a tutti!
Vi spiego la situazione attuale; il problema nasce dal fatto che ho salvato dal telefonino con un noto programma gli sms scritti e ricevuti su PC, questi sono racchiusi singolarmente in files "*.vmg" e vengono aperti da un programma proprietario.
Ora, volendo trasporare questi su un sistema basato su Win98SE, codesto programma non vuole girare perch fatto unicamente per Win2000/XP.
Ho cercato in rete e nn esiste nulla per Win98.La soluzione farmi un programmino apposta.

Aprendo sti benedetti files con NotePad la situazione semplice, tutto racchiuso in un'unica riga fatta cos:

BEGIN:VMSG
VERSION:1.1
X-IRMC-STATUS:READ
X-IRMC-BOX:INBOX
BEGIN:VCARD
VERSION:2.1
N:
TEL:numero di telefono
END:VCARD
BEGIN:VENV
BEGIN:VCARD
VERSION:2.1
N:
TEL:
END:VCARD
BEGIN:VENV
BEGIN:VBODY
Date: data ora
TESTO SMS
END:VBODY
END:VENV
END:VENV
END:VMSG


Bello, incollandolo qu me lo ha messo cos, dal blocco note, come gi detto tutto attaccato e su un'unica riga.

Forse questo il problema, aprendo sto file da C++ con ifstream e facendomi scrivere il contenuto dopo averlo messo in una char mi riporta solo il primo carattere!


Programma
#include <fstream>
#include <iostream>

using namespace std;


int main() {

ifstream sms("00020001.vmg"); //Apro il file
if(!sms) cerr << "Errore, file non trovato!"; //Imposto un controllo
char contenuto[100]; //Crea char
sms.getline(contenuto, 100); //riempo char con contenuto file
cout << contenuto << endl; //Stampo char

system("PAUSE");
return 0;
}

Risultato:
■B
Premere un tasto per continuare . . .

Mi sa che non normale questo file...idee???


Altra domanda ( per il passo successivo ) : come faccio a crearmi un elendo dei files in una directory per poi poterli leggere uno ad uno col programma di cui sopra?
:stordita:


Per oggi basta! Ciauz :zizi:

netarrow
17-03-2005, 18:45
Prova questo:



#include <iostream>
#include <fstream>
#include <string>

using namespace std;


int main() {

ifstream f("file.vmg");
string str;

while(getline(f, str)) {
cout << str << endl;
}
return 0;
}


copiando il contenuto che hai postato in un file mi funziona

per la seconda domanda, che io sappia il C++ ANSI non ha una funzione per ottenere la lista dei files in modo standard; nonostante tutto mi sembra che qualcuno, mi sembra un moderatore, abbia postato una funzione che lo faceva, magari la tiri fuori.

:ciauz:

Angler84
18-03-2005, 20:44
Originariamente inviato da netarrow
Prova questo:

copiando il contenuto che hai postato in un file mi funziona

per la seconda domanda, che io sappia il C++ ANSI non ha una funzione per ottenere la lista dei files in modo standard; nonostante tutto mi sembra che qualcuno, mi sembra un moderatore, abbia postato una funzione che lo faceva, magari la tiri fuori.

:ciauz:

Mitico!! Ora scheggia che una bellezza!!
E' proprio quel file che un po' balordo e devo trattarlo in modo un po' strambo!


Ora sto scrivendo il codice per estrarre i dati che mi interessano e sembra andare tutto bene!


Mi sembra di aver letto, quando ho cercato nel forum prima di aprire una richiesta di aiuto, di una cosa come dici tu ma avevo lasciato perdere perch era secondaria :D

Pi tardi la vado a ripescare!

DevC++ torno da te :sbav:

Angler84
18-03-2005, 21:22
E' spuntato un problemino:

come faccio a trovare la lunghezza di una string? :confused:

strlen, lenght stringLen ( se nn ricordo male il nome ) non vanno.. danno 0 o quando va bene 1!

Non mi accetta nemmeno di confrontarlo con '\0'!

Ah c' un sacco di spazi nella stringa, precisamente uno tra ogni carattere...

netarrow
18-03-2005, 21:24
se fai



int size = str.size();


ottieni la lunghezza dell'oggetto string.

:ciauz:

Angler84
18-03-2005, 21:36
Perfetto! Ne sai davvero troppe!
Ecco il risultato di un'oretta di prove!
Ero un po' arruginito :stordita:

http://net.supereva.it/angler84/sms.JPG



Ora manca solo che si peschi da solo i file e ho finito! :unz:




PS: Si, l'ho mandato davvero ad una amica :fighet:

Angler84
18-03-2005, 21:56
Ho trovato il post dove indica come fare ma:

-Nella prima indicazione c' codice che a me, reduce da uno scarso esame di Fond. Info. A", incomprensibile.. :(
-Nella seconda non riesco a combilarlo xk una specie di catena...richiama funzioni su un altro sorgente..che a sua volta ne chiama altre... :(


Pazienza!
Per ora mi accontento di modificare il mio per far immettere il nome del file da cui prendere i dati ;)

Grazie mille ancora!!

Ciao! :)

Johnny_Depp
19-03-2005, 08:51
puoi utilizzare le API di windows... o il caro e vecchio DOS:
(p.s. gli esempi sono per il C... basta fare un porting) http://forum.html.it/forum/showthread.php?s=&threadid=555610&highlight=dir

Angler84
19-03-2005, 13:50
Originariamente inviato da Johnny_Depp
puoi utilizzare le API di windows... o il caro e vecchio DOS:
(p.s. gli esempi sono per il C... basta fare un porting) http://forum.html.it/forum/showthread.php?s=&threadid=555610&highlight=dir

Ho usato il caro e vecchio DOS!Non sapevo di questa possbiliti.... :sbav:

Ora perfetto!! :fighet:

Grazie ragazzi! :unz:



P.S.: Se serve metto a disposizione il sorgente senza problemi. :)

Angler84
19-03-2005, 13:55
Sempre a chi interessato, ecco uno screenshot del funzionamento del programma:

http://net.supereva.it/angler84/sms2.JPG

Loading