Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
1

Заполнение Combobox и файла

13.07.2017, 13:04. Просмотров 792. Ответов 30
Метки нет (Все метки)

Помогите разобраться.......
Есть вот такой код:
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
procedure TSMS.N10Click(Sender: TObject);
const
FN3 = 'Phone.ini';
var
LSMS: TSMSMessage;
Item:TListItem;
f: TextFile;       // файл
begin
fSettings.Caption:='Отправка сообщения';
fSettings.Txt.Visible:=True;
fSettings.LEPhone.Visible:=False;
AssignFile(F,'..\..\Config\' + FN3); //подключение к файловой переменной
   try
       Reset(f);  // открыть для чтения
   except
        on EInOutError do
        begin
            ShowMessage('Ошибка доступа к файлу '+FN3);
            exit;
        end;
   end;
 
   // чтение из файла
   while not EOF(f) do
     begin
        fSettings.ComboBox1.Items.LoadFromFile(FN3);
     end;
   CloseFile(f); // закрыть файл
fSettings.ShowModal;
По логике вещей он должен заполнять комбобокс из файла заданного в строчке AssignFile(F,'..\..\Config\' + FN3);
При нажатии на кнопку заполнения комбобокса программа выдает ошибку Cannot open file F:\SMS\Win32Debug\Phone.ini не удаётся найти выбранный файл.
Внимание вопрос!!!
Где я ошибся и почему он упорно ищет файл не в том месте в котором я ему указал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2017, 13:04
Ответы с готовыми решениями:

заполнение ComboBox
Здравствуйте. У меня на форме есть ComboBox, который заполняется в цикле ...

Заполнение ComboBox
Пробую сделать так что при заполнении Edit, в зависимости от диапазона...

Заполнение из ComboBox в RadioButton
Здравствуйте уважаемые программисты! Выручайте нужна ваша помощь! Нужно...

Combobox загрузка из файла
Всем привет, помогите найти решение. Нужно чтобы при выборе A3 загружался...

Чтение из файла в ComboBox
Мне нужно создать программу с помощью которой можно вести список личной...

30
Cold
84 / 84 / 65
Регистрация: 22.05.2014
Сообщений: 478
13.07.2017, 13:39 2
А просто нельзя написать
Delphi
1
ComboBox1.Items.LoadFromFile('d:\Поля.txt');//ваш путь к файлу...
Добавлено через 1 минуту
Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.Items.LoadFromFile('d:\Поля.txt');
end;
Добавлено через 59 секунд
Всё норм заполняется, зачем такой большой код....
0
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
13.07.2017, 13:45  [ТС] 3
combobox1.Items.LoadFromFile('F:\SMS\Config\Phone.ini');прописал просто вот эту строчку и один фиг выдает то же самое сообщение, никак не могу понять откуда он этот путь взял.......
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
13.07.2017, 13:46 4
Цитата Сообщение от klausteam Посмотреть сообщение
По логике вещей он должен заполнять комбобокс из файла заданного в строчке AssignFile(F,'..\..\Config\' + FN3);
Нет. По логике вещей он будет заполнять оттуда, откуда указано, то есть FN3.
0
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
13.07.2017, 13:58  [ТС] 5
Всё разобрался, я одну и ту же команду на заполнение комбика сделал на события клик и чендж комбика, вот на чендж он оказывается и ругался, убрал оттуда вы и нормально заработало.
А не подскажете как заполнить комбо только четными строками из файла?
Я так понимаю в этом случае мне моя портянка то начальная и пригодится?

Добавлено через 3 минуты
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Нет. По логике вещей он будет заполнять оттуда, откуда указано, то есть FN3.
Но путь то к этому файлу прописывается между F и PN3.....
0
Cold
84 / 84 / 65
Регистрация: 22.05.2014
Сообщений: 478
13.07.2017, 14:11 6
ПРОСТО ПО НАЖАТИЮ НА КНОПКУ ПРОПИШИ
Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.Items.LoadFromFile('F:\SMS\Config\Phone.ini'); //убедись, что по этому пути  есть файл Phone.ini...
end;
1
DenNik
Непрофессионал
1803 / 1469 / 307
Регистрация: 26.07.2011
Сообщений: 8,065
13.07.2017, 14:19 7
Цитата Сообщение от klausteam Посмотреть сообщение
Delphi
1
2
3
4
5
// чтение из файла
   while not EOF(f) do
     begin
        fSettings.ComboBox1.Items.LoadFromFile(FN3);
     end;
а то что написана полная бредятина, никто не заметил?

Добавлено через 1 минуту
klausteam, чувак, почитай литературу и осознай разницу между загрузкой из TextFile и методом LoadFromFile. ты будешь удивлен
1
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
13.07.2017, 14:20  [ТС] 8
Цитата Сообщение от Cold Посмотреть сообщение
ПРОСТО ПО НАЖАТИЮ НА КНОПКУ ПРОПИШИ
Это то я уже сделал.
У меня в файл такой структуры
1Имя
2Телефон
3Имя
4Телефон ..... и т.д
ПОдскажите пожалуйста как заполнить комбик только телефонами?
0
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
13.07.2017, 14:22 9
Так я и заметил, и указал, что загрузка будет из FN3. А что он там до этого понаоткрывал - это его дело.
0
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
13.07.2017, 14:29  [ТС] 10
Цитата Сообщение от DenNik Посмотреть сообщение
klausteam, чувак, почитай литературу и осознай разницу между загрузкой из TextFile и методом LoadFromFile. ты будешь удивлен
Из того что я прочитал я могу лишь сделать вывод что метод LoadFromFile в отличие от TextFile имеет ограниченный объем памяти, и как только объем информации в моем файле выйдет за эти пределы то начнутся проблемы с работой программы(((
К тому же первый метод не осуществляет проверку наличия файла и если файла нет то программа сваливается в ошибку.
Читаю дальше.....
0
D1973
Модератор
3573 / 2576 / 1257
Регистрация: 21.01.2014
Сообщений: 10,818
Записей в блоге: 3
Завершенные тесты: 1
13.07.2017, 15:01 11
Цитата Сообщение от klausteam Посмотреть сообщение
FN3 = 'Phone.ini'
Цитата Сообщение от klausteam Посмотреть сообщение
У меня в файл такой структуры
Чушь какая-то... Вообще-то ini-файл имеет свою структуру
[Имя_Секции]
Имя_Параметра=Значение
...
и работа с ним строится по совсем другим принципам...
А то, что есть у Вас - маразматический способ работы с текстовым файлом...
Вот то, что вам надо: добавление в айтемы комбобокса только четных строк текстового файла
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var L: TStringList;
i: integer;
begin
 L := TStringList.Create;
 if not FileExists('F:\SMS\Config\Phone.ini')
  then begin
           ShowMessage('Ошибка доступа к файлу');
           Exit;
         end;
 L.LoadFromFile('F:\SMS\Config\Phone.ini');
 for i := 0 to L.Count - 1 do
  if Odd(i) then ComboBox1.Items.Add(L.Strings[i]);
 L.Free;
end;
1
DenNik
Непрофессионал
1803 / 1469 / 307
Регистрация: 26.07.2011
Сообщений: 8,065
13.07.2017, 15:09 12
D1973, можно текстовому файлу приписать расширение "blabla" - он не перестанет быть текстовым. так же и с другими. вопрос в том как файл читается, и вот с этим у автора проблемы
1
D1973
13.07.2017, 15:12
  #13

Не по теме:

Цитата Сообщение от DenNik Посмотреть сообщение
он не перестанет быть текстовым
DenNik, это-то понятно, непонятно - зачем? Ну дай ты любое расширение, отличающееся от зарезервированного, чего людей-то в изумление вводить!

0
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
13.07.2017, 15:21  [ТС] 14
Цитата Сообщение от DenNik Посмотреть сообщение
D1973, можно текстовому файлу приписать расширение "blabla" - он не перестанет быть текстовым. так же и с другими. вопрос в том как файл читается, и вот с этим у автора проблемы
Это верно, а еще у автора почему то не хватает мозгов чтобы это осилить и словарного запаса чтобы ясно выразить свою мысль......

Добавлено через 1 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
А то, что есть у Вас - маразматический способ работы с текстовым файлом...
Ну лично я называю его методом глубоко научного тыка))))) Заработает хорошо, не заработает айда на форум приличным людям мозг кушать.

Добавлено через 5 минут
Всё заработало как надо, спасибо огромное всем участникам беседы
0
DenNik
Непрофессионал
1803 / 1469 / 307
Регистрация: 26.07.2011
Сообщений: 8,065
13.07.2017, 15:25 15
Цитата Сообщение от klausteam Посмотреть сообщение
у автора почему то не хватает мозгов чтобы это осилить
осиливай
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
procedure TForm1.Button1Click(Sender: TObject);
const
  FN = 'Phone.ini';
var
  f: TextFile;
  fName: string;
  str: string;
  i: word;
begin
  fName:= ExtractFilePath(ParamStr(0)) + FN;
  if not FileExists(fName) then Exit;
  // загружаю ВЕСЬ файл (для примера) - метод LoadFromFile
  ListBox1.Items.LoadFromFile(fName);
  // читаю файл построчно (четные строки добавляю в список)
  i:= 0;
  AssignFile(f,fName);
  Reset(f);
  while not Eof(f) do
  begin
    Inc(i);
    Readln(f,str);
    if not Odd(i) then ComboBox1.Items.Add(str);
  end;
  CloseFile(f);
end;
0
Миниатюры
Заполнение Combobox и файла  
D1973
13.07.2017, 15:32
  #16

Не по теме:

DenNik, ну и зачем это для текстовиков-то: AssignFile, Reset/Rewrite и т.д. Чай, в XXI веке живем и не на паскале пишем... :D

0
DenNik
13.07.2017, 15:34
  #17

Не по теме:

Цитата Сообщение от D1973 Посмотреть сообщение
ну и зачем это для текстовиков-то: AssignFile, Reset/Rewrite и т.д. Чай, в XXI веке живем и не на паскале пишем...
а чем это может навредить в 21 веке? при том что в 20 работало прекрасно? :)

0
klausteam
1 / 1 / 1
Регистрация: 08.04.2016
Сообщений: 59
13.07.2017, 15:37  [ТС] 18
Хмммм.........
Образовалась проблема, когда в файле всего 2 строки то код работает отменно, но вот если там от 3х строк и больше то комбобокс заполняется всякой ерундой, то имя вставит вместо номера, то вообще пустую строку
0
DenNik
Непрофессионал
1803 / 1469 / 307
Регистрация: 26.07.2011
Сообщений: 8,065
13.07.2017, 15:40 19
Цитата Сообщение от klausteam Посмотреть сообщение
Образовалась проблема,
где код? сразу нельзя показать? или нам гадать?
0
krapotkin
3442 / 3045 / 1051
Регистрация: 14.04.2014
Сообщений: 14,762
Записей в блоге: 15
13.07.2017, 15:40 20
fSettings.ComboBox1.Items.LoadFromFile(FN3);
читает все строки из файла FN3
зачем (бесконечный) цикл while not EOF(f) do ???

никому не интересно разбирать в чем у вас ошибка, если просто нужно было делать что-то по-другому

исходную задачу озвучьте
0
13.07.2017, 15:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2017, 15:40

Заполнение файла из цикла
Вообщем ребят Проблема следующая - имеется файл со строками В цикле данные...

Заполнение матрицы с файла
Задача такова: есть файл с этими числами: 12 34 05 88 73 52 41 78 40 99 ...

Заполнение массива из файла
Всем привет!) У меня проблема - не могу сообразить как записать значения из...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru