#pragma once #include "command.h" #include "rcglobal.h" class CompareWin; class ReplaceOperRecords { public: RC_DIRECTION dir; int startPos; //开始位置 int srcEndPos;//原始结束位置 char* srcContents; //原始文字内容 int replaceLens;//替换长度 char* replaceContents;//替换内容 ReplaceOperRecords() :startPos(0), srcEndPos(0), srcContents(nullptr), replaceLens(0), replaceContents(nullptr) { } ~ReplaceOperRecords() { if (srcContents != nullptr) { delete[]srcContents; srcContents = nullptr; } if (replaceContents != nullptr) { delete[]replaceContents; replaceContents = nullptr; } } ReplaceOperRecords(const ReplaceOperRecords& other) = delete; }; class ReplaceCommand :public Command { public: ReplaceCommand(CompareWin* operWin); virtual ~ReplaceCommand(); virtual int getOperIndex()override; virtual void undo()override; virtual QString desc()override; void setDesc(QString v); void addRecord(ReplaceOperRecords* v); void setOperIndex(int v); private: QList m_record; CompareWin* m_operWin; int m_index; QString m_desc; ReplaceCommand(const ReplaceCommand& o) = delete; ReplaceCommand& operator=(const ReplaceCommand& o) = delete; };