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

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

переменная string. Поменять местами некоторые данные [D6, Win2k]


Страницы:   1 2 3

Phoenix9000 ©   (2005-05-20 15:11:00) 

Доброго времени суток.

Есть переменная date типа string.

В нее идет запись даты с помощью Datetostr() например:

25.12.1980

нужно сделаь так, чтобы в переменной date2 тоже типа string эта дата была записана как :

12.25.1980

Заранее спасибо за ответ


default   (2005-05-20 16:31:00) [41]

Jeer ©   (20.05.05 16:19) [15]

var
 Form1: TForm1;
 s1: String;
 s2: PChar;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
w: Word;
begin
s1 := '25.12.1980';
s2  := PChar(s1);
w := PWord(@s2[0])^;
PWord(@s2[0])^ := PWord(@s2[3])^;
PWord(@s2[3])^ := w;
Caption := s1
end;


default   (2005-05-20 16:31:00) [42]

Jeer ©   (20.05.05 16:19) [15]

var
 Form1: TForm1;
 s1: String;
 s2: PChar;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
w: Word;
begin
s1 := '25.12.1980';
s2  := PChar(s1);
w := PWord(@s2[0])^;
PWord(@s2[0])^ := PWord(@s2[3])^;
PWord(@s2[3])^ := w;
//// s2[4] := '7';
// Caption := s2[2];
Caption := s1
// PChar для того чтобы избежать внутренних вызовов уникальности строки
// при работе с типом String
end;


default   (2005-05-20 16:23:00) [43]

evvcom ©   (20.05.05 16:15) [14]
в CPU если посмотреть на код

procedure TForm1.Button1Click(Sender: TObject);
var
w: Word;
s: String;
begin
s := '25.12.1980';
w := PWORD(@s[1])^;
PWORD(@s[1])^ := PWORD(@s[4])^;
PWORD(@s[4])^ := w;
Caption := s
end;

то там видны вызововы UniqueStringA, к тому же они прилично длины по сравнению с реально требующимся кодом


Jeer   (2005-05-20 16:21:00) [44]

evvcom ©   (20.05.05 16:05) [12]

Ну почему, сравнивать можно и нужно.
Применяемость зависит от ситуации и нужно знать варианты, методологические.


Jeer   (2005-05-20 16:19:00) [45]

Не знаю, поскольку вылетает:)


evvcom   (2005-05-20 16:15:00) [46]


> // PChar для того чтобы избежать внутренних вызовов уникальности
> строки
>  // при работе с типом String

в [6] итак нет никаких "внутренних вызовов уникальности строки"


default   (2005-05-20 16:11:00) [47]


procedure TForm1.Button1Click(Sender: TObject);
var
 w: Word;
 s1: String;
 s2: PChar;
begin
 s1 := '25.12.1980';
 s2  := PChar(s1);
 w := PWord(@s2[0])^;
 PWord(@s2[0])^ := PWord(@s2[3])^;
 PWord(@s2[3])^ := w;
 Caption := s1
 // PChar для того чтобы избежать внутренних вызовов уникальности строки
 // при работе с типом String
end;

Jeer ©   (20.05.05 15:50) [10]
а так сколько будет?


evvcom   (2005-05-20 16:05:00) [48]

Ну, Marser ©   (20.05.05 15:17) [2] 3105 ns - это не корректно, это был чистый пример использования FormatDateTime, который должен делаться вместо DateToStr. Поэтому сравнивать на скорость этот пример просто неделикатно.


VVV-First   (2005-05-20 16:04:00) [49]

В нее идет запись даты с помощью Datetostr() например:

25.12.1980


а что не прощебудет сразу записать в стрин , так как тебе надо

var
t:TDateTime;
begin
s := FormatDateTime('mm.dd.yyyy',T);
end;


Jeer   (2005-05-20 15:50:00) [50]

evvcom ©   (20.05.05 15:33) [6]

25 ns !!!


Jeer   (2005-05-20 15:47:00) [51]

default ©   (20.05.05 15:32) [5]

Jeer ©   (20.05.05 15:21) [3]
47 ns

Marser ©   (20.05.05 15:17) [2]
3105 ns


evvcom   (2005-05-20 15:43:00) [52]


> default ©   (20.05.05 15:35) [7]

Я это понял, но тем не менее начиная с этого поста (Jeer ©   (20.05.05 15:21) [3]) можно смело ставить смайлики. Хотя новичка, не знающего [1], должно заинтересовать и [3], и [6], и есть еще варианты, и все они работают.


default   (2005-05-20 15:35:00) [53]

evvcom ©   (20.05.05 15:33) [6]
тут интерес то весь был в точках(без дополнительных переменных):) мы ведь знаем что они там всегда есть и стирая при перестановке не теряем никакой информации


evvcom   (2005-05-20 15:33:00) [54]


> Jeer ©   (20.05.05 15:21) [3]

var w: Word;
begin
 w := PWORD(@s[1])^;
 PWORD(@s[1])^ := PWORD(@s[4])^;
 PWORD(@s[4])^ := w;
end;


default   (2005-05-20 15:32:00) [55]

Jeer ©   (20.05.05 15:21) [3]
забавно:)
Вы бы в своём коде стали так писать или же ф-ции использовать?


Alexander Panov   (2005-05-20 15:23:00) [56]


> Phoenix9000 ©   (20.05.05 15:11)
> Доброго времени суток.
>
> Есть переменная date типа string.


Не надо использовать идентификаторы переменных, которые аналогичны названиям функций.


Jeer   (2005-05-20 15:21:00) [57]

s[3] := s[1]
s[6] := s[2]
s[1] := s[4]
s[2] := s[5]
s[4] := s[3]
s[5] := s[6]
s[3] := '.'
s[6] := '.'


Marser   (2005-05-20 15:17:00) [58]

var d:TDateTime;
begin
 d:=StrToDate('25.12.1980');
 caption:=formatdatetime('mm.dd.yyyy',d);


Ega23   (2005-05-20 15:14:00) [59]

FormatDateTime + F1


Страницы:   1 2 3

Наверх

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