Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.01.2011, 19:53   #21
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

GunSmoker, когда я начинаю с -1 он у меня некорректно выводит список.
там где 1 он у меня 3 а там где 3 у меня 1.. короче все путается... а при -2.. все правильно, но не запускает 0

Уважаемые программисты! Помогите разобраться ((( не могу понять в чем проблема ((
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 22.01.2011 в 21:18.
KWN, lnc вне форума
Старый 22.01.2011, 21:27   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сложного ничего нет
Код:
var i:TIniFile;a:Array[1..4] of TStringList;  k:integer;
begin
 i:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'file1.ini');
 a[1]:=TStringList.Create; i.ReadSections(a[1]);
 for k:=2 to 4 do begin
  a[k]:=TStringList.Create; i.ReadSectionValues(a[1][k-2],a[k]);
 end;

 for k:=0 to a[2].Count-1 do
  with ListView1.Items.Add do begin
   Caption:=a[2].Values[a[2].Names[k]];
   SubItems.Add(a[3].Values[a[3].Names[k]]);
   SubItems.Add(a[4].Values[a[4].Names[k]]);
    RegHotKey(TextToHotKey(HotKey, LOCALIZED_KEYNAMES), k);

  end;
 i.Free;
end;
I'm learning to live...
Stilet вне форума
Старый 22.01.2011, 22:19   #23
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

Stilet

Код:
Caption := a[2].Values[a[2].Names[k]];
SubItems.Add(a[3].Values[a[3].Names[k]]);
RegHotKey(TextToHotKey(a[3].Values[a[3].Names[k]], LOCALIZED_KEYNAMES), k);
снова - Не ровно ((

там где 1 = 2

сделал так

Код:
RegHotKey(TextToHotKey(a[3].Values[a[3].Names[k]], LOCALIZED_KEYNAMES), k-1);
все работает. но опять же 0 не запускает (((
вообщем вернулись

вот компонент ValueListEditor1 начинает с 1
может его стоит использовать? но вот как?! а то у меня все через жо-пу!

ПОМОГИТЕ, УВАЖАЕМЫЕ ЭКСПЕРТЫ
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 26.02.2011 в 11:02.
KWN, lnc вне форума
Старый 24.01.2011, 12:01   #24
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Что такое
idkey: Integer;
idkey1: array of Integer;
function TextToHotKey ...
?

Ибо сабака зарыта не в HotKeyLinkShow, а в RegHotKey.

P.S.: HotKeyLinkShow должен выглядеть так
Код:
var
  i, j: Integer;
  Hotkey, s: String;
  ini: TIniFile;
begin
  ini := TIniFile.Create(ExtractFilePath (Application.ExeName) + 'KWN.ini');
  j := ini.ReadInteger('Main','Count', 0);
  for i := 1 to j do begin
    s := ini.ReadString ('Address', IntToStr(i), '');
    Hotkey := ini.ReadString('Promptness keys', IntToStr(i), '');
    if (s <> '') and (hotkey <> '') then begin
      with ListView1.Items.Add do begin
        Caption := s;
        SubItems.Add (Hotkey);
        ImageIndex := 28;
      end;
      RegHotKey (TextToHotKey(HotKey, LOCALIZED_KEYNAMES), i);
    end;
  end;
end;

Последний раз редактировалось Sibedir; 24.01.2011 в 12:05.
Sibedir вне форума
Старый 24.01.2011, 13:46   #25
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

idkey-индификатор

а насчет твоего кода

я исправил j := ini.ReadInteger('Main','Count', 0);
на j := ini.ReadInteger('Number','1', 0);

упаковывает нормально! но ТЕПЕРЬ СОВСЕМ НЕ РАБОТАЕТ!!! при нажати клавиши. выползает критическая обишка! ((

ВЫРУЧАЙТЕ!!!!!!!!!!!!!!!!!

RegHotKey (TextToHotKey(HotKey, LOCALIZED_KEYNAMES), i-2)

вот так вот четко! но только первый не работает ((( то есть 0
а если i-1 то криво! (((

выручайте (((((
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 26.02.2011 в 11:02.
KWN, lnc вне форума
Старый 24.01.2011, 15:49   #26
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
idkey-индификатор
А-а-а. Ну так то оно все понятно стало

Цитата:
вот так вот четко! но только первый не работает ((( то есть 0
а если i-1 то криво! (((
Еще раз. Наверное, последний.
Сделай HotKeyLinkShow как я сказал и оставь его в покое. Нужно править RegHotKey.
Что такое
idkey: Integer;
idkey1: array of Integer;
function TextToHotKey ...
?
Поясни подробно, что это и с чем это едят. Давай код функции. Покажи код, где используется idkey и idkey1. Или лучше объясни зачем делаешь
Код:
idkey:=id+idkey;
UnRegisterHotKey(Application.MainForm.Handle,idkey);
setlength(idkey1,length(idkey1)+1);
idkey1[id]:=idkey;
Я так понимаю, у тебя есть еще зарезервированные HotKey. И эти новые идут с номером = кол-во старых + номер нового. Мне вообще кажется странным жесткое присваивание номера. Это не вяжется с твоим же хранением их в массиве.
И вообще, зачем сохраняешь в массив HotKey'ки из ini-файла. Мне кажется ты это как-то странно делаешь. Если регистрируешь, скажем 10, а там их только 2, то массив увеличивается, и становится непонятным какой id у HotKey'ов с 2 по 9. Остается большая дыра для ошибок программы.
Короче. Рекомендую для начала избавится от idkey и idkey1. Какбудто у тебя есть только HotKey'ки из ini-файла. Довести до ума их регистрацию. Потом добавить сохранение в массив. Довести до ума и его. А потом уже idkey:=id+idkey.

P.S.: Лучше всего, выреж из своего проекта все, что относится к данной проблеме и выложи сюда. Так, чтобы мы имели рабочий проект (можно было сразу открыть) с этой самой проблемой.
Sibedir вне форума
Старый 24.01.2011, 19:06   #27
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

Код:
begin
k:=1;
while (k<=length(idkey1)) do
 begin
 if idkey1[k-1]=i then
   begin
     break;
  end;
k:=k+1;
end;
end;
вот, продолжение..
можно сказать что оно основное!

есть идеи?
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 26.02.2011 в 11:04.
KWN, lnc вне форума
Старый 25.01.2011, 20:12   #28
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от KWN, lnc Посмотреть сообщение
Код:
begin
k:=1;
while (k<=length(idkey1)) do
 begin
 if idkey1[k-1]=i then
   begin
     break;
  end;
k:=k+1;
end;
end;
вот, продолжение..
можно сказать что оно основное!
Понятия не имею о чем речь, либо из топика ясно что дело дрянь, а жевать такой вопрос на стольких страницах?!
По вашему коду, обычно это делается так:
Код:
begin
for k:= 0 to Length(idkey1) -1 do
if (idkey1[k] = i) then break;
// если было найдено i, то 0 <= k < Length(idkey1)
// если не было найдено i, то k = Length(idkey1)
end;
Как то так, если меня память по дельфи не подводит
BOBAH13 вне форума
Старый 25.01.2011, 22:07   #29
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

Код:
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var i,k:integer;
begin
i:=msg.HotKey;
k:=1;
for k:= 0 to Length(idkey1) -1 do
if (idkey1[k] = i) then break;
k:=k+1;
ShellExecute(0,nil,Pchar(ListView1.Items.Item[k].Caption),nil,nil, Sw_Show);
end;
не пашет! вообщем вот целиком код.
Дайте мне власть и я переверну ваш мир!...
KWN, lnc вне форума
Старый 25.01.2011, 22:36   #30
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Что писал я, что не писал. Вы читайте что вам пишут, толку будет больше!
BOBAH13 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так чтобы ... Ромка-12 Помощь студентам 2 16.09.2010 05:52
Как сделать так чтобы.. Дима я Общие вопросы Delphi 2 05.01.2010 19:03
Как сделать так чтобы дружбан начал... VintProg Свободное общение 31 22.08.2009 10:51
Как в Битриксе сделать так, чтобы mulatka Помощь студентам 0 09.06.2009 22:36
Как сделать так чтобы dBCOMBOBOX...... Gareevbo Общие вопросы Delphi 1 08.06.2009 19:59