Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Работа со строками   Найти похожие ветки 

 
Kolega   (2004-01-28 11:11) [0]

Доброго времени суток МАСТЕРА!
Есть проблема, помогите разобраться:
Есть строка вида
"0;0;0;0;3;32;73;104;114;120;137;145;180;174;168;163;177;182;175;83;86;98;94;93;91;93;"
Как выдернуть из нее цифры и занести в массив типа integer.
Зарание спасибо!


 
Плохиш_   (2004-01-28 11:15) [1]

String + F1
For + F1
TStringList + F1
StrToInt + F1

или может пойдёшь книжки по-читаешь


 
Тимохов   (2004-01-28 11:20) [2]


> String + F1
> For + F1
> TStringList + F1
> StrToInt + F1
>
> или может пойдёшь книжки по-читаешь

Обидется же...


 
Digitman   (2004-01-28 11:22) [3]

одно из простых решений :

1. замени в исх.строке все символы ";" на символ #10 (терминирующий символ ";" вообще убери)

2. полученную после замены строку загрузи в св-во Text предварительно созданного объекта класса TStringList

3. В цикле по всем строкам полученного списка для каждой i-й строки списка выполни StrToInt(), результаты записывай в i-е элементы результирующего int-массива


 
Плохиш_   (2004-01-28 11:25) [4]

>Тимохов © (28.01.04 11:20) [2]

Его проблемы ;-)

>Digitman © (28.01.04 11:22) [3]

А первый пункт зачем?


 
хз   (2004-01-28 11:31) [5]

> А первый пункт зачем?

Чтобы перевод строк был.


 
Sandman25   (2004-01-28 11:32) [6]

Люди, Вы зачем ему TStringList советуете? Вот так и делают из начинающих тех, кто потом спрашивает, почему программа медленно загружает 10-мегабайтный файл в Memo. Когда все, что нужно, - всего лишь удалить пару строчек из файла...

Только через парсинг строки!


 
Тимохов   (2004-01-28 11:33) [7]


> Только через парсинг строки!

Вы зчем ему такие умные слова советуете - объяснить же придется, что это... :)))


 
хз   (2004-01-28 11:36) [8]

> Только через парсинг строки!

Какой парсинг строки? Он и через StringList-то не додумался сделать!


 
Digitman   (2004-01-28 11:36) [9]


> Плохиш_ (28.01.04 11:25) [4]


When reading Text, the strings in the list will be separated by carriage return, line feed pairs. If any of the strings in the list contain a carriage return and line feed pair, the resulting value of Text will appear to contain more strings than is indicated by the Count property.

When setting Text, the value will be parsed by separating into substrings whenever a carriage return or linefeed is encountered. (The two do not need to form pairs).

If the strings in the list contain carriage return or linefeed characters, a less ambiguous format for the strings is available through the CommaText property.


 
alex_***   (2004-01-28 11:48) [10]


[6]->медленно загружает 10-мегабайтный файл в Memo

неясно как связан TStringList c TMemo.
Парсинг: зачем самому делать работу, которую уже сделали в TStrings. Только если для самоообразования.


 
Плохиш_   (2004-01-28 11:49) [11]

>Digitman © (28.01.04 11:36) [9]

x.Delimiter := ";"
x.DelimitedText := mysuperstring;


 
Плохиш_   (2004-01-28 11:51) [12]

или в D6 Delimiter нету? Тогда беру свои слова обратно?

PS. Не надо больше справку цитировать. Модератору не понравиться ;-)


 
хз   (2004-01-28 11:52) [13]

> PS. Не надо больше справку цитировать. Модератору не
> понравиться ;-)

А ты за модератора-то не говори... ;-)


 
Sandman25   (2004-01-28 11:53) [14]

const
ElementCount = 100;
type
TIntegerArray = array[0..ElementCount-1] of integer;
var
IntegerArray: TIntegerArray;

function ConvertStringToArray(const AString: string;
var IntegerArray: TIntegerArray; Delimiter: char = ";"): integer;
// возвращает число элементов
var
StartIndex, Index: integer;
begin
Result := Low(IntegerArray);
StartIndex := 1;
for Index := 1 to Length(AString) do
begin
if AString[Index] = Delimiter then
begin
// next word
IntegerArray[Result] :=
StrToInt(
copy(AString, StartIndex, Index - StartIndex)
);
inc(Result);
StartIndex := Index + 1;
end;
end;
Result := Result - Low(IntegerArray);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ConvertStringToArray(
"0;0;0;0;3;32;73;104;114;120;137;145;180;174;",
IntegerArray);
end;


 
Sandman25   (2004-01-28 11:54) [15]

[10] alex_*** © (28.01.04 11:48)

У Memo есть Lines, который является наследником TStrings, являющимся предком TStringList. И, действительно, был похожий вопрос на форуме, я не фантазировал :)


 
alex_***   (2004-01-28 12:13) [16]

ну мало ли в каких компонентах есть TStrings. Чтож теперь TStringList с опаской пользовать? Вчера или позавчера здесь был любитель прогресс 13000 раз обновлять через ProcessMessages.
Кто хочет на свою голову проблем найти - найдет.


 
Sandman25   (2004-01-28 12:17) [17]

[16] alex_*** © (28.01.04 12:13)

Зачем здесь TStringList?


 
alex_***   (2004-01-28 12:20) [18]

для примера. Начали же с того что парсинг через TStringList предлагали.


 
Sandman25   (2004-01-28 12:24) [19]

[18] alex_*** © (28.01.04 12:20)

Ну так я именно против этого и восстал. Не стоило советовать TStringList.
Сначала потакают "кнопкокидателям", а потом удивляются, почему они не хотят и не могут "расти над собой".


 
Плохиш   (2004-01-28 12:27) [20]

Автор уже всё понял/сделал, а "горячии эстонские парни" всё ругаются :-))))


 
Sandman25   (2004-01-28 12:28) [21]

[20] Плохиш (28.01.04 12:27)

За автором придут другие, и спросят нечто похожее.


 
Плохиш   (2004-01-28 12:28) [22]

PS. Анкета "Плохиш_" как интересно :-))


 
Плохиш   (2004-01-28 12:30) [23]


> Sandman25 © (28.01.04 12:28) [21]
> [20] Плохиш (28.01.04 12:27)
>
> За автором придут другие, и спросят нечто похожее.

Они в любом случае придут


 
Sandman25   (2004-01-28 12:32) [24]

[23] Плохиш (28.01.04 12:30)

И получат тот же ответ? :)

ЗЫ. А, я понял. Такими ответами мы уменьшаем себе потенциальную конкуренцию в будущем :)


 
Anatoly Podgoretsky   (2004-01-28 12:34) [25]

Плохиш (28.01.04 12:27) [20]
Не ругаются, а проводят воспитательную работу.


 
Плохиш   (2004-01-28 12:36) [26]

>Anatoly Podgoretsky © (28.01.04 12:34) [25]

Друг друга воспитывают :-))


 
kolega   (2004-01-28 13:16) [27]

Извените за откровенно тупой вопрос, но я в этом деле только начинающий.
Все получилось.
СПАСИБО ВСЕМ!!!


 
Sandman25   (2004-01-28 13:21) [28]

[27] kolega © (28.01.04 13:16)

Вопрос не тупой, а вполне нормальный.


 
Anatoly Podgoretsky   (2004-01-28 13:52) [29]

kolega © (28.01.04 13:16) [27]
Хм, если благодаришь, то не мешает указхывать каким именно путем воспользовался, это поможет другим.



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

Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.033 c
1-16326
denisWW
2004-01-25 10:47
2004.02.06
Как получить список обьетов принадлежащих известному обьекту?


6-16569
Ign
2003-11-03 14:55
2004.02.06
Использование TUdpSocket


3-16160
webpauk
2004-01-14 16:04
2004.02.06
Метод Post


3-16141
Александр Бакулин
2004-01-15 08:51
2004.02.06
Программное создание хранимой процедуры


1-16359
Grinder
2004-01-24 13:06
2004.02.06
Существует ли форма?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский