Загрузка из текстового файла

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Decessus
новенький
Сообщения: 11
Зарегистрирован: 01.04.2011 18:36:52

Загрузка из текстового файла

Сообщение Decessus »

нужно из текстового файла загрузить в массив записей данные, не въеду как их оттуда достать вот что сам набрасал, но выдаёт ошибку при попытке открыть файл....

Код: Выделить всё

procedure TForm1.Image2Click(Sender: TObject);
var st,k:string;f:TextFile; n:integer; e:tstringlist;
begin
  if OpenDialog1.Execute then k:=OpenDialog1.FileName;
  //memo1.Lines.LoadFromFile(k);    способ 1 загрузить в мемо
  e.LoadFromFile(k);// второй способ
  {AssignFile(f,k); и наконец третий, ни один не заработал
reset(f);
n:=0;
while not eof(f) do
 begin
 n:=n+1;
  readln(f,st);
  with s[1] do
   begin
         fam:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         name:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         group:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         year:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         r1:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         r2:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         r3:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         r4:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
         r5:=copy(st,1,pos(' ',st)-1);
         delete(st,1,pos(' ',st));
   end;
  end;
CloseFile(f); 
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Чтобы понять в чём проблема, нужно знать какую конкретно ошибку выдаёт -- текст сообщения, код ошибки, имя класса исключения, и т.п.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Методом телепатии вычисляю ошибку для второго способа:

Код: Выделить всё

 e.LoadFromFile(k);// второй способ


Для начала создайте объект типа TStringList:

Код: Выделить всё

e:=TStringList.Creater;
e.LoadFromFile(k);


PS. Маленький совет: используйте более читабельные и понятные имена переменных. От всех этих e и k в глазах рябит, и читать код не хочется.
Decessus
новенький
Сообщения: 11
Зарегистрирован: 01.04.2011 18:36:52

Сообщение Decessus »

за переменные извините, это только набросок вот и не придумал им имена...
по поводу второго способа знаю, забыл про это, исправить уже не успел т.к переустанавливаю лазарус...
ошибка состояла в том что невозможно было открыть файл, но скопировал этот код на делфи и там он всё нормально загрузил в мемо остального не проверял...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Код: Выделить всё

 e.LoadFromFile(UTF8ToSys(k))
Decessus
новенький
Сообщения: 11
Зарегистрирован: 01.04.2011 18:36:52

Сообщение Decessus »

спасибо!!!!
вот так вот сделал=)

Код: Выделить всё

uses ... , LConvEncoding;
...
var Buffer: TStringList;
...
Buffer := TStringList.Create;
Buffer.LoadFromFile(UTF8ToSys(k));
Memo1.Text := CP1251ToUTF8(Buffer.Text);
FreeAndNil(Buffer);
Ответить