Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите додумать ф-ю открытия txt файла, и все его содерж.


Страницы:   1 2

Lexxx ©   (2004-09-23 08:57:00) 

Поместить в строковую переменную. Вот что сделал: (работает не коректно, но и ошибки не выдает)
function InsFile(filename : string): string;
var
TF: TextFile;
begin
 AssignFile(TF, ExtractFileDir(ParamStr(0))+'\'+filename);
 read(TF, Result);
 CloseFile(TF);
end;

Заранее спасибо.


Fay   (2004-09-23 13:51:00) [1]

[12]


SergP.   (2004-09-23 13:47:00) [2]

function LoadFromFile(const Filename:string):string;
var
 SizeStr:integer;
begin
with TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite) do
 try
   SizeStr := Size - Position;
   SetString(Result, nil, SizeStr);
   Read(Pointer(Result)^, SizeStr);
 finally
   Free;
 end;
end;


Zhekson   (2004-09-23 13:30:00) [3]

Удалено модератором
Примечание: на три часа


app   (2004-09-23 13:17:00) [4]

Zhekson   (23.09.04 13:10) [30]
Он не хамит, а правильно говорит, а вот ты последнее время очень часто не по теме в разных ветках.
Рискуешь.


П7   (2004-09-23 13:15:00) [5]

Удалено модератором
Примечание: офтопик


Zhekson   (2004-09-23 13:10:00) [6]

Удалено модератором
Примечание: офтопик


Solo   (2004-09-23 13:08:00) [7]

Зачем через Assign или StringList? Тем более, что эти варианты не позволят прочитать заблокированный другим софтом файл. Сделай лучше через API.

var
 iFileHandle,iFileLength,iBytesRead:integer;
 pszBuffer:PChar;
begin

  try
   iFileHandle := FileOpen('имя файла', fmShareDenyNone);
   iFileLength := FileSeek(iFileHandle,0,2);
   FileSeek(iFileHandle,0,0);
   GetMem(pszBuffer, iFileLength+1);
   iBytesRead := FileRead(iFileHandle, pszBuffer^, iFileLength);
   //дальше работай, как с обычным pchar
   //Например: LastLine:=Copy(pszBuffer,LastDelimiter(#10,pszBuffer)+1,Length(pszBuffer));

  finally
    FileClose(iFileHandle);
  end;
end;

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


Zhekson   (2004-09-23 13:01:00) [8]

Удалено модератором
Примечание: офтопик


П7   (2004-09-23 13:01:00) [9]


> Anatoly Podgoretsky ©   (23.09.04 12:56) [26]

Бездарно вообще придумывать такую функцию. Малоли какие файлы попадутся... А если точно знаешь, что размер файла не большой, то очень даже нормально.
И вообще:
Нехватка памяти происходит не мотому, что у меня нет дара писать ненужные функции, а потому, что эта функция сама в себе очень глупая и поддерживает эту самую нехватку по определению...


Anatoly Podgoretsky   (2004-09-23 12:56:00) [10]

П7   (23.09.04 12:54) [25]
Очень не эффективно и можно нарваться на нехватку памяти, поскольку бездарно.


П7   (2004-09-23 12:54:00) [11]


function GetFileData( FileName : string ) : string;
var
 f : TextFile;
 buf : string;
begin
 AssignFile( f, FileName );
 Reset( f );
 while not EOF( f ) do
 begin
   ReadLn( f, buf );
   if Result <> '' then Result := Result + #13#10; // или #10#13 уже не помню
   Result := Result + buf;
 end;
 CloseFile( f );
end;


Это?


Anatoly Podgoretsky   (2004-09-23 12:53:00) [12]

А отвечать не на что, неясно что хочет сделать автор, по коду прочитать первую строку, как далее будут использоваться данные, а от этого зависит какой метод чтения оптимальнее не использовать, а например посмотрю как пример [1] отработает на моем лог файл в 1 гб.
Единственно что можно сказать по тому примеру так это то, что так писать не надо, а надо вместо

List.LoadFromFile(ExtractFileDir(ParamStr(0))+'\'+filename);
писать

List.LoadFromFile(ExtractFilePath(Application.ExeName + Filename);

или
List.LoadFromFile(ExtractFilePath(ParamStr(0)} + Filename);


Zhekson   (2004-09-23 12:49:00) [13]

Удалено модератором
Примечание: офтопик


Zhekson   (2004-09-23 12:22:00) [14]

Anatoly Podgoretsky, panov - Видать авторитеты.
Я им уже вопросов трыдцать задал, хоть бы почитали, что я там навозюкал.


kukuikar   (2004-09-23 12:22:00) [15]

все, опустили вы меня, мастера
(пойду пообедаю)


panov   (2004-09-23 12:17:00) [16]

>Anatoly Podgoretsky ©   (23.09.04 12:09) [17]
Нет, не удалось-)


Zhekson   (2004-09-23 12:15:00) [17]

>Anatoly Podgoretsky, panov

спасибо, что поддержали мой вопрос, хоть и с целью задать новый kuikar_у. А ответ на мой вопрос имеет место на достойное существование или он звучит примерно так:
"Ламерюга пришел, книги не читает, что ли? Такуюересть я не спрашивал даже до начала изучения Делфи."


Erik1   (2004-09-23 12:15:00) [18]

Дожили, используем класс чтобы загузить содержание файла в переменую. А если он больше 64К то небудет работать твой код kukuikar! С любой точки зрения использование  BlockRead предпочтительнее.


Anatoly Podgoretsky   (2004-09-23 12:09:00) [19]

panov ©   (23.09.04 12:06) [16]
Ты лучше признайся удалось его откомпилировать или нет?


panov   (2004-09-23 12:06:00) [20]

>kukuikar ©   (23.09.04 11:58) [14]

Могу выслать исходник,
ufMain.pas - 963M
-)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо