Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Текстовый файл   Найти похожие ветки 

 
Neosted   (2005-11-27 19:32) [0]

Как из текстового файла скопировать строку с заданным номером(т.е. вторую, третью) и как из строки скопировать один символ?


 
begin...end ©   (2005-11-27 19:34) [1]

Вызвать нужное количество раз ReadLn(F), затем прочитать нужную строку -- ReadLn(F, S), и скопировать символ: if Length(S) > 0 then C := S[1]. Здесь F: TextFile, S: string, C: Char.


 
begin...end ©   (2005-11-27 19:36) [2]

Сорри, почему-то подумал, что нужно скопировать первый символ.

if Length(S) >= N then
 C := S[N],

где N -- номер символа.


 
Neosted   (2005-11-27 19:50) [3]

Огромное спасибо!


 
Gydvin ©   (2005-11-27 20:07) [4]

чтение нужной строки

код не мой

function GrabLine(const AFileName: string; ALine: Integer): string;
var
  fs: TFileStream;
  buf: packed array[0..4095] of Char;
  bufRead: Integer;
  bufPos: PChar;
  lineStart: PChar;
  tmp: string;
begin
  fs := TFileStream.Create(AFileName, fmOpenRead);
  try
    Dec(ALine);
    bufRead := 0;
    bufPos := nil;

    { read the first line specially }
    if ALine = 0 then
    begin
      bufRead := fs.Read(buf, SizeOf(buf));
      if bufRead = 0 then
        raise Exception.Create("Line not found");
      bufPos := buf;
    end else
      while ALine > 0 do
      begin
        { read in a buffer }
        bufRead := fs.Read(buf, SizeOf(buf));
        if bufRead = 0 then
          raise Exception.Create("Line not found");
        bufPos := buf;
        while (bufRead > 0) and (ALine > 0) do
        begin
          if bufPos^ = #10 then
            Dec(ALine);
          Inc(bufPos);
          Dec(bufRead);
        end;
      end;
    { Found the beginning of the line at bufPos... scan for end.
     2 cases:
       1) we"ll find it before the end of this buffer
       2) it"ll go beyond this buffer and into n more buffers }
    lineStart := bufPos;
    while (bufRead > 0) and (bufPos^ <> #10) do
    begin
      Inc(bufPos);
      Dec(bufRead);
    end;
    { if bufRead is positive, we"ll have found the end and we can leave. }
    SetString(Result, lineStart, bufPos - lineStart);
    { determine if there are more buffers to process }
    while bufRead = 0 do
    begin
      bufRead := fs.Read(buf, SizeOf(buf));
      lineStart := buf;
      bufPos := buf;
      while (bufRead > 0) and (bufPos^ <> #10) do
      begin
        Inc(bufPos);
        Dec(bufRead);
      end;
      SetString(tmp, lineStart, bufPos - lineStart);
      Result := Result + tmp;
    end;
  finally
    fs.Free;

  end;
  delete(Result,length(Result),1);
end;



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
2-1132414523
Venum
2005-11-19 18:35
2005.12.11
TWebBrowser


3-1130428514
Apachi
2005-10-27 19:55
2005.12.11
Доступ к данным через интернет ISAPI


1-1132043842
auz
2005-11-15 11:37
2005.12.11
TProgressBar - (Delphi6+NT4) vs (Delphi7+WinXP)


6-1125493756
Alex870
2005-08-31 17:09
2005.12.11
idTCPServer и idTCPClient


14-1132527717
Старт
2005-11-21 02:01
2005.12.11
Что за Питон такой для Дельфи?