ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Tmemo. Вопрос.
  #1  
Старый 25.11.2006, 11:53
Ch3ck
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме:
5301021

Репутация: 1879


По умолчанию Tmemo. Вопрос.

Так, народ, вобщем в делфи я не силён, но очень понадобилась такая вещь(как бы смешно не звучало):
Вообщем есть это поле мемо. Нужно сделать так, чтобы в одной строке было не более 70 символов, а общее кол-во символов в мемо не превышало 1000. Вот так.
Подскажите.
 
Ответить с цитированием

  #2  
Старый 25.11.2006, 12:46
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

Свойство MaxLength - общее количество символов(сюда кстати входят и символы перехода на новую строку).
Код:
procedure TForm1.Memo1Change(Sender: TObject);
var i:integer;
s:string;
begin
for i:=0 to memo1.Lines.Count do
  begin
  s:=memo1.Lines.Strings[i];
  if length(s)>70 then begin
  delete(s,71,length(s)-70);
  memo1.Lines.Strings[i]:=s;
  end;
  end;

end;

Последний раз редактировалось TaNkist; 25.11.2006 в 13:11..
 
Ответить с цитированием

  #3  
Старый 25.11.2006, 13:01
Deem3n®
Постоянный
Регистрация: 19.09.2005
Сообщений: 408
Провел на форуме:
3730496

Репутация: 519
По умолчанию

Код:
procedure TForm1.ButtonMdaClick(Sender: TObject);
var
  Buffer: array [0..70] of char;
  i: integer;
begin
  for i := 0 to Memo1.Lines.Count do
  begin
    StrLCopy(Buffer, PChar(Memo1.Lines[i]), 70);
    Memo1.Lines[i] := Buffer;
  end;

  while (StrLen(PChar(Memo1.Text)) > 1000) do
     Memo1.Lines.Delete(Memo1.Lines.Count - 1);
end;
Должно работать
 
Ответить с цитированием

  #4  
Старый 10.12.2006, 16:00
Ch3ck
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме:
5301021

Репутация: 1879


По умолчанию

Здравствуйте всем.
Есть программа на подобие блокнота.
Возник вот такой вопрос:
1) Горячими клавишами поочередно выделять каждое слово.
2) Горячими клавишами поочередно выделять каждое предложение.
Как бы такое организовать?!
 
Ответить с цитированием

  #5  
Старый 10.12.2006, 17:59
a1nt
Участник форума
Регистрация: 16.12.2005
Сообщений: 146
Провел на форуме:
573934

Репутация: 114
По умолчанию

Цитата:
const
KEY_CTRL_B = 02;
KEY_CTRL_I = 9;
KEY_CTRL_S = 19;
KEY_CTRL_U = 21;
Вот тебе константы с кодаме некоторых горячих клавиш, которые передаются в varKey при событии OnKeyPress в Delphi.

Еще. Насколько я знаю средствами VCL нельзя вызвать выделение текста в классе TMemo (поправьте если не прав. Выход - WinAPI, я в нем не очень силен, но если что-нибудь придумаю, напишу.

А вот насчет слов, это просто. Я тут набросал...
Этот код соберет весь список слов из Memo1 и запихнет их в ListBox1, я думаю, ты без труда адаптируешь этот код для себя, тем более откомментировал по самое не хочу.

Код:
var i:integer;
h,buf:String;
begin
For i:= 0 to Memo1.Lines.Count-1 do begin //Цикл перебора строк
h:=Memo1.Lines[i];
while(not (h='')) do begin //Цикл перебор слов (пока строка не закончится)
//Здесь можно сделать счетчик, чтобы выделять определенное слово
if pos(' ',h)>0 then begin  
buf:=copy(h,1,pos(' ',h)); 
delete(buf,length(buf),1); //Пробел перед след. словом нам тут точно не нужен
end else buf:=h; //Ну а ежели в строке только одно слово, то так и выделяем
delete(h,1,length(buf)+1); //Удаляем найденное слово из оставшейся строки, чтобы второе стало первым.
ListBox1.Items.Add(buf); //Здесь находится обработка найденного слова, в моем коде оно добавляется в ListBox1, ты конечно можешь выделять, как хочешь.
end;
end;
 
Ответить с цитированием

  #6  
Старый 10.12.2006, 18:16
a1nt
Участник форума
Регистрация: 16.12.2005
Сообщений: 146
Провел на форуме:
573934

Репутация: 114
По умолчанию

Цитата:
Еще. Насколько я знаю средствами VCL нельзя вызвать выделение текста в классе TMemo (поправьте если не прав. Выход - WinAPI, я в нем не очень силен, но если что-нибудь придумаю, напишу.
Ой, извини дружище что-то я забыл совсем.
Элементарно.
У Memo1.HideSelection:=false;
А потом:
Memo1.SelStart:=0; // Начало выделения
Memo1.SelLength:=15; // Кол-во символов для выделения
И все выделяется
 
Ответить с цитированием

  #7  
Старый 10.12.2006, 18:44
a1nt
Участник форума
Регистрация: 16.12.2005
Сообщений: 146
Провел на форуме:
573934

Репутация: 114
По умолчанию

Собственно, вот такой кусок кода тебе нужен:
Цитата:
...
delete(h,1,length(buf)+1);
Memo1.SelStart:=pos(buf,Memo1.Lines[i])-1; {раньше было про ListBox1 здесь}
Memo1.SelLength:=length(buf);
ShowMessage(buf); //А это только чтобы ты мог увидеть как выбегает выделение, как довести до ума - ниже.
...
Нужно еще реализовать подсчет слов, так как каждый запуск нашей процедуры должен перебирать все варианты, но выделять ЛИШЬ один раз и тогда необходимсоть последней строки кода из этого поста отпадет. Для это каждое сохранения должно добавлять 1 к какой-нибудь переменной, и если значение этой переменной совпадет с номером необходимого слова, то... в- общем так
Код:
...
delete(h,1,length(buf)+1);
If wordnum=needword then begin
Memo1.SelStart:=pos(buf,Memo1.Lines[i])-1;
Memo1.SelLength:=length(buf);
needword:=needword+1; (нам ведь при следующем запуске нужно следующее слово, не так ли?)
end;
end;(конец процедуры)
Вот так вот.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по InetCrack !! :) Nice PHP, PERL, MySQL, JavaScript 12 23.07.2008 17:51
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48
Вопрос к ОТЦАМ!!!!!! Xalegi Болталка 8 22.12.2004 01:36
Вопрос по брутфорсу _at_ Чаты 0 21.12.2004 19:15



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ