Topic: Несколько вопросов 4

Уважаемы Дмитрий!
1. Что такое функция Random? От англ - насколько я помню это случайно, поправьте если я не прав. Дайте пример использования этой функции
2. Чем отличается MessageDlg от MessageBox и дайте пожалуйста пример использования MessageBox

Спасибо заранее!

Re: Несколько вопросов 4

Здравствуйте.


1. Возвращает случайное значение от 0 до 1, т.е. числа с плавающей запятой, например 0,23346753 или 0,82347237272

Если например нужно получить случайное число от 0 до 10:

Random*10

но число будет также с плавающей запятой, например 5,343434


Чтобы получать целые числа от 0 до 10

Trunc(Random*10)


2. Пример
http://myvisualdatabase.com/forum/viewt … 698#p18698


Отличается тем, что MessageBox позволяет изменить заголовок сообщения, также кнопки будут переведены, в соответствии с региональными настройками Windows.

Dmitry.

Re: Несколько вопросов 4

а как использовать функцию Random на примере букв, т.е. в реале она берет цифры от 0 до 10, а  надо чтобы брал буквы от А до Я.

Re: Несколько вопросов 4

bemorhona-qt wrote:

а как использовать функцию Random на примере букв, т.е. в реале она берет цифры от 0 до 10, а  надо чтобы брал буквы от А до Я.

chr(trunc(Random*32)+1040)

В unicode русские заглавные символы имеют диапозон кодов 1040 - 1071
Т.о. функция random генерирует данный диапазон цифр, а функция chr преобразует код символа в символ.

Dmitry.

Re: Несколько вопросов 4

Спасибо большое, есть очень срочная проблема:
Имеется txt файл в котором храниться детализация звонков. Примерная строка в файле выглядит так:

          1 2-71-23   2-22-42           ЋЃ‹.  ‡„ђЂ‚( ае)                        07.01/10:06     1    0,035
          2 2-71-23   2-22-42           ЋЃ‹.  ‡„ђЂ‚( ае)                        07.01/10:07     1    0,035
          3 2-71-23   2-33-71           ѓЋђЋ„‘ЉЂџ ЃЋ‹њЌ€–Ђ( ае)                 07.01/13:23     1    0,035
          4 2-71-23   2-33-71           ѓЋђЋ„‘ЉЂџ ЃЋ‹њЌ€–Ђ( ае)                 08.01/ 8:26     1    0,035
          5 2-71-23   2-33-71           ѓЋђЋ„‘ЉЂџ ЃЋ‹њЌ€–Ђ( ае)                 08.01/ 8:40     1    0,035

Этих строк очень много. Надо удалить все другие символы и оставить только сумму, в данном примере 0,035. Итого конечный результат будет:
0,035
0,035
0,035
0,035
Помогите с реализацией. Если можно с выгрузкой в Excel.

Re: Несколько вопросов 4

bemorhona-qt
Приложите пожалуйста текстовый файл с данными, т.к. необходимо знать, что используется в качестве разделителя колонок.

Dmitry.

Re: Несколько вопросов 4

Если в качестве разделителя используется табуляция, то всё очень просто.

  • Открываете Excel.

  • В меню выбираете пункт "Открыть файл". В фильтре файлов поставьте, чтобы отображались все файлы.
    Найдите свой текстовый файл.

  • Появится окно, в котором надо выбрать пункт "с разделителями". Щёлкаете на кнопку "Далее".

  • В новом окне в качестве разделителей выберите "знак табуляции". В нижнем окне предпросмотра убедитесь, что Excel правильно разделил данные по столбцам.

  • В следующем окне оставьте всё, как есть. И завершите работу мастера. 
    Затем удалите лишние столбцы.

Re: Несколько вопросов 4

Уважаемый alex842!
Спасибо за помощь, сделал как вы сказали, получилось но не так как надо. Надо это скриптом как это сделать.

Re: Несколько вопросов 4

Уважаемый Дмитрий!
По поводу этого вопроса нашел вашу программу RegExp (http://myvisualdatabase.com/forum/misc. … download=1).
Теперь в поле Memo1 ставлю этот текст:
          1 2-71-23   2-22-42           ЋЃ‹.  ‡„ђЂ‚( ае)                        07.01/10:06     1    0,035
          2 2-71-23   2-22-42           ЋЃ‹.  ‡„ђЂ‚( ае)                        07.01/10:07     1    0,15
          3 2-71-23   2-33-71           ѓЋђЋ„‘ЉЂџ ЃЋ‹њЌ€–Ђ( ае)                 07.01/13:23     1    0,75
          4 2-71-23   2-33-71           ѓЋђЋ„‘ЉЂџ ЃЋ‹њЌ€–Ђ( ае)                 08.01/ 8:26     1    0,07
          5 2-71-23   2-33-71           ѓЋђЋ„‘ЉЂџ ЃЋ‹њЌ€–Ђ( ае)                 08.01/ 8:40     1    0,05
В поле Edit1 пишу 0(,*?) но результат у меня только 0. А надо чтобы в каждой строке искало 0, и выдавало все что находится после 0, и 0, включительно, пример:
0,035
0,15
0,75
0,07
0,05
Как быть?

Re: Несколько вопросов 4

Нашел решение, выражение выглядит так: \d,\d+
Мне надо было найти все числа которые имеют дробную часть, например 0,0350
Поясню для тех, кто не знает:
\d - любое число
, - понятно что запятая это дробная част
\d+ - опять любое число или больше

Вот вам все основные выражения которые используются:
[abc]    A single character of: a, b, or c
[^abc]    Any single character except: a, b, or c
[a-z]    Any single character in the range a-z
[a-zA-Z]    Any single character in the range a-z or A-Z
^    Start of line
$    End of line
\A    Start of string
\z    End of string
.    Any single character
\s    Any whitespace character
\S    Any non-whitespace character
\d    Any digit
\D    Any non-digit
\w    Any word character (letter, number, underscore)
\W    Any non-word character
\b    Any word boundary
(...)    Capture everything enclosed
(a|b)    a or b
a?    Zero or one of a
a*    Zero or more of a
a+    One or more of a
a{3}    Exactly 3 of a
a{3,}    3 or more of a
a{3,6}    Between 3 and 6 of a

Также прикрепил к примеру Дмитрия если он не против.

Post's attachments

Attachment icon RegExp.zip 5.54 kb, 425 downloads since 2017-02-04 

Re: Несколько вопросов 4

Уважаемый Дмитрий!
Как добавить к программе RegExp функции найти, найти все, заменить на и заменить все на?

Re: Несколько вопросов 4

К сожалению я не обладаю навыком составления регулярных выражений.

Dmitry.