diff --git a/DataTreeCore.cpp b/DataTreeCore.cpp index f80a6e3..32d2fec 100644 --- a/DataTreeCore.cpp +++ b/DataTreeCore.cpp @@ -554,6 +554,21 @@ const char * CDataTree::GetStr( TDataMember * BaseMember, const char * Path, int } //--------------------------------------------------------------------------- +const int CDataTree::GetLen( TDataMember * BaseMember, const char * Path ) +{ + TDataMember * Member; + + // Validate + if ((Member = GetMember( BaseMember, Path, false )) && + ((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) { + return Member->Len; + } + else { + return 0; + } +} +//--------------------------------------------------------------------------- + const long CDataTree::GetInt( TDataMember * BaseMember, const char * Path, long Default, bool Create, const char * Mask ) { TDataMember * Member; diff --git a/DataTreeCore.h b/DataTreeCore.h index 54dc1fe..30f8a87 100644 --- a/DataTreeCore.h +++ b/DataTreeCore.h @@ -73,6 +73,7 @@ public: const char * GetStr( TDataMember * BaseMember, const char * Path, const char * Default = NULL, bool Create = false ); const char * GetStr( TDataMember * BaseMember, const char * Path, int &Len, const char * Default = NULL, bool Create = false ); + const int GetLen( TDataMember * BaseMember, const char * Path ); const long GetInt( TDataMember * BaseMember, const char * Path, long Default = 0, bool Create = false, const char * Mask = NULL ); const double GetFloat( TDataMember * BaseMember, const char * Path, double Default = 0.0, bool Create = false, const char * Mask = NULL ); const bool GetBool( TDataMember * BaseMember, const char * Path, bool Default = false, bool Create = false ); diff --git a/FileCore.cpp b/FileCore.cpp index ecf681b..3716c8d 100644 --- a/FileCore.cpp +++ b/FileCore.cpp @@ -240,7 +240,7 @@ int CFileCore::WriteToFD( int FD, const char * Data, int Len ) //--------------------------------------------------------------------------- // Manual Data Input/Output -int CFileCore::Input( const char * ChannelName, const char * Data, int MaxLen ) +int CFileCore::Input( const char * ChannelName, const char * Data, int Len ) { TFileHandle * FileHandle = NULL; int BytesWritten = 0; @@ -249,8 +249,8 @@ int CFileCore::Input( const char * ChannelName, const char * Data, int MaxLen ) if (!ChannelName || !Data) { return 0; } - else if (MaxLen == -1) { - MaxLen = strlen( Data ); + else if (Len == -1) { + Len = strlen( Data ); }; // Get Channel @@ -262,7 +262,7 @@ int CFileCore::Input( const char * ChannelName, const char * Data, int MaxLen ) } // Log event - Log->Output( LogLevel, dlHigh, LogOutput, Data, MaxLen, "%s: Channel '%s' - IN:", Name, ChannelName ); + Log->Output( LogLevel, dlHigh, LogOutput, Data, Len, "%s: Channel '%s' - IN:", Name, ChannelName ); // Open file if (!OpenFile( FileHandle )) { @@ -270,7 +270,7 @@ int CFileCore::Input( const char * ChannelName, const char * Data, int MaxLen ) } // Handle Incoming data - BytesWritten = WriteToFD( FileHandle->FD, Data, MaxLen ); + BytesWritten = WriteToFD( FileHandle->FD, Data, Len ); SetStartTime( &(FileHandle->PersistTime) ); // Return processed bytes diff --git a/FileCore.h b/FileCore.h index 119344c..9e48122 100644 --- a/FileCore.h +++ b/FileCore.h @@ -68,7 +68,7 @@ public: virtual bool SetFilePersistence( TFileHandle * FileHandle, bool Persistent, int PersistTimeout ); // Data Input - virtual int Input( const char * ChannelName, const char * Data, int MaxLen = -1 ); + virtual int Input( const char * ChannelName, const char * Data, int Len = -1 ); // Processing data virtual bool Process();