получить хэндл окна (скажем, по заголовку или по типу), смотри в сторону функций FindWindow, GetWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows потом получить хэндл нужного контрола с окна, ну а дальше getwindowtext, поправить его как тебе надо, и setwindowtext
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Вопрос 1: как в дельфи запретить ресайз формы? Вопрос 2: как в дельфи прикрепить элементы к сетке, если на "align to grid" он не реагирует Вопрос 3: почему в консоли не работает HideCarret(GetActiveWindow)?
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Member
Статус: Не в сети Регистрация: 27.05.2006 Откуда: Saransk
Psilon хочется увидеть нек. часть кода где ты вызываешь эту функцию. Если передать в нее параметр "0" то какая будет реакция? Попробуй выключить встроенные прерывания в Delphi. П.С. Как я понял getactivewindow должен в себе хранить описание окна владеющего фокусом?
_________________ Я рвусь от новостей так быстро мир стал другой.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
mp3corp Я пробовал и 0, и 1, и getactive, и чего только не пробовал, результата нет. Кусок кода не особо нужен, можно считать его первой строчкой консольной программы
Код:
begin HideCaret(GetActiveWindow); .... end.
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Помогите с процедуркой. Почему-то компилятор игнорирует строчку кода и не добавляет указатели в список:
Код:
procedure TForm1.SortButtonClick(Sender: TObject); Type THeader=^integer; Var PList:TList; PHeader:Theader; i,n,LineLength:integer; BufString:String; begin MemoSort.Lines[0]:=''; PList:=TList.Create; i:=0; n:=0; PHeader:=nil; LineLength:=Length(memoX.Lines[0]); while n<LineLength do begin inc(i); if (i mod 10)=1 then PList.Capacity:=PList.Capacity+10; BufString:=''; while MemoX.Lines[0][n]<>#13 do begin inc(n); if NOT(Char(MemoX.Lines[0][n]) in ['0'..'9']) then break; BufString:=BufString+MemoX.Lines[0][n]; end; New(PHeader); PHeader^:=StrToInt(BufString); PList.Add(PHeader); end; for n := 0 to i-1 do MemoSort.Lines[0]:=MemoSort.Lines[0]+IntToStr(THeader(PList[i])^)+' '; end;
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Member
Статус: Не в сети Регистрация: 15.08.2004 Откуда: Красноярск
Psilon, а это вообще компонент, размещенный на форме в design-time? Или создаётся в run-time? Если первое, то так делать нельзя, наверное. Если второе, то Create(nil) сойдёт.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Я разобрался. Проблема была в том, что я обнулял строки. Если делать присваивание не пустой строке '', а пробелу ' ', то обнуление происходит примерно в 5 раз быстрее... Что за баг фича, я не знаю, но факт. Вместо 15 секунд обнуление длилось 1..3.
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Member
Статус: Не в сети Регистрация: 16.06.2007 Откуда: Kharkov
Пытаюсь разобраться со списками (TList), никогда их раньше не использовал. Создал список (глобальная переменная типа TList), и в обработчике FormCreate пытаюсь занести в него указатель на целое число. Потом из списка извлечь указатель и вывести значение, на которое указывает указатель:
Код:
procedure TMainForm.FormCreate(Sender: TObject); var i1: Integer; p, px: ^Integer; begin Lst := TList.Create; i1 := 124; // число, которое будем выводить p := @i1; Lst.Add(p);
px := Lst.Items[0]; // получили указатель из списка MM.Lines.Add(IntToStr(px^)); end;
Все работает. Но если обращаться к списку из любой-другой процедуры, например из FormClick, получается какая-то ерунда, вместо правильного значения 124 выводится 0:
Код:
procedure TMainForm.FormClick(Sender: TObject); var p: ^Integer; begin p := Lst.Items[0]; ShowMessage((IntToStr(p^))); end;
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Alex_VS посмотри в отладчике, чему у тебя равна переменная в строке p:= ... У меня тоже вопрос: Простая задача, есть процедура вида
Код:
type TPtr=^TPList; TPList=Record Value:Integer; Next:TPtr; Prev:TPtr; end;
<...>
Procedure MergeSort(var PFirst: TPtr); <...>
нужно передать параметр в процедуру и извлечь результат (в принципе можно и функцию запилить), но все это нужно сделать в отдельном потоке. Какие есть идеи?
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Хотел спросить насчет книги Фленова Библия Делфи. Как по вашему это хорошая книга? А то что-то читаю уже страницу 110 наверное и не видел не одного нормального примера - сплошная теория, она в голове не очень то задерживается, вот к примеру когда изучал Паскаль по книгам Фаронова, там с первых же страниц объяснение - пример, а тут теория, теория, теория...
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Одна из лучших книг. Но я бы не советовал учить дельфи в принципе: лучше уж С#, в крайнем случае С/С++. Самого в универе заставляли учить Паскаль и Дельфи, что сказать, насколько Дельфи продвинутей паскаля, настолько шарп лучше дельфи (и даже больше, за счет документации). ПОэтому, если вы учите программирование "Для себя", а не потому что в школе/универе заставляют, советую обратиться к свету, то есть шарпу Из книжек: та же Библия C#, но более подходящая - Шилдт C# 4.0 полное руководство.
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения