Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2011, 15:08   #31
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
речь о 500 тысячах строк, и еще не известно какого размера сами строки.
Да и такой создал загрузил и удалил, всё работает
SERG1980 вне форума Ответить с цитированием
Старый 31.01.2011, 15:16   #32
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Делается это до смешного просто двумя экземплярами TTextFileStream и кодом в пол-дюжины строк
mss вне форума Ответить с цитированием
Старый 31.01.2011, 16:04   #33
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Делается это до смешного просто двумя экземплярами TTextFileStream и кодом в пол-дюжины строк
У меня почему то делфи ругается на TTextFileStream, говорит что не знает такого типа.
делфи 2007, может модуль какой нибудь подключить надо?
SERG1980 вне форума Ответить с цитированием
Старый 31.01.2011, 16:14   #34
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
то делфи ругается на TTextFileStream, говорит что не знает такого типа.
Delphi 2006 (Borland® Delphi® for Microsoft® Windows™ Version 10.0.2558.35231) - аналогично...

Добавлено
судя по всему, речь идёт о самописной надстройке (наследнике) от TFileStream
вот ссылка на форум, где предлагается такой класс...

Последний раз редактировалось Serge_Bliznykov; 31.01.2011 в 16:25.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.01.2011, 16:57   #35
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Код:
unit TextFileStream;

interface

uses Classes;

type

  TTextFileStream = class(TFileStream)
  public
    function Eof: Boolean;
    function ReadLn: string;
    procedure WriteString(const s: string);
    procedure WriteLn(const s: string); overload;
    procedure WriteLn; overload;
  end;

const

  LineEnd = #13#10;

implementation

function TTextFileStream.Eof: Boolean;
begin
  result := (Position >= Size);
end;

function TTextFileStream.ReadLn: string;
const
  BlkSize = 128;
var
  c: char;
  i: Integer;
begin
  SetLength(Result, BlkSize);
  i := 0;
  while not Eof do begin
    Read(c, SizeOf(c));
    if c = #13 then begin
      Read(c, SizeOf(c));
      if c <> #10 then begin
        Seek(SizeOf(c), soFromCurrent);
      end;
      break;
    end;
    if c = #10 then begin
      break;
    end;
    Inc(i);
    if i > BlkSize then
      SetLength(Result, Length(Result) + BlkSize);
    Result[i] := c;
  end;
  SetLength(Result, i);
end;

procedure TTextFileStream.WriteString(const s: string);
var
  i: integer;
begin
  for i := 1 to Length(s) do begin
    Write(s[i], SizeOf(s[i]));
  end;
end;

procedure TTextFileStream.WriteLn;
begin
  Write(LineEnd, Length(LineEnd));
end;

procedure TTextFileStream.WriteLn(const s: string);
begin
  WriteString(s);
  WriteLn;
end;

end.
Начиная с D2009, вестимо, String следует явно заменить на AnsiString
mss вне форума Ответить с цитированием
Старый 10.02.2011, 17:01   #36
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Да и такой создал загрузил и удалил, всё работает
кстатии говоря может беда в том что я с таким большим списком работаю бонально вот так:
Код:
stroka := spisok.Strings[0];
spisok.Delete (0);
тоесть вот таким нехитрым способом я считываю по строке и обрабатываю её! может по этому выскакивает ошибка??
maloy_ya вне форума Ответить с цитированием
Старый 10.02.2011, 17:48   #37
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем удалять вам их?
(хотя на скорость сильно не влияет)
вы хоть проверяете на наличие элементов в списке?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.02.2011, 18:06   #38
maloy_ya
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 59
По умолчанию

удалять дабы не обробатывать обработанные да и цикл организововать не нужно а если не удалять то я постоянно одину и ту же строку буду обрабатывать!
и конечноже проверяю!!!
Код:
if spisok.count<>0 then 
 begin
  stroka := spisok.Strings[0];
  spisok.Delete (0);
 end
else ....

Последний раз редактировалось maloy_ya; 10.02.2011 в 23:18.
maloy_ya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Развернуть наизнанку изображение на экране (каким образом такое возможно) Synthesis Общие вопросы C/C++ 3 31.03.2010 19:09
Каким образом процессор обращается к портам Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 30.07.2009 12:29
Возможно ли удалить, вырезать, определенную строку в TMemo Des Компоненты Delphi 2 28.04.2009 16:21
ссылка через определенное количество строк chaostt Microsoft Office Excel 7 03.04.2009 18:14
Каким образом скопировать файл? Kashp Общие вопросы Delphi 14 07.08.2007 11:44