Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Типизированные файлы. Записи. Delphi 7. Помогите с этим 
:(
    Опции темы
Denwer
Дата 18.5.2008, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Есть запись, которая добавляется в тип. файл. Хочу при выборе в Combox значения,
чтобы в Memo выводилось номер записи которую я выбираю.
Смысл то понятен, что надо поставить указатель и всё. Но что то не выходит.
 
Код

type
   Tstud = record
    name  : string[15];
    fam   : string[15];
    vuz   : string[15];
   end;
var
stud : Tstud;
     f : file of Tstud;
     i : integer; // счётчик записей в combobox
  Form1: TForm1;



Код

 // Добавление в файл
procedure TForm1.Button1Click(Sender: TObject);
begin
    AssignFile(f, 'C:\temp.db');
    reset(f);
    seek(f, filesize(f));
   with stud do  begin
     name := Edit1.Text;
     fam  := Edit2.Text;
     vuz  := Edit3.Text;
    end;
    write(f, stud);
    i := i + 1;
    Combobox1.Items.Add(inttostr(i));
   Clear;
 end;

 // выбор записи
 procedure TForm1.ComboBox1Change(Sender: TObject);
  var
   j : integer;
   k : integer;
   st : string;
    begin
      for j := 0 to i - 1 do
      if ComboBox1.ItemIndex = j then
      ShowMessage ('Выбрана (' + inttostr(j+1) + ') запись !');
       if not Eof(f) then
         begin
           seek (f, j);         // не пойму почему не ставит указатель !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
           k := filepos(f);
         end;
      memo1.Lines.Add(inttostr(k));
    end;
  end.

PM WWW   Вверх
Coder
Дата 18.5.2008, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 2
Всего: 11



seek (f, j*sizeof(Tstud));
PM MAIL   Вверх
Denwer
Дата 18.5.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



что то не хочет
PM WWW   Вверх
Alexeis
Дата 18.5.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(Denwer @  18.5.2008,  09:38 Найти цитируемый пост)
что то не хочет 

правильно не хочет seek индексирует записи, а не байты. Нужно просто seek (f, j);

Добавлено через 2 минуты и 35 секунд
seek(f, filesize(f)); тоже не верно, по той же причине.

Добавлено через 4 минуты
Кстати расскажи подробнее чего именно не выходит и как оно на самом деле.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Denwer
Дата 18.5.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Alexeis, 
Мне и нужны записи, мне нужно выводить просто номер записи, который я выбираю, уже для последующей обработки (удаление, изменение, вывод,  именно выбранной записи.) Если взять мой пример, он выводит тупо номер последней записи. Как будто указатель ставится в конец а не в нужное положение.

PM WWW   Вверх
Alexeis
Дата 18.5.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Бррр... мой моск взорвался при анализе кода. По коду не ясно, что вообще он дожен делать. 
Переменная I вообще не инициализируется, файл от запуска к запуску должен набиваться новыми записям, при это счетчик i ничего об этом не знает. Короче требуется подробная формулировка задачи.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Denwer
Дата 18.5.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Alexeis, Вроде ж все описал, ну ладно сам буду разбираться.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.