Загрузка текста из ресурсов
Короче идет так .... ->
procedure TMainWnd.refrlist_aExecute(Sender: TObject); // вот тут все и начинается...
var li:TListItem;
f:TextFile;
s:string;
c:integer;
ResHandle : THandle;
MemHandle : THandle;
MemStream : TMemoryStream;
ResPtr : PByte;
ResSize : Longint;
begin
StatusBar.SimpleText := 'Сортирую список по фамилиям, адресам и телефонам...';
ResHandle := FindResource(hInstance, 'DBDATA', 'PHONEDB'); // получаем описатель ресурса
if ResHandle = 0 then showmessage('Вот хрень! Не могу найти свой ресурс...'+#13+'Кто-то вырезал их из выполняемого файла :(.');
MemHandle := LoadResource(hInstance, ResHandle);
ResPtr := LockResource(MemHandle);
MemStream := TMemoryStream.Create;
ResSize := SizeOfResource(hInstance, ResHandle);
MemStream.SetSize(ResSize);
MemStream.Write(ResPtr^, ResSize);
MemStream.Seek(0, 0);
MemStream.SaveToFile(GetMyTempFileName); // сохраняем поток памяти в файл. (блин, было бы неплохо читать файл прямо из памяти... но как ?)
FreeResource(MemHandle);
MemStream.Free;
AssignFile(f,GetMyTempFileName);
Reset(f);
c := 0;
while not eof(f) do begin // тут идет алгоритм сортировки инфы по листвьюшке
s := '';
readln(f,s);
inc(c);
li := List.Items.Add;
if length(s) <= 1 then begin
li.Caption := s;
li.SubItems.Add(s);
li.SubItems.Add(s);
li.SubItems.Add(s);
end else li.Caption := inttostr(c);
li.SubItems.Add(GetSurName(s)); // выделяем из строки фамилию
li.SubItems.Add(GetAdress(s)); // ... адрес
li.SubItems.Add(GetPhone(s)); // ... телефон
Application.ProcessMessages;
end;
CloseFile(f);
StatusBar.SimpleText := 'Сортировка завершена!';
end;
Написал я в общем прогу-телефонный справочник своего города.
Все работает заебись, но вот в чем
дело: у меня есть тхт файл - список всех телефонов и адресов. Я его
запихнул в ресурсы и пытаюсь почитать... в общем получается только так
как вышеприведенном коде (т.е. сохраняю этот список в текстовый файл,
а только потом читаю). А я хотел бы чтоб оно читалось как-бы сразу из
ресурса без всяких там ТЕМП файлов... Можешь помочь? А то так как-то
не по профессиональному :). Ресурс представляет собой обыкновенный
текстовый файл...
Заранее благодарен.
Не понял, ты что хочешь запихнуть весь справочник в exe-шник? Или что??? Если первое, то зачем? Потом придется при кажом добавлении номеров перекомпиливать прогу - глупо. Просто сделай файл с записями - телефонами и читай оттуда.