Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Memo и перевод строки

1.9K
29 августа 2004 года
ProgMaster
47 / / 29.08.2004
у меня memo не хочет понимать переводы строк....он вместо них ставит два прямых слэша - т.е. перевод строки....
Memo1->Lines->Add("\n\r");
Типа такого. А в дельфи вот так:
Memo1->Lines->Add(#13#10);

В работает прекрасно. Что я не так сделал ??
487
29 августа 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by ProgMaster
у меня memo не хочет понимать переводы строк....он вместо них ставит два прямых слэша - т.е. перевод строки....
Memo1->Lines->Add("\n\r");
Типа такого. А в дельфи вот так:
Memo1->Lines->Add(#13#10);

В работает прекрасно. Что я не так сделал ??



Вообще-то ни разу с таким глюком не сталкивался - но зачем такие сложности? Если ты сделаешь просто Memo1->Lines->Add(""); то получишь аналогичный результат. Метод Add собственно и предназначен для добавления строк с автоматическим переводом каретки :)

1.9K
29 августа 2004 года
ProgMaster
47 / / 29.08.2004
Цитата:
Originally posted by ddnh_bc


Вообще-то ни разу с таким глюком не сталкивался - но зачем такие сложности? Если ты сделаешь просто Memo1->Lines->Add(""); то получишь аналогичный результат. Метод Add собственно и предназначен для добавления строк с автоматическим переводом каретки :)


Просто я вначале в функции формирую строку. Даже несколько наборов строк, как раз с помощью "\n\r" делю их. А потом только лишь вставляю в Memo...так что такой способ не подходит...

487
29 августа 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by ProgMaster

Просто я вначале в функции формирую строку. Даже несколько наборов строк, как раз с помощью "\n\r" делю их. А потом только лишь вставляю в Memo...так что такой способ не подходит...



Попробуй все-таки Memo1->Lines->Add("string1\r\nstring2"); "\n\r" - неверная последовательность. А винда тупая как пробка. Поэтому у тебя и глюки

1.9K
29 августа 2004 года
ProgMaster
47 / / 29.08.2004
Цитата:
Originally posted by ddnh_bc


Попробуй все-таки Memo1->Lines->Add("string1\r\nstring2"); "\n\r" - неверная последовательность. А винда тупая как пробка. Поэтому у тебя и глюки


http://forum.codenet.ru/showthread.php?s=&threadid=18681 - вот здесь есть эта функция, тоже в моём посте. Там более понятно. Вообщем в этой функции, где я добавляю перевод каретки, возвращается строка, как раз которую в Memo->Lines->Add (...) я и вставляю. Посмотри, можешь быть что-нибудь придумаешь/додумаешь...А то я и не знаю как :(

487
29 августа 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by ProgMaster

http://forum.codenet.ru/showthread.php?s=&threadid=18681 - вот здесь есть эта функция, тоже в моём посте. Там более понятно. Вообщем в этой функции, где я добавляю перевод каретки, возвращается строка, как раз которую в Memo->Lines->Add (...) я и вставляю. Посмотри, можешь быть что-нибудь придумаешь/додумаешь...А то я и не знаю как :(



Уффф. На Паскале давно уже не писал и особо времени нету разбираться. Ты проще скажи - какой результат ты хочешь получить? Если ни разу не ошибся - тебе нужно бинарную последовательность определенной длины представить в виде шестнадцатеричного текстового представления разбитого на строки по 16 цифр?

1.9K
29 августа 2004 года
ProgMaster
47 / / 29.08.2004
Цитата:
Originally posted by ddnh_bc


Уффф. На Паскале давно уже не писал и особо времени нету разбираться. Ты проще скажи - какой результат ты хочешь получить? Если ни разу не ошибся - тебе нужно бинарную последовательность определенной длины представить в виде шестнадцатеричного текстового представления разбитого на строки по 16 цифр?


Да

487
29 августа 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by ProgMaster

Да



Попробуй так:

Код:
AnsiString __fastcall DumpData(BYTE *Buffer, DWORD len)
{
  int _line=0,_fdiv=0;
  AnsiString _result="";
  for (DWORD i=0;i<len;i++)
  {
    _result+=IntToHex(Buffer,2);
    _line=(_line+1)%0x10;
    if (!_line) {_result+="\r\n";_fdiv=0;}
    else
    {
      _fdiv=(_fdiv+1)%4;
      if (!_fdiv) _result+="-";
      else _result+=" ";
    }
  }
  return _result;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  BYTE dump[0x100];
  for (int i=0;i<0x100;i++) dump=i;
  Memo1->Lines->Add(DumpData(dump,0x100));
}
1.9K
29 августа 2004 года
ProgMaster
47 / / 29.08.2004
Цитата:
Originally posted by ddnh_bc


Попробуй так:

Код:
AnsiString __fastcall DumpData(BYTE *Buffer, DWORD len)
{
  int _line=0,_fdiv=0;
  AnsiString _result="";
  for (DWORD i=0;i<len;i++)
  {
    _result+=IntToHex(Buffer,2);
    _line=(_line+1)%0x10;
    if (!_line) {_result+="\r\n";_fdiv=0;}
    else
    {
      _fdiv=(_fdiv+1)%4;
      if (!_fdiv) _result+="-";
      else _result+=" ";
    }
  }
  return _result;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  BYTE dump[0x100];
  for (int i=0;i<0x100;i++) dump=i;
  Memo1->Lines->Add(DumpData(dump,0x100));
}


Нет, такой код мне не подайдёт. Что делает дамп: он берёт из реестра строку в уникоде, потом конвертить её в хекс, а из хексы в латиницу. Вот...может давай я тебе весь проект дам (он не большой), тогда тебе будет полегче понять что и как ???

487
29 августа 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by ProgMaster

Нет, такой код мне не подайдёт. Что делает дамп: он берёт из реестра строку в уникоде, потом конвертить её в хекс, а из хексы в латиницу. Вот...может давай я тебе весь проект дам (он не большой), тогда тебе будет полегче понять что и как ???



Давай - кинь проект. [email]begemot_cat@mail.ru[/email]

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог