| 
| 
 | Вопрос # 3 139/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Помогите ,пожалуйста,ну ни как не пойму - совсем запутался.
 Записываю данные в файл.Затем достаю из файла и редактирую в листбоксе,тоесть удаляю некоторые строки.Затем ,чтобы изменить содержимое файла,пытаюсь перезаписать файл новым содержимым листбокса и ничего не получается.В гугле не могу найти,есть примерно такое же но с мемо.Я вроде бы делаю по аналогии и ни чего.Спасите,помогите!
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Menus, StdCtrls, Buttons; type  TForm1 = class(TForm)    SpeedButton1: TSpeedButton;    SpeedButton2: TSpeedButton;    SpeedButton3: TSpeedButton;    ListBox1: TListBox;    Edit1: TEdit;    PopupMenu1: TPopupMenu;    N1: TMenuItem;    procedure SpeedButton1Click(Sender: TObject);    procedure SpeedButton2Click(Sender: TObject);    procedure SpeedButton3Click(Sender: TObject);    procedure N1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1; implementation {$R *.dfm}var  F: TextFile;  S: String;  i : integer;  b : string;  x : integer;procedure TForm1.SpeedButton1Click(Sender: TObject);begin   AssignFile(F,'v.txt');  try  Append(F);  except    on e: EInOutError do      Rewrite(F);   end;  if Length(Edit1.Text) = 0    then ShowMessage('Ioeaea aaiaa aaiiuo.' + #13 +                     ' Iiea aie?ii auou caiieiaii ')    else     beginWriteln(F,Edit1.Text);CloseFile(F);end;end; procedure TForm1.SpeedButton2Click(Sender: TObject);begin  ListBox1.Clear;  AssignFile(F,'v.txt');  Reset(F);  while not EOF(F) do   begin  ReadLn(F,S);  ListBox1.Items.Add(S);   end;CloseFile(F);end; procedure TForm1.SpeedButton3Click(Sender: TObject);begin  AssignFile(F,'v.txt');  Rewrite(F);for i := 0 to ListBox1.Items.Count do  writeln(F,ListBox1.Items[ItemIndex] );      CloseFile(F);end; procedure TForm1.N1Click(Sender: TObject);begin  ListBox1.DeleteSelected;end; end.
|  |   Вопрос задал: igoriy (статус: Посетитель)Вопрос отправлен: 30 августа 2009, 08:13
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Жуть какая! Страшный сон программиста...
 
 procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  ListBox1.Clear;
  AssignFile(F,'v.txt');
  Reset(F);
  while not EOF(F) do
   begin
  ReadLn(F,S);
  ListBox1.Items.Add(S);
   end;
CloseFile(F);
{ А может написать вот так и не заморачиваться?
  try
    ListBox1.Items.LoadFromFile('v.txt');
  except
    Application.MessageBox(PChar('Не могу загрузить файл.'), PChar('Ошибка'), mb_Ok + mb_IconError);
  end; }
end;
 
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  AssignFile(F,'v.txt');
  Rewrite(F);
for i := 0 to ListBox1.Items.Count do // <--- Вот распространённая АШЫПКА (-1 добавь)
  writeln(F,ListBox1.Items[ItemIndex] ); // <--- Зачем ItemIndex, а не i???
      CloseFile(F);
{ А может написать вот так и не заморачиваться?
  try
    ListBox1.Items.SaveToFile('v.txt');
  except
    Application.MessageBox(PChar('Не могу сохранить файл.'), PChar('Ошибка'), mb_Ok + mb_IconError);
  end; }
end;
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 30 августа 2009, 09:46
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо за ответ.Ну и любишь ты подкалывать детсадовцев програмирования.Конечно у тебя все проще и лучше.Но в учебниках блин все по другому и так запутано,наверно от особой умности авторов.Кстати насчет пивного вопроса-в личке |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 30 августа 2009, 09:57; участников в обсуждении: 1. 
|   | min@y™ (статус: Доктор наук), 30 августа 2009, 09:57 [#1]:Личку прочитал и ответил. Жду пива. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  30 августа 2009, 13:43: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |