Вопрос № 97143: Ув. эксперты. Скажите пожалуста, как пишется процедура открытия файла. также скажите плизз как пишется
процедура удаления папки и процедура перезагрузки Windows. 3аранее огромное спасибо всем за ответы 5!...Вопрос № 97159: Доброго времени суток уважаемые эксперты не подскажите, как можно преобразовать строку string в массив integer.
str:=Memo1.Text отсюда беру строку. StrtoInt ругаеться...Вопрос № 97204: Уважаемые эксперты возник вопрос.
у меня есть форма созданная в дизайнере, на ней PageControl c TabSheet'ami и есть Frame созданный тоже в дизайнере, мне нужно в рантайме прилепить этот фрейм к одному из листов PageControl'a как это сделать ?...Вопрос № 97228: Здравствуйте уважаемые эксперты.
Параметр формы Borderstyle="bsNone." (это необходимо для внешнего вида)
Как сделать так чтобы вид остался тот же и появлось возможность менять размер форты так как это происходит когда Borderstyle="bsSizeabl..."Вопрос № 97266: Пишу серьезную программу и хочется сделать для нее хороший интерфейс.
Вот ищу компоненты-скины.
Подскажите какие из них известны Вам и по возможности расскажите о их преимуществах.
Можно и платные, но не чересчур дорогие (до 30-40$)....
Вопрос № 97.143
Ув. эксперты. Скажите пожалуста, как пишется процедура открытия файла. также скажите плизз как пишется
процедура удаления папки и процедура перезагрузки Windows. 3аранее огромное спасибо всем за ответы 5!
Отвечает: Градов Юрий Михайлович
Здравствуйте, Патрикеев Сергей!
1. Пример удаления папки со всем содержимым в приложении (взято из DelphiWorld).
2. Перезагрузка с закрыванием всех процессов, также взята из DelphiWorld
Приложение:
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 02.08.2007, 20:58 Оценка за ответ: 5
Вопрос № 97.159
Доброго времени суток уважаемые эксперты не подскажите, как можно преобразовать строку string в массив integer.
str:=Memo1.Text отсюда беру строку. StrtoInt ругаеться
Отправлен: 02.08.2007, 23:47
Вопрос задал: Lexa82 (статус: 1-ый класс)
Всего ответов: 7 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Omickron
Здравствуйте, Lexa82!
Тип integer определён в Delphi как int32. Т.е. 32 разрядное целое число. Я полагаю, в строке Memo1.Text записано число, большее, чем может вместить в себя integer. Поэтому и генерируется исключение. Кроме того, эта функция не делает массив, а Вам нужен именно массив целых чисел. (преобразовать строку string в массив integer)
Попробуйте организовать цикл:
var mas:array of integer;
i:integer;
......
for i:=1 to Length(Memo1.Text) do
begin
Length(mas):=Lengt(mas)+1;
mas(High(mas)):=StrToInt(Memo1.Text[i]);
end;
Этот код можно улучшить:
во-первых, везде, где есть преобразования чисел в строки и наоборот, этот код нужно заключать в блок try-except (try-finally);
во-вторых, лучше завести строку s:string, в которую сразу записать строку из Memo1.Text. Это связано с тем, что на обращение к компоненту Memo1 и его свойству Text уходит больше времени и системных ресурсов, чем просто к статической строке.
Надеюсь, я Вам помог. Удачи.
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 03.08.2007, 00:25 Оценка за ответ: 4
Отвечает: Louken
Здравствуйте, Lexa82!
Отвечаю на уточненный в минифоруме вопрос: "мне необходимо перевести выражение типа: 00 0A 1F 00 и.т.д. в массив типа byte".
Функция ConvertHex (ее код в приложении) преобразует последовательность шестнадцатиричных чисел в последовательность десятичных чисел. Числа помещаются в динамический массив.
Есть и ограничения у функции ConvertHex:
строка не должна содержать других символов кроме пробела (в любых количествах), цифр и символов A - F в любом регистре (A/a);
все шестнадцатиричные числа должны состоять из двух символов (не больше и не меньше).
Если нужно усовершенствовать функцию или что-то не понятно, то пишите в минифорум.
Удачи.
Приложение:
Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 03.08.2007, 00:58 Оценка за ответ: 5 Комментарий оценки: Спасибо помогло
Отвечает: Виктор Пырлик
Здравствуйте, Lexa82!
Ваша задача, это анализатор строки. Простая по определению, но не по сути. Дело в том, что, алгоритм разбора строки может быть разным. На мой взгляд, оптимальный является работа с памятью по маске – т.е. с указателем на память, где размещен наш массив символов. Смещая «окно» - маску, мы забираем искомые данные, в нашем случае – числа. В приложении приведен код. Это просто пример возможного направления реализации. Основное на что в данном примере надо обратить внимание – на то, что работа ведется с одной строкой.
Компонент TMemo – многострочный, следовательно, если надо анализировать несколько строк, надо просто в цикле их перебрать, или, получить указатель на Memo1.Text, тогда, можно сразу работать со всем массивом но делать проверку на управляющие символы. Код рабочий и прокомментирован. Если есть вопросы – спрашивайте.
PS: конечно надо обрамлять такой код в защищенный блок try...except
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 03.08.2007, 01:52
Отвечает: Bee.line
Здравствуйте, Lexa82!
Попробуйте RealToInt или VarToInt. И обратите внимание какой знак отделяет дробную часть числа (точка или запятая)
Ответ отправил: Bee.line (статус: 1-ый класс)
Ответ отправлен: 03.08.2007, 07:32 Оценка за ответ: 3 Комментарий оценки: Вы когда отвечаете читайте внимательно
Отвечает: Mishell
Здравствуйте, Lexa82!
Смотрите пример в приложении - в нем все числа из строки для наглядности заносятся в ListBox1 (Вам же надо будет заносить их в ваш массив - вместо ListBox1.Items.Add...), ну а все нечисловые значения соотв. пропускаются.
Приложение:
Ответ отправил: Mishell (статус: 4-ый класс)
Ответ отправлен: 03.08.2007, 10:34
Отвечает: Дмитрий С.
Здравствуйте, Lexa82!
Не всё сразу, друг мой :) советую "переделывать" не всё сразу, а поэлементно, т.е. каждый item (string) отдельно.
--------- Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 3-ий класс)
Ответ отправлен: 03.08.2007, 14:23
Отвечает: Балацкий Александр Михайлович
Здравствуйте, Lexa82!
Уточните вопрос: как у вас расположены числа в Memo1.
Вариант1 (массив байт):
var i: integer;
mb: array [1..x] of byte;
s: String;
...
s := Memo1.Text;
For i:= 1 to Length(s) do mb[i]:=Odr(s[i]);
Вариант 2 (Если в каждой строке Memo1 находится целое число):
var mi: array [1..x] of integer;
i, p: integer;
...
If Memo1.Lines.Count > 0 Then
For i:=0 to Memo1.Lines.Count -1 Do
Val(Memo1.Lines[i],mi[i],p);
--------- Еще не один гений не создал того, что не сломал бы другой
Уважаемые эксперты возник вопрос.
у меня есть форма созданная в дизайнере, на ней PageControl c TabSheet'ami и есть Frame созданный тоже в дизайнере, мне нужно в рантайме прилепить этот фрейм к одному из листов PageControl'a как это сделать ?
Отправлен: 03.08.2007, 11:38
Вопрос задал: Кэр Лаэда (статус: Студент)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Виктор Пырлик
Здравствуйте, Кэр Лаэда!
Создано 2 фрейма и на главной форме лежит
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
В конструкторе формы подгружаем фреймы, это можно делать и в процессе работы приложения.
Код в приложении…
Приложение:
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 03.08.2007, 12:17 Оценка за ответ: 5 Комментарий оценки: Похоже на правду, я сделал так
Попробуйте свойству Parent присвоить тот TabSheet, который Вам нужен, примерно так:
Frame1.Parent := TabSheet1;
Честно говоря, я этот приём попробовал с GroupBox, и всё получилось на ура.
Ответ отправил: Delph (статус: 5-ый класс)
Ответ отправлен: 03.08.2007, 12:21 Оценка за ответ: 5 Комментарий оценки: Ок вроди получилось но чуть подругому.
Отвечает: Mishell
Здравствуйте, Кэр Лаэда!
см. пример в приложении
само-собой есть форма Form1, на ней PageControl1 и внем страница TabSheet1, а также есть фрэйм MyFrame
Приложение:
Ответ отправил: Mishell (статус: 4-ый класс)
Ответ отправлен: 03.08.2007, 12:22 Оценка за ответ: 5 Комментарий оценки: Ага пасиба, вроди так и получилось
Отвечает: Shveps
Здравствуйте, Кэр Лаэда!
Это можно сделать "докованием". Для этого существует метод у подобных компонентов и объектов : ManualDock(NewDocSite: TWinControl; DropControl: TControl = nil; ControlSide: Tallign = alNone): boolean, где:
NewDocSite - приемник;
DropControl - другой компонен в приемнике, который должен разместить данного клиента;
ControlSide - выравнивание докуемого клиента.
--------- Пиво ф топку !!! Водку Тоже !!!
Ответ отправил: Shveps (статус: 6-ой класс)
Ответ отправлен: 05.08.2007, 08:58
Вопрос № 97.228
Здравствуйте уважаемые эксперты.
Параметр формы Borderstyle="bsNone." (это необходимо для внешнего вида)
Как сделать так чтобы вид остался тот же и появлось возможность менять размер форты так как это происходит когда Borderstyle="bsSizeable."
Отвечает: Примак Руслан Николаевич
Здравствуйте, Левадный Тимур Русланович!
Я предлагаю сделать ручной обработчик. См. пример кода:
Приложение:
Ответ отправил: Примак Руслан Николаевич (статус: 3-ий класс)
Ответ отправлен: 03.08.2007, 15:17 Оценка за ответ: 5 Комментарий оценки: Большое спасибо
Вопрос № 97.266
Пишу серьезную программу и хочется сделать для нее хороший интерфейс.
Вот ищу компоненты-скины.
Подскажите какие из них известны Вам и по возможности расскажите о их преимуществах.
Можно и платные, но не чересчур дорогие (до 30-40$).
Отправлен: 03.08.2007, 19:25
Вопрос задал: Louken (статус: Студент)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Coupler
Здравствуйте, Louken!
Перепробовал много, но мне больше всего нравятся AlphaControls (выглядят наиболее серьезно, хорошо продуманы). В них практически для всех контролов есть свои, с использованием скинов. C этой страницы вы можете скачать бесплатную версию для жителей бывшего союза (без исходников, но полнофункциональную).
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 03.08.2007, 19:34
Отвечает: Архангельский Андрей Германович
Здравствуйте, Louken!
Я использую Raize Components. Очень большой выбор всяких интерфейсных штучек, позволяют вертеть текст в разные стороны и выдавливать как хочешь.
Хорошая замена библиотеке RxLib_2.5.
Можно построить красивое меню.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО