|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
[C++]Sintassi struttura
Salve ragazzi,
sto programmando in C++ in ambiente Visual C++... volevo chiedervi il significato in questa struttura: struct FEReadTagsThreadPara { bool bFinish; bool bRunning; FEDM_ISCReader* m_pReader; HWND hwnd; FEReadTagsThreadPara(): bFinish(false), bRunning(false), m_pReader(NULL), hwnd (NULL){} }; dell'ultima dichiarazione. Questa struttura è definita in un header file, ed è richiamata mediante puntatore in un file .cpp! Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' il costruttore della struttura, in C++ le struct, al pari delle classi possono avere anche un costruttore.
Quello che appare dopo i due punti è la lista di inizializzazione del costruttore. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Grazie cionci,
e ti posso chiedere un'altra cosa, stavolta riguardante le classi? Io ho in un Header file questa classe e ti chiedo in particolare delle funzioni scritte in rosso...è normale che ne vengano dichiarate così tante nella stessa classe e con lo stesso nome, con l'unica differenza che cambi qualche parametro d'ingresso?: class FEDM_ISCReader : public FEDM_DataBase { // public functions public: FEDM_ISCReader(); // constructor virtual ~FEDM_ISCReader(); // destructor // main function for XML serialization virtual int Serialize(bool bRead, char* sFileName); #ifdef _FEDM_MFC_SUPPORT // for proprietary file-I/O virtual int Serialize(CArchive& ar, int iMemType); #endif // main communication function virtual int SendProtocol(UCHAR ucCmdByte); // set the port handle in reader object of FEISC // must be done before use of all other functions int SetPortHnd(int iPortHnd); int GetPortHnd(); int SetReaderType(UCHAR ucType); char* GetTagName(UCHAR ucTagType); // change the protocol type (STANDARD or ADVANCED) // STANDARD is preset int SetProtocolFrameSupport(UINT uiType); int GetProtocolFrameSupport(); // get the last protocol string (frame and data) int GetLastProt(char* sID, char* sProt); // get the last error code int GetLastError(); // get the last status byte int GetLastStatus(); // get error text int GetErrorText(char* cErrorText, int iErrorCode); // get status text int GetStatusText(char* cStatusText, UCHAR ucStatus); // function to find the baudrate and frame of reader virtual int FindBaudRate(bool* pStop = NULL, int iTimeout = 300, int iFrameSupport = 0); // get specific data from table int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, bool* bData); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, UCHAR* ucData); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, UCHAR* ucData, int iDataBufLen); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, UINT* uiData); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, __int64* i64Data); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, char* cData, int iDataBufLen); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, string& sData); #if defined(_FEDM_MFC_SUPPORT) || defined(__BORLANDC__) int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, CString& sData); #endif // set specific data in table int SetTableData(int iIdx, UINT uiTableID, UINTuiDataID, bool bData); int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, UCHAR ucData); int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, UCHAR* ucData, int iDataBufLen); int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, UINT uiData); int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, __int64 i64 Data); int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, string sData); #if defined(_FEDM_MFC_SUPPORT) || defined(__BORLANDC__) int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, CString sData); #endif // get data block from table int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, int iBlockNr, UCHAR* ucData, int iDataBufLen); int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, int iBlockNr, string& sData); #if defined(_FEDM_MFC_SUPPORT) || defined(__BORLANDC__) int GetTableData(int iIdx, UINT uiTableID, UINT uiDataID, int iBlockNr, CString& sData); #endif // set data block in table int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, int iBlockNr, UCHAR* ucData, int iDataBufLen); int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, int iBlockNr, string sData); #if defined(_FEDM_MFC_SUPPORT) || defined(__BORLANDC__) int SetTableData(int iIdx, UINT uiTableID, UINT uiDataID, int iBlockNr, CString sData); #endif // verify read/write-data block(s) in table int VerifyTableData(int iIdx, UINT uiTableID, int iBlockNr, int iBlockCnt); // copy complete byte arrays from source to destination inside a table // source/destination can be: FEDM_ISC_DATA_TxDB, FEDM_ISC_DATA_RxDB int CopyTableData(int iIdx, UINT uiTableID, int iSrcDataID, int iDstDataID); // get table-index of specific data from table int FindTableIndex(int iStartIdx, UINT uiTableID, UINT uiDataID, bool bData); int FindTableIndex(int iStartIdx, UINT uiTableID, UINT uiDataID, UCHAR ucData); int FindTableIndex(int iStartIdx, UINT uiTableID, UINT uiDataID, UINT uiData); int FindTableIndex(int iStartIdx, UINT uiTableID, UINT uiDataID, __int64 i64Data); int FindTableIndex(int iStartIdx, UINT uiTableID, UINT uiDataID, string sData); #if defined(_FEDM_MFC_SUPPORT) || defined(__BORLANDC__) int FindTableIndex(int iStartIdx, UINT uiTableID, UINT uiDataID, CString sData); #endif // set size of a table int SetTableSize(UINT uiTableID, int iSize); int SetTableSize(UINT uiTableID, int iSize, int iRxDB_BlockCount, int iRxDB_BlockSize, int iTxDB_BlockCount, int iTxDB_BlockSize); // get size of a table int GetTableSize(UINT uiTableID); // get length of valid data in a table int GetTableLength(UINT uiTableID); // set length of valid data in a table if the application has built the table int SetTableLength(UINT uiTableID, unsigned int uiLength); // reset length of valid data in a table int ResetTable(UINT uiTableID, UINT uiDataFlags=0); // protected functions protected: // save the last error or status byte in memory void SetLastError(int iError); int Get_0x72_OutputData(unsigned char ucOutN, UCHAR* pOutRec); // get data for [0xB0], [0xB1], [0xB2], [0xB3] iso command virtual int Get_0xB0_IsoTableData(UCHAR ucCmdByte, UCHAR* ucData); virtual int Get_0xB1_IsoTableData(UCHAR ucCmdByte, UCHAR* ucData); virtual int Get_0xB2_IsoTableData(UCHAR ucCmdByte, UCHAR* ucData); virtual int Get_0xB3_IsoTableData(UCHAR ucCmdByte, UCHAR* ucData); // get data for [0xB0][0x??] iso command virtual int Get_0xB0_0x24_IsoTableData(UCHAR* ucData); virtual int Get_0xB0_0x27_IsoTableData(UCHAR* ucData); virtual int Get_0xB0_0x29_IsoTableData(UCHAR* ucData); virtual int Get_0xB0_0xA1_IsoTableData(UCHAR* ucData); // get data for [0xB3][0x??] epc command virtual int Get_0xB3_0x24_IsoTableData(UCHAR* ucData); // save data in ISO-table after [0xB0], [0xB2] iso command virtual int Set_0xB0_IsoTableData(UCHAR* ucData, int iLen, int iStatusByte); virtual int Set_0xB2_IsoTableData(UCHAR* ucData, int iLen, int iStatusByte); // save data in ISO-table after [0xB0][0x??] iso command virtual int Set_0xB0_0x23_IsoTableData(UCHAR* ucData, int iLen); virtual int Set_0xB0_0x25_IsoTableData(UCHAR* ucData, int iLen); virtual int Set_0xB0_0x26_IsoTableData(UCHAR* ucData, int iLen); virtual int Set_0xB0_0x2B_IsoTableData(UCHAR* ucData, int iLen); virtual int Set_0xB0_0x2C_IsoTableData(UCHAR* ucData, int iLen); virtual int Set_0xB0_0xA0_IsoTableData(UCHAR* ucData, int iLen); virtual int Set_0xB2_0x2B_IsoTableData(UCHAR* ucData, int iLen); // save data in BRM-table after [0x21] or [0x22] read buffer virtual int SetBrmTableData(UCHAR ucMode, UCHAR* ucData); // save measurement data in CAD-table after [0x68] virtual int SetCADTableData(UCHAR ucCmd, long* ucData); virtual int SerializeIn(FEDM_XMLBase* xml, FEDM_XML_TREEITEM* root); virtual int SerializeOut(FEDM_XMLBase* xml, FEDM_XML_TREEITEM* root); // data members protected: // BRM-table for received data FEDM_BRMTAB_ARRAY m_BRMTable; // ISO-table for ISO Host Commands FEDM_ISOTAB_ARRAY m_ISOTable; // Channel Analyze Data table for received data FEDM_CADTable m_CADTable; unsigned int m_uiBRMTableLength; // length of valid data in BRM-table unsigned int m_uiISOTableLength; // length of valid data in ISO-table // for temporary protocol data UCHAR m_ucData[4100]; long m_nData[516]; }; Grazie. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo, è normale, il compilatore sceglierà la funzione corretta in base al tipo e alla quantità dei parametri.
Ultima modifica di cionci : 04-03-2008 alle 10:47. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Ah, grazie! Ho capito!
Non me le ricordo proprio più queste cose! Ma per caso sai anche come fare a capire da un progetto in Microsoft Visual Studio C++ 6.0 già compilato ed eseguito se questo è un progetto Win32 Application, Win32 Console, MFC AppWizard... Ti spiego il perchè: da un progetto che c'è in un SDK, con gli eseguibili e i codici, io devo estrapolare solo i file .cpp e .h (di alcuni solo alcune parti di codice) che mi servono e crearmene uno nuovo sulla base di questi, e con un'interfaccia modificata. Perciò vorrei sapere come si fa a sapere che tipo di progetto è, perchè ho intenzione di seguire questo procedimento: una volta visto qual è, ne creo uno nuovo dello stesso tipo e ci aggiungo i files che mi servono, e ne creo di nuovi in cui inserire le parti di codice estrapolati da quelli originali...dopodichè adatto l'interfaccia originale al mio progetto, compilo ed eseguo! Va bene questo procedimento? Ed esiste un modo per farlo? Perchè io avevo provato in questo modo: Avevo creato un nuovo progetto Win32Application ed avevo aggiunto alle cartelle header files e suorce files quelli che mi servivano...solo che quando vado a compilare...mi dice che alcuni header files (che sono quelli che non si trovano nella stessa cartella del progetto - così come nel progetto originale) non possono essere aperti, ed io non capisco il perchè. Mi potresti aiutare? Grazie |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se lanciandolo ti apre anche una console testuale allora è Win32 Console...se ha all'interno codice MFC allora è stata creato tramite uno dei wizard MFC, se usa API Win32 per l'interfaccia grafica o qualsiasi altro tipo di framework e non ha una console allora è una Win32 Application.
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Credo sia Win32 Application allora...quando compilo ed eseguo mi esce direttamente l'interfaccia grafica (tipo finestra windows).
Nel workspace ha 3 schede: ClassView, ResourceView e FileView. Nella prima ci sono le varie classi; Nella seconda 5 cartelle: Dialog, Icon, Menu, String Table, Version. Nella terza 4 cartelle: Source Files, Header Files, Resource Files e External Dependencies. Nella terza ci sono due file .ico e 1 .rc2! Nella prima, oltre ai file .cpp, ce n'è uno .rc che fa aprire la scheda Resource View quando si clicca sopra. Ps. cosa mi puoi dire invece riguardo al fatto che non mi vede alcuni Header files? io ho provato anke ad inserirli nella stessa cartella del progetto mas ugualmente non va! Grazie. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Nel mio caso i file .h erano fisicamente presenti nella cartella, ma per qualche ragione VisualStudio non li aveva annoverati nel suo file di progetto. E' bastato correggere quello, nello specifico nel mio caso: 1 - file di progetto (.vcproj) aperto con un editor di testo 2 - tra i tag <Files></Files> 3 - qui: Codice:
// inside .vcproj file... ... <Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl"> <File RelativePath="GFNEST.H"> </File> <File RelativePath="NPREP.H"> </File> </Filter> <Filter Name="Resource Files" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"> </Filter> ... Ciao |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Ciao Banryu,
gli header files erano già tutti elencati...mi son messo a vedere un po' se c'era qualcosa che non andava ma non ho trovato niente. e purtroppo ancora non riesce a vedere i mniei header files.... |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Sei sicuro che non dipenda da altro? Magari puoi andare nella cartella del progetto, e ti apri a mano ogni file di configurazione del progetto con un editor testuale; alcuni file saranno in formato binario, ma quelli testuali li puoi leggere e verificare che eventuali sezioni che abbiano a che fare con l'elencazione dei file sorgenti del progetto contengano tutti gli headers. Non so se in alternativa potresti creare ex-novo un progetto vuoto per poi importare tramite Visual Studio i sorgenti... in modo che VS ti ricrei i file di progetto in modo corretto, sempre ammesso che il problema dipenda da questo. |
|
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Quote:
non so! a me pare ke è quello ke ho fatto... ho creato proprio un progetto nuovo e da quì ho aggiunto tutti i file ke mi servivano..però non va!!! |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Capito, Grazie!
Cerco di fare quante più prove possibili e vedrò...se andrà bene posterò la soluzione qui...in caso contrario....che tristezza!!! |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:43.




















