Jump to content
Nokioteca Forum

Andrea993

Developer
  • Contenuti

    288
  • Data iscrizione

  • Ultimo accesso

  • Giorni Vinti

    1

Messaggi pubblicati da Andrea993

  1. Ciao a tutti.

    Sto cercando di creare un lib con carbide, ma nonostante compili il mio progetto non crea il file .lib.

    Ho scelto come tipo di progetto "basic static library(LIB)".

    Se compilo con GCCE compila ma non succede ninete, se compilo con WINSCM oltre a compilare mi da questi warning, ma del lib nessuna traccia:

    WARNING: Library statements (DEBUGLIBRARY, LIBRARY or STATICLIBRARY) not permitted with TARGETTYPE LIB.
    WARNING: Library statements (DEBUGLIBRARY, LIBRARY or STATICLIBRARY) ignored.

    Ho anche provato a inserire nell'mmp "EXPORTUNFROZEN" anche se non ho capito bene a cosa serva.

    Da quello che ho capito fa sì che il lib non venga chiuso mentre il programma è in esecuzione giusto?

  2. Siccome il disco D permette un facile accesso condiviso in ram ho pensato di condividere i dati tra 2 programmi inserendoci un file.

    Ho necessità di inserire i byte del file in un TBufC8, ma non voglio dover leggere l'intero file e copiarlo in un buffer, vorrei poter vedere il file direttamente come buffer.

    Come posso fare?

  3. Grazie mille per tutto l'aiuto che mi stai dando.

    Comunque io ho queste voci e seleziono l'ultima

    immaginexh.jpg

    EDIT: RISOLTO

    Il problema derivava dal fatto che nel file mmp avevo inserito le librerie aggiuntive in "static libraries", andavano invece messe in "libraries".

    EDIT 2:

    Nonostante abbia compilato non riesco a lanciare l'eseguibile che mi ha creato da cellulare, l'ho semplicemente copiato in C:\sys\bin e ho tentato di lanciarlo

  4. Ah io credevo che TDes e TDesC fossero due classi a parte almeno da come lo spiega il workbook.

    Sì, so cosa significa & in C\C++ ma non l'avevo mai visto usato nelle definizioni di funzione, comunque se passo ad una funzione "paperino" che richiede la & in input, l'oggetto "pippo":

    ...

    {

    ...

    classe1 pippo;

    paperino(pippo)

    ...

    }

    paperino(classe1& pippo)

    {

    ...

    pippo.x=2;

    ...

    }

    dopo come mai se pippo è un puntatore ci posso accedere comunque con il ".", anzichè con "->"??

    I progetti console sono identici ai progetti con GUI... compili per "gcce urel" e distribuisci l'eseguibile esattamente come faresti per un progetto GUI.

    Si avevo provato però mi da' questo errore: \Nokia\devices\S60_3rd_FP2_SDK_v1.1\epoc32\release\ARMV5\urel\efsrv.lib: No such file or directory

  5. Sì sì certo, anche il mio codice faceva una copia elemento per elemento ;)

    Comunque l'esigenza deriva dal fatto che "Printf()" e "Write()" richiedono in input const TDesC &aDes. (Che poi l'uso di quel & nella definizione delle funzioni non mi è molto chiaro, è come se fosse puntatore ma ti basta passargli l'oggetto per valore e lui da solo si prende il puntatore anche se poi lo vedi come fosse un oggetto e non puntatore ad oggetto??)

    Invece che tu sappia i progetti console come faccio a compilarli per symbian, mi basta avere l'exe, visto che voglio inserirlo manualmente in C:\sys\bin o magari flashando anche in (rofs2)\sis\bin.

  6. Sì ma come avrei dovuto fare per convertire un TBuf16 in TBufC16 se non senza allocare un nuovo TBufC16 per ogni TBuf16?

    Altrimenti avrei dovuto inserire una linea di questo tipo TBufC16 righeC[30]; , e la cosa sprecherebbe memoria inutilmente.

    Al massimo ho provato così, però c'è comunque uno spreco di memoria dovuto all'allocamento di bufc e l'operazione bufc=riga; che è un lavoro non trascurabile.

    TBufC<31> bufc;
    
    for (TInt i=0;i<=nriga;i++)
    	{
    		bufc=riga[i];
    		console->Write(bufc);			
    	}
    

  7. Grazie mille ti sei spiegato perfettamente ora è molto più chiaro.

    Invece (ELeave) lo devo usare ogni volta che alloco con new?

    Ho trasformato questo codice "grezzo" che comunque funziona:

    TBufC<31>* bufc;
    
    for (TInt i=0;i<=nriga;i++)
    {
    bufc= new TBufC<31>(riga[i]);
    console->Write(*bufc);
           delete bufc;
    }		

    In questo, che non funziona, in quanto non stampa.

    TBufC<31>* bufc;
    
    for (TInt i=0;i<=nriga;i++)
    {
    bufc= new (ELeave) TBufC<31>(riga[i]);
    CleanupStack::PushL(bufc);
    console->Write(*bufc);
    CleanupStack::PopAndDestroy(bufc);
    }					
    
    

    Dove ho sbagliato e perchè?

  8. In Symbian C++ ci sono le funzioni L: che possono lasciare, le funzioni D che eliminano un oggetto, le funzioni C che inseriscono qualcosa nel CleanupStack.

    Il problema è che se una funzione puà lasciare (L) non dovrebbe comunque inserire gli oggetti nel CleanupStack? Percui come differiscono dalle C.

    Poi ho visto che alcune funzioni C dopo averle lanciate bisogna fare il pop di qualcosa nel CleanupStack, come faccio a sapere se e quanti pop devo fare?

    Altra cosa nel CleanupStack devo inserire solo gli oggetti o anche variabili o altro?

  9. Un ultima cosa, per stampare sul console le linee è giusto

    for (TInt i=0;i<=nriga;i++)
    {			     
    console->Printf(_L("%S\n"),&riga[i]);		
    }

    Perchè mi stampa quadratini al posto dei caratteri :mumble:

    EDIT: Risolto usando console->Write e convertendo in TBufC16

  10. Oh mio dio ahahahah ero arrivato addiruttura a scrivre

    char* testo2=(char*)testo.Ptr();

    corrente=testo2;

    e non capivo come potesse non andare

    ahahah che scemo, perchè prima il for era un while, visto che c'era una altra guardia.... :doh: :doh: :doh:

  11. Ah, TChar è unicode?? Non lo sapevo.

    Ho verificato testo ed è corretto, legge tutto il file. Il problema è nello scorrimento di testo.

    Ho provato con TUint8 e anche con char ma il risultato è lo stesso.

    Ho anche provato a fare

    corrente=(char)*(testo.Ptr()+i*sizeof(char));

    Ma il risultato è lo stesso.

  12. Grazie mille, ho modificvato tutto come da te indicato, non avevo messo la L finale perchè doveva essere una semplice prova, comunque grazie.

    Mi sono accorto di un'altra cosa strana, nel for, quando faccio corrente=(TChar) testo; corrente assume i valori di una lettera ogni due lettere presenti nel file ascii.

    Ad esempio se nel file c'è scritto "CIAO1" corrente assume i valori C,A,1.

    Come mai sta cosa? Il problema sta nella lettura del file o nello scorrimento di testo?

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy