int setProgLineResult(int line, DWORD result) //
{
char buf[17];
sprintf(buf, "%X", result); //打印
string str(buf);
return setProgLineResult(line, str); //使用字符串設置行
}
int setProgLineResultFloat(int line, long double result) {
char buf[128];
sprintf(buf, "%lf", result);
string str(buf);
while (true)
{
if (str.length() <= 3) break; //如果長度小於等於3,中斷
if (str[str.length()-1] == '0') //如果最後一個字符為0
str.erase(str.length()-1,1); //清除
else
break; //中斷
}
return setProgLineResult(line, str); //設置行
}
int setProgLineResult(int line, string& result) //設置行返回值
{
if (line>ollylang->script.size()) return 0; //參數大於腳本大小,返回0
char values[PROG_VAL_LEN];
t_wndprog_data *ppl;
ppl = (t_wndprog_data *) Getsortedbyselection(&(ollylang->wndProg.data),line); //獲取分類數據
if (ppl->type & PROG_TYPE_LABEL) //類型為標籤,返回失敗
return false;
strncpy(ppl->result,CleanString(result).c_str(),PROG_RES_LEN);
if (strcmp(ppl->values,""))
{
if (ppl->values[0] != ',')
{
strcpy(values,ppl->values);
strncpy(&ppl->values[1],values,PROG_VAL_LEN-2);
ppl->values[0]=',';
}
}
return true;
}
void clearProgLines()
{
ollylang->pgr_scriptpos=0;
if (!ollylang->tProgLines.empty()) //如果行不為空
{
Deletesorteddatarange(&(ollylang->wndProg.data),0,0xffffffff); //傷處分類數據域
ollylang->tProgLines.clear(); //清除行
InvalidateProgWindow();
}
}
void resetProgLines()
{
vector<t_wndprog_data>::iterator iter=ollylang->tProgLines.begin(); //使用容器vector 定義一個開始
int line=0;
t_wndprog_data *ppl;
while (iter!=ollylang->tProgLines.end()) //黨不等於結束時
{
ppl = (t_wndprog_data *) Getsortedbyselection(&(ollylang->wndProg.data),line); //獲取分類數據
//reset executed color
if ((ppl->type & PROG_TYPE_COMMAND)) //忽略標籤和註釋ignore labels/comments
ppl->type &= PROG_TYPE_COMMAND;
strcpy(ppl->result,"");
strcpy(ppl->values,"");
//ppl->jumpto = 0;
ppl->eip = 0;
line++;
iter++;
}
InvalidateProgWindow();
}
int getProgLineType(int line) //獲取行類型
{
t_wndprog_data *ppl;
ppl = (t_wndprog_data *) Getsortedbyselection(&(ollylang->wndProg.data),line);
if (ppl==NULL)
return false;
return (ppl->type & PROG_TYPE);
}
int setProgLineAttr(int line,int type)
{
t_wndprog_data *ppl;
ppl = (t_wndprog_data *) Getsortedbyselection(&(ollylang->wndProg.data),line);
if (ppl==NULL)
return false;
ppl->type &= PROG_TYPE;
ppl->type |= type;
return true;
}
int isProgLineComment(int line)
{
t_wndprog_data *ppl;
ppl = (t_wndprog_data *) Getsortedbyselection(&(ollylang->wndProg.data),line);
if (ppl==NULL)
return false;
if (ppl->type & PROG_TYPE_COMMENT)
{
return true;
}
return false;
}
int isProgLineBP(int line)
{
t_wndprog_data *ppl;
ppl = (t_wndprog_data *) Getsortedbyselection(&(ollylang->wndProg.data),line);
if (ppl==NULL)
return false;
if (ppl->pause && ollylang->wndProg.hw)
{
focusonstop=4;
}
return ppl->pause;
}
没有评论:
发表评论