Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вытащить из строки определенные данные. как? [D7, WinXP]


Sandman ©   (2009-02-25 16:22:00) 

так. Имеется много строк такого формата.
01.02.2007 14:50:45

Но так же попадаются и 01.02.2007 9:50:45

Нужно именно вытащить из "Времени" минуты. то есть эту цифру 50.
Думал вытащить типо r[15]+r[16] но как я уже говорил в строках иногда разнятся колво символов.
Как еще можно сделать?


brother   (2009-02-26 05:37:00) [1]

> там да по запросу беру с таблицы кучку дат

тогда согласен с [12], очень возможны "грабли" в будущем


Sandman   (2009-02-26 00:19:00) [2]

там да по запросу беру с таблицы кучку дат. И с ними работаю уже


Sandman   (2009-02-26 00:17:00) [3]

Все. Спасибо всем!!!
Разобрался.


MsGuns   (2009-02-25 22:07:00) [4]

Тень от безвозвратно утерянного телепатора шепчет мне, что эти строчки не с бодуна, а возвращены неким запросом :)
А если так, что изучать надо не паскаль, а сиквель :ь


Юрий Зотов   (2009-02-25 21:11:00) [5]

> NieL ©   (25.02.09 17:56) [10]

И по той же причине, если ТОЧНО известно, что в исходной строке разделитель времени ВСЕГДА двоеточие, то проще не заморачиваться с форматами, а использовать Pos-Delete-Pos-Copy.


Юрий Зотов   (2009-02-25 21:08:00) [6]

> NieL ©   (25.02.09 17:56) [10]

В том-то и дело, что в исходной строке локализация русская, а парситься она должна на машине с ЛЮБОЙ локализацией. Поэтому StrToDate может "в лоб" и не прокатить, сначала формат выставить нужно (если еще можно).


Palladin   (2009-02-25 18:01:00) [7]


> NieL ©   (25.02.09 17:56) [10]

1. Еще не дорос до тыкания.
2. Кто сказал даты сформированны именно на этой машине и именно с локацией этой машины?


NieL   (2009-02-25 17:56:00) [8]


> Что будет, если запустить под английской локализацией системы?


А где ты видишь дату в формате под английскую локализацию?
Автор явно указал:

> Имеется много строк такого формата.01.02.2007 14:50:45


Юрий Зотов   (2009-02-25 17:42:00) [9]

> NieL ©   (25.02.09 17:39) [8]

Что будет, если запустить под английской локализацией системы?


NieL   (2009-02-25 17:39:00) [10]

Все намного проще:


implementation

uses DateUtils;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

 function GetMinute(s: string): Integer;
 begin
   Result := MinuteOf(StrToDateTime(s));
 end;

begin
 ShowMessageFmt('%d', [GetMinute('01.02.2007 14:50:45')]);
 ShowMessageFmt('%d', [GetMinute('01.02.2007 9:50:45')]);
end;


Юрий Зотов   (2009-02-25 17:05:00) [11]

> Sandman   (25.02.09 16:22)

Подстрока между первым и вторым двоеточиями - это то, что Вам нужно.

В справке Вы найдете функции Pos, Delete и Copy. Остальное должны придумать и сделать сами. Если не получится - меняйте занятие.


Сергей М.   (2009-02-25 17:02:00) [12]

Тьфу ..
Ну не суть как важно)
Минуты всегда на 3-й и 4-й позиции с конца в отрайттримленной строке)


Denis__   (2009-02-25 16:58:00) [13]


> 2. Это число всегда представлено двумя последними непробельными
> символами в строке, вне зависимо от длины строки.

Последние - это секунды получатся:)


Сергей М.   (2009-02-25 16:33:00) [14]


> то есть эту цифру 50.


1. 50 - это не цифра, а число.
2. Это число всегда представлено двумя последниминепробельными символами в строке, вне зависимо от длины строки.

Ни на какие мысли не наводит это ?)


Ega23   (2009-02-25 16:32:00) [15]

if (r[16]==":") {
 return r[14] + r[15];
} else {
 return r[15] + r[16];
}


Медвежонок Пятачок   (2009-02-25 16:29:00) [16]

Думал вытащить типо r[15]+r[16] но как я уже говорил в строках иногда разнятся колво символов.

посмотреть что за символ там лежит и сделать if then else


Palladin   (2009-02-25 16:25:00) [17]

1. Изучить базовые функции Паскаля, предназначенные для работы со строками
2. Применить голова
3. Написать нужный код


Наверх

Титульная страница Поиск, карта сайта Написать письмо