Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 13:06 02.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Тема да отрежа първите 5 симбола или  
Авторpoди (Нерегистриран)
Публикувано19.06.06 17:04



Търсих нещо ама не го виждам ...
Имам стринг и искам да отрежа първите 4 или 5 символа и използвах

line := BufferListBox.Items[x];
onPos := AnsiPos('D', line);
SetLength(line, onPos-1);

ама може да имам С вместо D ....... дали няма по-лесен начин

или от line да отрежа сума, ама тя може да е 4567,89 ама може и да е 45678,90
Как да си се разхождам по тоз стринг не мога да се начудя


Дайте малко акъл. Благодаря на съветниците предварително!



Тема Re: да отрежа първите 5 симбола илинови [re: poди]  
Автор andrew_nikoloff (bugbuster)
Публикувано19.06.06 17:27



Можеш да пробваш нещо от типа на:


var
idx: Integer;
newLine: String;
FDecimalSeparatorFound: Boolean;
...
line := BufferListBox.Items[x];
newLine := '';
FDecimalSeparatorFound := False;
for i := 1 to Length(line) do
case line[idx] of
'0'..'9': newLine := newLine + line[idx];
DecimalSeparator: begin
if not FDecimalSeparatorFound then
begin
FDecimalSeparatorFound := True;
newLine := newLine + line[idx];
end;
end;
end;

Вместо за DecimalSeparator можеш да си гледаш и за запетая, ако знаеш, че числата ще са винаги с нея, а не с настройката.

ПП
Забравих да уточня, че това ще вземе всички числа от реда. Ако искаш да вземеш само тези в началото на реда сложи един else на case-а и там прекрати цикъла с break.

Редактирано от andrew_nikoloff на 19.06.06 17:29.



Тема Re: да отрежа първите 5 симбола илинови [re: poди]  
Автор vido (новак)
Публикувано19.06.06 17:32



s: String;

Разхождаш се с: s

а за рязането:
Copy, Delete, AnsiLeftStr, AnsiRightStr
как се използват: F1

А смисъла на останалато не го разбрах. Какво са C, D, 4567,89 и 45678,90.
Ако са числа: StrToFloat



Тема Re: да отрежа първите 5 симбола илинови [re: vido]  
Авторrodi (Нерегистриран)
Публикувано19.06.06 19:21



да уточня:

стринга, се състои от:
[име_на_поле_за_край на блок][С][GGMMDD][вид_валута][оборот]
име_на_поле_за_край на блок=5 симбола
имам няколко блока с начало и край образно казано, взимам края на всеки блок и сумирам оборотите и накрая имам
[име_на_поле_за_край на блок][С][GGMMDD][вид_валута][сума]

като завъртам цикъл за да намеря кои редове ми са край на блок, там режа първите 5 символа, а за оборота се чудех как да познавам от къде до къде е та да го съхрана нейде до момента на смятане на суматаааа



мерси за идеите, сега ще проверя кое колко съм разбрала



Тема Re: да отрежа първите 5 симбола илинови [re: rodi]  
Автор vido (новак)
Публикувано19.06.06 21:57



Разхождането е s[к] к - индекс (в предходния пост го написах с "i" и се включи италик

)

Ако дължината на:
[име_на_поле_за_край на блок][С][GGMMDD][вид_валута]
е фиксирана, сумата ще се вземе лесно.
Ако има разнообразие ще трябва да се търсят маркери с Pos.
В краен случай с регулярни изрази. Аз бих ги използвал (има готови модули), защото ще ми разбият целия ред на отделни полета с 2-3 реда код.
Другото вече го написах



Тема Re: да отрежа първите 5 симбола илинови [re: vido]  
Авторpoди (Нерегистриран)
Публикувано19.06.06 22:42



Хами ДА!
Както режа първите 5 симв. така ще ще стигам и до сумата!!

// na koi red e :62F:
EndBlockListBox.Items.BeginUpdate;
for x:=0 to BufferListBox.Items.Count-1 do
begin
line := BufferListBox.Items[x];
onPos := AnsiPos('D', line);
SetLength(line, onPos-1);
if line = ':62F:' then
EndBlockListBox.Items.Add(IntToStr(x)); //Exit;
end;
EndBlockListBox.Items.EndUpdate;

Мисля да не разфасовам стринга ... за сега .... ще трябва да прочета повече



Тема Хе, хе, не си пи четеш постовете?нови [re: poди]  
Автор NikB (любопитен)
Публикувано20.06.06 15:00



Хе, хе, не си пи четеш постовете преди да ги постнеш?
От твоя пост нищо не се рабира.
Може ли да има "Б" вместо "Ц" или "Д"?



Тема така е, съжелявам ...нови [re: NikB]  
Авторrodi (Нерегистриран)
Публикувано21.06.06 12:12



За съжаление малко съм припряна тези дни и постовете не са четливи

С отрязването на първите 5 символа се справих с
Pole := AnsiLeftStr(line, 5);
така дори не се интересувам Ц ли е Д ли е

А извличанетоо на оборотите за да ги сумирам с АнсиМидСтр






Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.