![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вытащить из строки определенные данные. как? [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. Написать нужный код