Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Текстовый Файл  (Прочитано 12012 раз)
0 Пользователей и 1 Гость смотрят эту тему.
virtuhay266
Гость
« : 27-05-2009 20:05 » 

Можно ли как-нибудь сразу перейти в начало следующей стоки или нужно перебирать все символы до #13#10?
Записан
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #1 : 27-05-2009 20:32 » 

\n
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
virtuhay266
Гость
« Ответ #2 : 27-05-2009 21:29 » 

В Delphi.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #3 : 28-05-2009 04:28 » 

virtuhay266, ТЗ непонятно Улыбаюсь Как спросил - так и ответили
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 28-05-2009 06:10 » 

virtuhay266, можно Улыбаюсь
написать свою функцию, например gotoEoL
 и пользовать ее, а после этого забыть как она вообще работает.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #5 : 28-05-2009 06:19 » 

Можно, если использовать класс TStringList:
Код:
var
  list: TStringList;
  i: Integer;
  nextstroka: string;
begin
  list := TStringList.Create;
  try
    list.Text := txt;
    for i := 0 to list.Count - 1 do
    nextstroka := list.Strings[i];
  finally
    list.Free;
  end;
end;
Где переменная txt - это твой текст с #13#10.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 29-05-2009 11:30 » 

virtuhay266, какие типы переменных у тебя используются для хранения строк?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 29-05-2009 11:42 » 

RXL, а какая разница какой тип переменной.
По большому счету в любом случае перебор строки.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 29-05-2009 11:46 » 

Sla, если у класса строки есть методы для поиска - это будет лучше, чем ручной посиимвольный перебор.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #9 : 29-05-2009 12:06 » 

RXL, в Delphi особого разнообразия для хранения строк нет. Типы string и PAnsiChar, PWideChar. Ни один из них классом не является. Хотя не совсем точно, string является классом, но внутренним, со скрытым интерфейсом для пользователя. Поэтому говорить о методах поиска нет смысла. Как я уже писал выше, удобно использовать TStringList - это класс-список строк, который позволяет обращаться построчно, сортировать строки, связывать со строками какие либо объекты.
З.Ы. Забыл указать, есть еще тип WideString.
« Последнее редактирование: 29-05-2009 12:14 от zubr » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 29-05-2009 12:19 » 

Цитата
З.Ы. Забыл указать, есть еще тип WideString.

zubr, и в дополнение к нему - AnsiString. Они имеют методы.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #11 : 29-05-2009 13:49 » 

RXL, в Delphi AnsiString это и есть string. Если они имеют методы, приведи хоть один.
А вот, что пишет Borland Delphi Help:
Цитата
A string represents a sequence of characters. Delphi supports the following predefined string types.

String types
Type   Maximum length   Memory required   Used for
ShortString   255 characters   2 to 256 bytes   backward compatibility
AnsiString   ~2^31 characters   4 bytes to 2GB   8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString   ~2^30 characters   4 bytes to 2GB   Unicode characters; multi-user servers and multi-language applications
AnsiString, sometimes called the long string, is the preferred type for most purposes.
String types can be mixed in assignments and expressions; the compiler automatically performs required conversions. But strings passed by reference to a function or procedure (as var and out parameters) must be of the appropriate type. Strings can be explicitly cast to a different string type (see Typecasts).
The reserved word string functions like a generic type identifier. For example,

var S: string;

creates a variable S that holds a string. In the default {$H+} state, the compiler interprets string (when it appears without a bracketed number after it) as AnsiString. Use the {$H-} directive to turn string into ShortString.

The standard function Length returns the number of characters in a string. The SetLength procedure adjusts the length of a string.

Comparison of strings is defined by the ordering of the characters in corresponding positions. Between strings of unequal length, each character in the longer string without a corresponding character in the shorter string takes on a greater-than value. For example, "AB" is greater than "A"; that is, 'AB' > 'A' returns True. Zero-length strings hold the lowest values.

You can index a string variable just as you would an array. If S is a string variable and i an integer expression, S represents the ith character--or, strictly speaking, the ith byte--in S. For a ShortString or AnsiString, S is of type AnsiChar; for a WideString, S is of type WideChar. For single-byte (Western) locales, MyString[2] := 'A'; assigns the value A to the second character of MyString. The following code uses the standard AnsiUpperCase function to convert MyString to uppercase.

var I: Integer;
begin
  I := Length(MyString);
  while I > 0 do
  begin
    MyString := AnsiUpperCase(MyString);
    I := I - 1;
  end;
end;

Be careful indexing strings in this way, since overwriting the end of a string can cause access violations. Also, avoid passing long-string indexes as var parameters, because this results in inefficient code.

You can assign the value of a string constant--or any other expression that returns a string--to a variable. The length of the string changes dynamically when the assignment is made. Examples:

MyString := 'Hello world!';
MyString := 'Hello ' + 'world';
MyString := MyString + '!';
MyString := ' ';               { space }
MyString := '';                { empty string }
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 02-06-2009 17:09 » 

zubr, т.к. я пишу на BCB, то привожу скрин оттуда. Библиотеки то у них одни.

* ansistring.png (14.81 Кб - загружено 836 раз.)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #13 : 02-06-2009 18:51 » 

RXL, в Delphi AnsiString внешне выглядит как простой тип данных (почему внешне, потому что на самом деле это строки. создающиеся и удаляющиеся динамически, которые можно складывать +, сравнивать =) в отличие от BCB AnsiString. А многие методы сишного AnsiString (Pos, Trim, и т. д.) в Delphi выглядят в виде одноименных глобальных функций.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 02-06-2009 20:10 » 

Как я понял — историческая связь со строками Pascal. В C++ таких встроенных типов нет и его реализовали как класс.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #15 : 03-06-2009 03:49 » 

Да.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines