Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
1

Страное событие с ListBox

07.11.2012, 12:50. Показов 981. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет. При работе программы(ну вы знаете какой) у меня возникла такая ошибочка. Всё дело в том, что если идет воспроизведение при закрытие формы выполняется вот этот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
iif save=true then //сохранение прошло
begin
if mode=play then //воспроивзедение идет
begin
WER:=ComboBox1.ItemIndex;
if WER<0 then exit;
begin
if FileExists(ExtractFilePath(Application.ExeName) + 'Set/Play.ini') then
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
AssignFile(f1,ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
Rewrite(f1);
Write(f1,WER);
CloseFile(f1);
end
else
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
AssignFile(f1,ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
Rewrite(f1);
Write(f1,WER);
CloseFile(f1);
end;
 
REZ:=ListBox1.ItemIndex;
if REZ<0 then exit;
if FileExists(ExtractFilePath(Application.ExeName) + 'Set/Play1.ini') then
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play1.ini');
AssignFile(f1,ExtractFilePath(Application.ExeName) + 'Set/Play1.ini');
Rewrite(f1);
Write(f1,REZ);
CloseFile(f1);
end
else
begin
AssignFile(f1,ExtractFilePath(Application.ExeName) + 'Set/Play1.ini');
Rewrite(f1);
Write(f1,REZ);
CloseFile(f1);
end;
end;
end;
if (mode=stop) or (mode=pause) or (save=false) then //воспроизведение не идет или сохранение не прошло
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play1.ini');
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
end;
end;
И вот из-за этого у меня после старта программы в 1 листбокс образуется дополнительная строка(тем более пустая!). Вопрос: почему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2012, 12:50
Ответы с готовыми решениями:

Получение содержимого ListBox при подписки на событие dbClick
Есть ListBox, там я подписался на события двойного клика мыши, получается что при клики на любую...

Как отследить клик мыши на той области ListBox, где нет строк (событие OnClick не наступает)?
Как отследить клик мыши на той области ListBox, где нет строк (событие OnClick не наступает)?

В ListBox вводится последовательность строк. Вывести их в ListBox в обратном порядке
Помогите пожалуйста решить задачу :) очень надеюсь на ответ... В ListBox вводится...

Событие на listbox
Пишу программу. Появилась идея реализовать следующие: результат сс выводящийся на listbox выделять...

19
angstrom
07.11.2012, 13:07 2
Слишком всё усложняешь, зачем иметь 2 ini-файла - достаточно одного.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  AssignFile(f1, ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
  Rewrite(f1);
  try
    if save then //сохранение прошло
    begin
      if mode = play then //воспроивзедение идет
      begin
        WER := ComboBox1.ItemIndex;
        if WER < 0 then
          Exit;
          
        Write(f1, WER);
 
        REZ := ListBox1.ItemIndex;
        if REZ < 0 then
          Exit;
 
        Write(f1, REZ);
      end;
    end;
  finally
    CloseFile(f1);
  end;
 
  if (mode=stop) or (mode=pause) or (save=false) then //воспроизведение не идет или сохранение не прошло
    DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
и этот вариант не идеален, может служить только примером.
DaMortum
07.11.2012, 13:22
  #3

Не по теме:

Цитата Сообщение от саша40 Посмотреть сообщение
Страное событие с ListBox
В слове "Страное" ты либо букву "н" потерял , либо лишнюю "т" вставил.

0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
07.11.2012, 14:09  [ТС] 4
Ваще-то да. Поидее в переменых находится номер плейлиста и номер песенки в плейлесте. Может переделать кодик, под новый стиль? Попробою. Но вот вопрос по какой причине возникает одна пустая строка в ListBox1 ПРИ СТАРТЕ программы, если сохранение не проводилось?

Добавлено через 19 секунд
Цитата Сообщение от DaMortum Посмотреть сообщение

Не по теме:


В слове "Страное" ты либо букву "н" потерял , либо лишнюю "т" вставил.

Не по теме:

хахаха :D

0
angstrom
07.11.2012, 14:59 5
Удобнее использовать BlockRead, BlockWrite с соответствующей записью:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
type
  TMyRecord = record
    WER,
    REZ : Integer;
  end;
 
var
  MyRecord : TMyRecord;
  F : File;
...
begin
  AssignFile(F, ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
  Rewrite(F);
  try
    if save then //сохранение прошло
    begin
      if mode = play then //воспроивзедение идет
      begin
        MyRecord.WER := ComboBox1.ItemIndex;
        MyRecord.REZ := ListBox1.ItemIndex;
        BlockWrite(F, MyRecord, SizeOf(MyRecord));
      end;
    end;
  finally
    CloseFile(F);
  end;
end;
либо
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
  F : File of MyRecord;
...
begin
  AssignFile(F, ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
  Rewrite(F);
  try
    if save then //сохранение прошло
    begin
      if mode = play then //воспроивзедение идет
      begin
        MyRecord.WER := ComboBox1.ItemIndex;
        MyRecord.REZ := ListBox1.ItemIndex;
        BlockWrite(F, MyRecord, 1);
      end;
    end;
  finally
    CloseFile(F);
  end;
end;
Чтение сделать аналогично.
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
07.11.2012, 15:37  [ТС] 6
Цитата Сообщение от angstrom Посмотреть сообщение
Удобнее использовать BlockRead, BlockWrite с соответствующей записью:
...
Чтение сделать аналогично.
Отлично. Попробую это. Спасибо. Но вопрос темы другой: В чем причина возникновения пустой строки?
0
angstrom
07.11.2012, 17:12 7
Я думаю пока об этом не стоит заморачиваться. Сделай чтение и запись в один ini-файл через указанную запись. Файл должен получиться размером в 8 байт. Тогда и видно будет.
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
07.11.2012, 20:33 8
Привет. При работе программы(ну вы знаете какой) у меня возникла такая ошибочка. Всё дело в том, что если идет воспроизведение при закрытие формы выполняется вот этот код:
О ужас!

вы хоть посмотрите как работают с ini файлами ваще!
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
07.11.2012, 20:54  [ТС] 9
Ну
то уже готово. Только всё равно строка образуется.
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.11.2012, 21:09 10
Цитата Сообщение от саша40 Посмотреть сообщение
только всё равно строка образуется
Это потому что "т" лишняя.
0
249 / 154 / 31
Регистрация: 07.10.2012
Сообщений: 401
07.11.2012, 21:48 11
Может у тебя там изначально пустая строка стоит? Если нет, то покажи как загружаешь данные в ЛистБокс.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
07.11.2012, 22:11  [ТС] 12
При старте они загружаются из файла по выбраному плейлисту. На даннвй момент файлов нет(в папке где должны хранится файлы с данные листбоксов).
0
249 / 154 / 31
Регистрация: 07.10.2012
Сообщений: 401
07.11.2012, 22:21 13
Если файлов нет, значит, ничего загружаться не должно.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
07.11.2012, 22:32  [ТС] 14
Всё решил. Оказывается в items у листбокс была пропущена пустая строка. Блин как я только это не заметил? Всё спасибо, до новых встречь.
0
angstrom
07.11.2012, 22:51 15
Цитата Сообщение от Alex_pac Посмотреть сообщение
О ужас!

вы хоть посмотрите как работают с ini файлами ваще!
А кто вам сказал, что речь идёт о TIniFile, или расширение смутило? Так ТС может сменить его, к примеру, на cfg.
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
08.11.2012, 00:16 16
Цитата Сообщение от angstrom Посмотреть сообщение
А кто вам сказал, что речь идёт о TIniFile, или расширение смутило? Так ТС может сменить его, к примеру, на cfg.
а о каком файле идет речь? типизированном ? бинарном без структуры? или просто текстовом?
0
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
08.11.2012, 00:34 17
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if FileExists(ExtractFilePath(Application.ExeName) + 'Set/Play.ini') then
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
AssignFile(f1,ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
Rewrite(f1);
Write(f1,WER);
CloseFile(f1);
end
else
begin
DeleteFile(ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
AssignFile(f1,ExtractFilePath(Application.ExeName) + 'Set/Play.ini');
Rewrite(f1);
Write(f1,WER);
CloseFile(f1);
end;
Саша, у тебя логика отсутствует как орган, программирование не для тебя.
2
angstrom
08.11.2012, 00:35 18
Цитата Сообщение от Alex_pac Посмотреть сообщение
а о каком файле идет речь? типизированном ? бинарном без структуры? или просто текстовом?
В данном случае без разницы.
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
08.11.2012, 15:44  [ТС] 19
ВСЁ решилось.Тему закройте.
0
249 / 154 / 31
Регистрация: 07.10.2012
Сообщений: 401
08.11.2012, 15:46 20
Цитата Сообщение от саша40 Посмотреть сообщение
ВСЁ решилось.Тему закройте.
Отпишись и забудь.
0
08.11.2012, 15:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2012, 15:46
Помогаю со студенческими работами здесь

Событие Click в ListBox'e
Вот такая у меня проблема: Имеется ListBox в котором более 50 записей. На событие Click...

Listbox событие DoubleClick
Добрый день! Пишу некое подобие TotalCommander. Задание вот. 1) Combobox, в котором должны...

ListBox событие MouseDoubleClick
Доброго времени суток, подскажите пожалуйста, как осуществить события двойного нажатия на выбронный...

Событие SelectionChanged компонента ListBox
Задача такова, что мне необходимо реализовать что то вроде TabControl - нажимаю на вкладку,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru