stringlist

#ifndef _STRINGLIST_HPP_
#define _STRINGLIST_HPP_

#include "../global.hpp"
#include <typeinfo>
#include "../hpasutils.hpp"
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <algorithm>
enum TSeekOffset {soFromBeginning = 0, soFromCurrent = 1, soFromEnd = 2};

class TPersistent
{
private:
    void AssignError(TPersistent* Source);
protected:
    virtual void AssignTo(TPersistent* Dest);
    virtual TPersistent* GetOwner();
public:
    virtual ~TPersistent();
    virtual void Assign(TPersistent* Source);
    virtual string GetNamePath();
};

class TMemoryStream:public TPersistent
{
public:
    pByte Memory;
    int Position;
    int Size;
    void Clear();
    int Seek(const int step, TSeekOffset mode);
    void WriteBuffer(void* src, int len);
    void ReadBuffer(void* dst, int len);
    TMemoryStream();
    virtual ~TMemoryStream();
};

//{ TStrings class }
class TStringList:public TPersistent
{
protected:
    list<string> buf;
public:
    string seperator;
    int Add(const string s);
    void AddStrings(TStringList& AStrings);
    int Insert(const string s);
    int IndexOf(const string s);
    bool Delete(const string s);
    void Delete(const int index);
    void Clear();
    int Count();
    string Values(const string name);
    string Values(const string name,const string seperator);
    void SetValue(const string name, const string value);
    string ValueFromIndex(int index);
    string ValueFromIndex(int index, const string seperator);
    string Names(int index,const string seperator= "=");
    string Lines(int index);
    void SetLines(int index, const string s);
    bool SetLines(const string des,const string str);
    string ReadString(const string name, const string value);
    bool SaveToFile(const string filename);
    bool LoadFromFile(const string filename);
    string TimeFormate(void);
    string Text();
    void SaveToStream(TMemoryStream& m);
    void SetText(const string src, const string sep = "");
    void AssignTo(TStringList* Dest);
    TStringList();
    virtual ~TStringList();
};

extern void GetNets(TStringList& Nets);
extern void GetMACs(TStringList& MACs);
extern void GetIPs(TStringList& IPs);
extern string GetIP(const string if_name);
extern string GetMAC(const string if_name);
extern void Split(const string big, const string sep, TStringList& sl);

#endif /* HCLASSES_HPP_ */

时间: 2024-09-29 23:06:51

stringlist的相关文章

利用StringList对象来管理这些动态生成的对象

如果程序需要动态创建大量的对象,那么我们可以利用StringList对象来管理这些动态生成的对象.1.创建StringList对象:OBJ := TStringList.Create; 2.保存动态生成的对象:OBJ.AddObject('标识','对象名'); 3.调用生成的对象:(OBJ.Objects[序号/OBJ.IndexOf('标识')] as 对象类型).方法或属性或:对象类型(OBJ.Objects[序号/OBJ.IndexOf('标识')]).方法或属性 4.释放动态生成的对象

Delphi中stringlist分割字符串的用法

Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaText 2.Delimiter &DelimitedText 3.Names &Values &ValueFromIndex 先看第一个:CommaText.怎么用呢? const constr :String = 'aaa,bbb,ccc,ddd'; var strs :TStrin

Delphi中Stringlist的自定义排序(将函数地址做为参数)

近日,在编制一个程序过程,因为数据量较小,就使用了stringlist来暂存数据.在使用过程中,遇到了一个问题.Stringlist字符串列表的默认排序方法是按ASCII码的方式进行排序,如3,10,9排序时,结果为10,3,9.不符合程序的要求,于是尝试着使用字符串列表的自主义排序方法,这时需要传入一个function类的参数,因为习惯于使用PYTHON语言,所以直接编写民了一个按数值降序排列的排序函数,并将函数名传给了stringlistrr的CustomSort方法,结果提示:Incomp

Delphi Stringlist Delimiter如何区分TAB和空格

var st: TStrings; begin st := TStringList.Create; st.StrictDelimiter := True;//这个多少人用过? st.Delimiter := ' '; st.DelimitedText := '0 1 2';//用语言描述就是 [0][空格][1][TAB键][2] ShowMessage(st.Text);//你将看到和你想象中不同的结果!! st.Free; end; 要delphi2007+

delphi将字符串转换成stringlist

function StrToList(const sString, Token: string): TStringList;var sTmp: string; iPos: Integer; Toklen: Integer;begin Toklen := Length(Token); Result := TStringList.Create; sTmp := sString; iPos := Pos(Token, sTmp); while iPos <> 0 do begin Result.Ad

QT开发(二十七)——QT常用类(一)

QT开发(二十七)--QT常用类(一) 一.QString 1.QString简介 QString提供了Unicode编码的字符串,使用隐式共享技术来节省内存和不必要的数据拷贝,不必考虑跨平台的兼容性. QString类成员函数中除了 ascii().latin1().utf8().local8Bit()函数,其他所有的函数都是可重入的. 2.QString成员函数 QString::QString ( const QChar * unicode, int size ) QString::QSt

Java集合框架学习笔记

本文为学习笔记,学习课程为慕课网Java入门第三季中的集合框架部分,若需要研究文中的代码,可前往下载.http://www.imooc.com/learn/110 1. List(Collection子接口) 1.1 实例化 List list = new ArrayList(); ??List是一个接口,不可直接实例化,通常情况下ArrayList实现类进行实例化. 1.2 增 1.2.1 add(obj) ??直接将obj对象加入List末位. 1.2.2 add(i, obj) ??将ob

Java 中的语法糖

定义:指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会:但是这种语法对语言的功能并没有影响.Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是 泛型:ava的泛型只在源代码存在,只供编辑器检查使用,编译后的字节码文件已擦除了泛型类型 public static void main(String[] args) { List<String> stringList = new ArrayList<String&g

使用Scala基于词法单元的解析器定制EBNF范式文法解析

一.前言 近期在做Oracle迁移到Spark平台的项目上遇到了一些平台公式翻译为SparkSQL(on Hive)的需求,而Spark采用亲妈语言Scala进行开发.分析过大概需求过后,拟使用编译原理中的EBNF范式模式,进行基于词法的文法解析.于是拟采用传统的正则词法解析到EBNF文法解析的套路来实现,直到发现了StandardTokenParsers这个Scala基于词法单元的解析器类. 二.平台公式及翻译后的SparkSQL 平台公式的样子如下所示: 1 if(XX1_m001[D003