Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ListView


Автор: Coderr 22.10.2009, 14:34
Есть структура
Код

  TUser = record
    login:    string[30]; 
    password: string[30]; 
    blocked:  boolean;    
    restrict: boolean;   
  end;


Хочу записывать её в переменную ListView.Items.Data без PUser = ^TUser?
Давно с делфи не работал, про указатели напрочь всё забыл.

Автор: Frees 22.10.2009, 14:50
Цитата(Coderr @  22.10.2009,  17:34 Найти цитируемый пост)
без PUser = ^TUser?

религия запрещает?

Автор: Coderr 22.10.2009, 15:04
Цитата(Frees @ 22.10.2009,  14:50)
Цитата(Coderr @  22.10.2009,  17:34 Найти цитируемый пост)
без PUser = ^TUser?

религия запрещает?

Почти. Надо будет всё остальное править. Лениво.

Добавлено через 14 минут и 47 секунд
Данные хранятся в файле. Я попробовал с указателем на TUser — не вышло.

Так я достаю данные:
Код

function getAllUsers: string;
var
  f: file of TUser;
  user: TUser;
  tmp: PUser;
begin
  AssignFile(f, 'passwords.psw');

  Reset(f);

  result := '';

  while not Eof(f) do begin
    Read(f, user);

    with mainWindowForm.userList.Items.Add do begin
      Caption := user.login;
      ImageIndex := 0;
      Data := GetMemory(sizeof(TUser));
      Data := @user;
    end;
  end;

  CloseFile(f);
end;


Так сохраняю:
Код

procedure deleteUser(login: string);
var
  f: file of TUser;
  user: PUser;
  i: integer;
begin
  AssignFile(f, 'passwords.psw');

  Reset(f);

  mainWindowForm.userList.ItemFocused.Delete;

  for i := 0 to mainWindowForm.userList.Items.Count-1 do begin
    user := mainWindowForm.userList.Items[i].Data;
    Write(f, user^);
  end;

  CloseFile(f);
end;


Понимаю, что намудрил с указателями.

Автор: CasperSC 27.11.2009, 19:16
Незнаю в тему пишу или нет, но я делаю так:

Код

procedure TForm1.BtnNewClockClick(Sender: TObject);
var Alarm : TClock;
    IndexAlarms : integer;
begin
  FormNewClock := TFormNewClock.Create(self);
  FormNewClock.RadBut_1Raz.Checked := True;
  FormNewClock.ReserveVolume := FormNewClock.GetVolume; //зарезервировать текущую громкость звука
 try
  if FormNewClock.ShowModal = mrOK then //если в FormNewClock нажали "ОК" то выполняется код
  begin
    Alarm := TClock.CreateClock;
    FormNewClock.SetData(Alarm); //получить настройки будильника из формы FormNewClock
    IndexAlarms :=  Alarms.Add(Alarm);
    Label2.Caption := 'Индекс в массиве:'+ IntToStr(Alarms.IndexOf(Alarm));
if (Alarm.FMode = ONE_ALARM) then
begin
    with ListViewAlarm.Items.Add do
    begin
      Caption := Alarm.FTextMessage;
      SubItems.Add(DateToStr(FormNewClock.DatePicker.Date));
      SubItems.Add(TimeToStr(FormNewClock.TimePicker.Time));
      SubItems.Add(Alarm.FPeriodAlarm);//добавляется периодичность срабатывания
      Data := Pointer(Alarms[IndexAlarms]);
      Checked := True;
      Alarm.ClockEnable;
    end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)