Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Я начинающий, подскажите пожалуйста, как...

257
25 февраля 2007 года
kosfiz
1.6K / / 18.09.2005
Уважаемые участники!
Если вы только начинаете осваивать Delphi или считаете, что ваш вопрос простой для более опытных участников форума, то задавайте его здесь, не надо создавать для этого отдельные темы.

Если вы размещаете вопрос здесь, то , пожалуйста, прочтите следующее:
1. когда будете задавать свой вопрос, то делайте это нажимая на "ответ"(не путать с "быстрый ответ") и кратко указывайте в "заголовке" тему своего вопроса;
2. опишите чего вы хотели добиться.
3. если у вас возникла какая-то ошибка, и вы не знаете как её исправить, то обязательно приведите текст самой ошибки;
4. если это необходимо, приведите фрагмент вашего кода(ни в коем случае не надо писать весь код), также при добавлении кода пользуйтесь тегами([code ] и [ /code]);
5. укажите версию Delphi, которую используете и все настройки проекта;
6. если у вас возникли проблемы с нестандартными компонентами, то обязательно приведите ссылку, по которой их можно скачать.
7. соблюдайте правила форума

Удачи.
Модераторы форума Delphi & Kylix: Delpher, kosfiz & OlgaKr
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.

1127 ответов / показаны 1081 - 1119

Страницы:
26K
26 апреля 2011 года
Kliper
47 / / 02.11.2007
Что-то тема померла, никто не спрашивает, никто не отвечает...
Проявите милосердие...

Вопрос: мне надо отправить с возвратом переменную компонента в процедуру, а компилятор ругается что так нельзя ([Error] Constant object cannot be passed as var parameter) . Как это сделать? Вот пример кода с этой ошибкой:
 
Код:
procedure TForm1.Button1Click(Sender: TObject);

  procedure Proc(var n:integer);
  begin
  n:=100;
  end;

begin
Proc(Label1.Tag);
end;
19K
27 апреля 2011 года
Alegun
269 / / 10.09.2010
Если не ошибаюсь, то просто надо добавить ещё одну переменную:
Код:
procedure TForm1.Button1Click(Sender: TObject);
  procedure Proc(var n:integer);
  begin
  n:=100;
  end;

var
LabTag: integer;
begin
Proc(LabTag);
Label1.Tag:= LabTag;
end;

Должно работать.

(или так):
 
Код:
procedure TForm1.Button1Click(Sender: TObject);
  function Proc: integer;
  begin
  Result:= 100;
  end;

begin
Label1.Tag:= Proc;
end;
26K
29 апреля 2011 года
Kliper
47 / / 02.11.2007
Спасибо, но оба варианта не то... В первом случае это громоздко т.к. подобных вызовов много, во втором мне нужна именно процедура, т.к. посылаемое значение может быть как входным так и выходным параметром
Попробовал через указатели
 
Код:
Button1Click(Sender: TObject);

  procedure Proc(n:Pinteger);
  begin
    n:=100;
  end;

begin
Proc(@Label1.Tag);
end;

но и тут проблемы. Компилятор берет не все компоненты, например
PageControl1.ActivePageIndex
CheckListBox1.Checked[1]
не идут
19K
29 апреля 2011 года
Alegun
269 / / 10.09.2010
По ходу по-другому это сделать нельзя (Constant object cannot be passed as var parameter) Попытка изменить константную величину не явно, к хорошему не приведёт.
71K
07 мая 2011 года
IT-Dumm
1 / / 07.05.2011
Написал программу-тест (проверка знаний) используя зашифрованные TXT-файлы. Принцип работы таков:
1.Появляется форма где водится имя испытуемого и пароль (см. дальше);
2. После нажатия на кнопку "Далее" запускается тест.

Подскажите как добавить:

1. Функцию блокировки программы (не запуска не самого EXE-файла, а теста) в течении определенного времени если испытуемый не прошел тест.
2. Возможность отключить блокировку введя определены пароль.
3. Возможность с помощью меню (которое вызывается введением пароля) изменять пароль на отключения блокировки и на вызов данного меню + изменять время блокировки.

Может кто нибудь подскажет вариант со сохранением настроек в зашифрованій файл...?

P.S. Хочу сразу предупредить, что я новичок и с БД не умею работать.
Буду очень благодарен всем кто поможет
14
07 мая 2011 года
Phodopus
3.3K / / 19.06.2008
1. Добавить переменную определяющую с какого момент можно использовать программу далее. Наверное стоит ее сохранять при обновлении и читать при запуске. Из того же файла, например.
2. Не вижу сложностей, ввели пароль - сбросили переменную.
3. Еще одна переменная (время блокировки). Тоже пусть сохраняется в файл.

А что тут подсказывать.. Сохраняйте настройки в зашифрованный файл..
62K
16 мая 2011 года
Leoha88
7 / / 19.10.2010
Помогите с копированием фалов, суть такова:
необходимо выбранный в OpenDialog1 файл скопировать в папку Rent,находящуюся в одном каталоге с .exe файлом.
 
Код:
procedure TF_Rent_Change.BitBtn1Click(Sender: TObject);
var file1:string;
    pc:PChar;
begin
OpenDialog1.Execute;
file1:=OpenDialog1.FileName;
pc:=PChar(file1);
CopyFile(pc,PChar(GetCurrentDir+'\Rent\1.rar'),True);
end;


После выполнения, ничего не происходит.Пробовал все различные способы найденные в интернете.
14
17 мая 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: Leoha88
Помогите с копированием фалов, суть такова:
необходимо выбранный в OpenDialog1 файл скопировать в папку Rent,находящуюся в одном каталоге с .exe файлом.
После выполнения, ничего не происходит.Пробовал все различные способы найденные в интернете.


1. if OpenDialog1.Execute ....
2. CopyFile(PChar(dlgOpen.FileName) - вполне достаточно, зачем лишние переменные в данном случае
3. Win32Check(CopyFile(...));
4. Забудьте о GetCurentDir. И не вздумайте выставлять настройку TOpenDialog noChangeDir или-как-оно-там, каталог программы [COLOR="#ff0000"]<>[/COLOR] текущий, каталог программы = каталог exe файла программы.

71K
27 июля 2011 года
jet-pilot
7 / / 19.07.2011
Есть такая проблема: мне нужен TPaintBox, растянутый на всю форму, а в связи с этим два вопроса:
1.Существует ли процедура в TForm, реагирующая на изменение размера окна? Если есть, то как называется?
2.Если сделать код
PaintBox1.height:=Form1.height;
PaintBox1.width:=Form1.width;
то появятся полосы прокрутки, которые очень не нужны. Они исчезают только при
PaintBox1.height:=Form1.height-32;
PaintBox1.width:=Form1.width-35;
но появляется пустое пространство между краем PaintBox и формой в 32 и 35 пикселей. Как это исправить?
7
27 июля 2011 года
@pixo $oft
3.4K / / 20.09.2006
Очевидимо,Form1.height/width–это ПОЛНАЯ высота/ширина формы.Должно быть свойство,которое возвращает клиентскую ширину/высоту
278
27 июля 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=@pixo $oft]
Должно быть свойство,которое возвращает клиентскую ширину/высоту
[/QUOTE]
Form1.ClientWidth / Form1.ClientHeight. :)
6.2K
01 августа 2011 года
thenilman
44 / / 28.05.2005
Пытаюсь парсить XML-файл, генерирующийся удаленным сервером, делаю это следующим образом (Delphi 7):

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  XMLDoc: TXMLDocument;
  Node : IXMLNode;
  ms : TMemoryStream;
  idHttp : TIdHTTP;
begin
  idHttp:=TIdHTTP.Create(nil);
  ms:=TMemoryStream.Create;
 
  idHttp.Get('mycoolsite/1.php', ms);
  ms.Seek(0, 0);

  XMLDoc:=TXMLDocument.Create(nil);
  XMLDoc.LoadFromStream(ms);
  XMLDoc.Active:=true;

  Node:=XMLDoc.DocumentElement.ChildNodes.Nodes[0];
  Memo1.Lines.Add(VarToStr(Node.ChildNodes['stream'].ChildNodes['id']));

  XMLDoc.Active:=false;
  XMLDoc.Free;
  ms.Free;
  idHttp.Free;

end;


Стабильно падает с access violation на присвоении
 
Код:
Node:=XMLDoc.DocumentElement.ChildNodes.Nodes[0];

Сразу хотелось бы заметить, что ответ от сервера приходит не пустой (я проверял), в заголовке xml-файла есть encoding="utf-8" и сам файл приходит тоже в utf-8.

К сожалению, все мои танцы с бубном не дали должного эффекта. А интуиция подсказывает, что раз такие падения, то я что-то делаю совсем не так. Где я допустил ошибку?
14
10 августа 2011 года
Phodopus
3.3K / / 19.06.2008
для начала
 
Код:
var
  XMLDoc: IXMLDocument;
26K
03 сентября 2011 года
Kliper
47 / / 02.11.2007
Здравствуйте.
Пытаюсь откорректировать компонент, конкретно SpinEdit из Samples в Delphi7. Добавляю свои поля. Программно всё работает, но то что добавил не отображается в инспекторе объектов, хотя должно бы. Танцы с бубнами не помогли. Вопрос: что надо сделать чтобы все там отобразилось?
 
Код:
published
...
  property Value: LongInt read GetValue write SetValue; //Родное
  property ValueFl: Double read GetValueFl write SetValueFl; //Модификация (добавка)
...
14
04 сентября 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: Kliper
Вопрос: что надо сделать чтобы все там отобразилось?


Перекомпилить и переустановить samples.dpk

26K
09 сентября 2011 года
Kliper
47 / / 02.11.2007
Цитата: Phodopus
Перекомпилить и переустановить samples.dpk



Нет такого файла. Если можно поподробней.

14
10 сентября 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: Kliper
Нет такого файла. Если можно поподробней.


[COLOR="gray"]Оу. Ну да. Ну включите его в dclusr.dpk и компильните в нем - разницы особой нет.[/COLOR]

Хм. Да. Там нет процедуры Register, не покатит. Да и в Samples не только этот компонент. Тогда предлагаю назвать свой компонент иначе и добавить в dclusr.dpk с процедурой Register. Пример можно глянуть например тут:
C:\Program Files\Delphi7\Source\Decision Cube\MXREG.PAS
C:\Program Files\Delphi7\Source\Property Editors\BDEReg.pas

76K
17 октября 2011 года
cyber922
2 / / 17.10.2011
Помогите испраить код для задания, убил все выходные(
Вот задани
Выполнить табулирование функции на отрезке от хнач до хкон с шагом
h=Хнач-Хкон/N. Величины хнач , хкон , число точек N и параметр a вводить из однострочных полей редактирования. При нажатии на кнопку «Вычислить» произвести вычисления в точках отрезка, отстоящих друг от друга на шаг h. Результаты вычислений занести в одномерный массив результатов. При нажатии на кнопку «Вывод f(x)» вывести значения массива результатов в многострочное редактируемое поле Memo. При нажатии на кнопку «Выход» завершить работу приложения. Произвести табулирование для фукции:Корень квадратный,в нем дробь(3x+4ax)\10a

Вот код
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x1,x2,N,i : integer;
m , a, h, y, x : real;
result : array [1.. 10] of real;
begin
a:=StrToFloat(Edit4.Text);
x:=x1;
// Вычисление шага функции
h:=(x2-x1)/N;

begin
Memo1.Lines.Add(FloatToStr(y));
x:=x+h;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var y,i,a,x,h:real;begin
begin
y:= sqrt(3*x+4*a*x)/10/a;
Memo1.Lines.Add(FloatToStr(y));
x:=x+h;
end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Edit1Change(Sender: TObject);
Var x1:real;begin
x1:=StrToInt(Edit1.Text);
end;

procedure TForm1.Edit2Change(Sender: TObject); Var x2:real;begin
x2:=StrToInt(Edit2.Text);
end;

procedure TForm1.Edit3Change(Sender: TObject);
var h,N, x2,x1 :real;begin
N:=StrToInt(Edit3.Text);
h:=(x2-x1)/N;

end;
procedure TForm1.Edit4Change(Sender: TObject);
var a:real;begin
a:=StrToFloat(Edit4.Text);
end;



end.
Очень надо:(
277
17 октября 2011 года
arrjj
1.7K / / 26.01.2011
Цитата: cyber922
Помогите испраить код для задания, убил все выходные(
...
Очень надо:(


Переменные не в функциях объявляй, а где Form1:TForm1; объявлен.

76K
18 октября 2011 года
cyber922
2 / / 17.10.2011
Цитата: arrjj
Переменные не в функциях объявляй, а где Form1:TForm1; объявлен.


то есть у меня всё правильно, только переменные нужно перенести?:confused:

76K
25 октября 2011 года
DelphiProgrammist
1 / / 25.10.2011
Через TChart хочу нарисовать параболу по формуле у = а*х*x + b*х + с.
Изначально указывая что A, B, C будут равны 1. От пользователя только ввести Х. Сперва рисовал через Канву, но потом узнал о TChar но появились трудности написания формулы.

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   a := 1;
   b := 1;
   c := 1;
   x := StrToInt (Edit1.Text);

   for i :=1 to 100 do
     begin
       Series1.Clear;
       Series1.AddXY(y := a*x*x + b*x + c) //собственно как тут следует оформлять?
     end;
end;
77K
26 ноября 2011 года
black777jack
2 / / 26.11.2011
всем привет!!! Помню давненько на windows xp делал такой прикол под названием "загрязнение экрана", его еще часто называют как черный экран, снежный экран, что то напоминает эффект балончика в Paint. Такая фишка есть в Grob Trojan называется она загрязнение экрана. вот видео, на windoes 7 почему то берет много памяти и тормозит.ври видео: http://webfile.ru/5693483

что-то похоже на uses
windows,
Graphics;

var
tt:TCanvas;

begin

tt:= TCanvas.Create;
tt.Handle := GetDC(0);
while true do
begin
sleep (1);//чем больше тем меньше скорость заполнения
tt.LineTo(random(240),random(240));//занижено чтобы можно было выключить


end;
end.

в консоле
7
26 ноября 2011 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: black777jack
на windoes 7 почему то берет много памяти и тормозит

Особенности графики в Windows 7

Цитата: black777jack
ври видео

Т9 такой Т9…Хоть бы смотрел,что пишешь ☺

Цитата: black777jack
в консоле

Откуда вы берёте это наипаскуднейшее слово?!

Консоль,кстати,не нужна тут.И да,канву кто освобождать будет?

77K
26 ноября 2011 года
black777jack
2 / / 26.11.2011
Цитата: @pixo $oft
Особенности графики в Windows 7Т9 такой Т9…Хоть бы смотрел,что пишешь ☺Откуда вы берёте это наипаскуднейшее слово?!

Консоль,кстати,не нужна тут.И да,канву кто освобождать будет?



Console application тебе так пойдет? могу объяснится по английски если слово консоль по русски подрозумевается другое.

"Хоть бы смотрел,что пишешь" я опечатался, мог бы понять, или ты такой зомби программер что тебе нужно точно писать букву в букву, точно как американец лол.

Ну нахрена этот разговор заводить чувак??? не смог помочь прошел мимо. в чем проблемы?

7
26 ноября 2011 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: black777jack
или ты такой зомби программер что тебе нужно точно писать букву в букву

Мне?Нет,не надо:) А накидываться сразу тоже не надо,кстати.И чувство юмора хоть малейшее не помешало
В Windows 7 используется несколько иной механизм отрисовки.Попробуй задержку увеличь
ReleaseDC не забываем тоже

[COLOR="#eeeeee"]P.S.Ну и,дабы окончательно развеять все сомнения,писа́ть надо «в консолИ»[/COLOR]

77K
27 ноября 2011 года
akimo
1 / / 27.11.2011
Доброго дня, подскажите пожалуйста!

Есть такая задача нарисовать диаграммы двух типов с помощью Canvas (другие варианты не рассматриваются), предполагается что есть десять значений от 0 до 10 (ограничение), на форме разместил 10 шт. эдитов и один элемент paintbox.

Как построить диаграмму из этих десяти значений? Диаграммы должны быть: 1. Стандартная в виде графика, 2. Столбцовая.


Дополнительный вопрос, как задать одновременно для 10 эдитов ограничения на ввод значений от 0 до 10?
14
27 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Диаграмму нарисовать с помощью методов Canvas (MoveTo, LineTo, FillRect..), примеры диаграмм можно посмотреть хоть в Excel.
Для числового ввода будет удобнее использовать SpinEdit.
26K
13 декабря 2011 года
Kliper
47 / / 02.11.2007
Здравствуйте.
Есть программа, организован трей.
Как сделать чтобы из автозапуска программа запускалась в свернутом виде, т.е. в трее?
1
13 декабря 2011 года
kot_
7.3K / / 20.01.2000
свернуть ее туда? :)
26K
14 декабря 2011 года
Kliper
47 / / 02.11.2007
Цитата: kot_
свернуть ее туда? :)



Она сама должна свернуться при запуске по ярлыку из автозапуска.
Т.е включается комп, запускается прога, но в свернутом виде, дабы не маячила. А если в ручную то как обычно в развернутом. Как это реализовать/отследить?

7
14 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Самый наипростейший(и от этого не менее ходовый) вариант—с помощью ключа командной строки,указывающего,что запустить надо именно в свёрнутом виде
26K
14 декабря 2011 года
Kliper
47 / / 02.11.2007
Цитата: @pixo $oft
Самый наипростейший(и от этого не менее ходовый) вариант—с помощью ключа командной строки,указывающего,что запустить надо именно в свёрнутом виде


Это ее нужно из командной строки чтоли все время запускать?
Примерчик можно?

7
14 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Ды нет же!:)
Автозапуск как делается?Допустим,через реестр—создаёшь параметр типа REG_SZ с именем,допустим,MyProgAuto и задаёшь ему значение вроде C:\<путь к программе>\MyProg.exe -tray
В программе анализируешь аргументы командной строки и на основании их принимаешь нужное решение(не было аргументов—показываешь окно,был «-tray»—не показываешь)
19K
14 декабря 2011 года
Alegun
269 / / 10.09.2010
Цитата: Kliper
Это ее нужно из командной строки чтоли все время запускать?
Примерчик можно?



На автозапуске, при старте Windows записываем так (в реестре или ярлыке):

 
Код:
"с:\myprog.exe -tray"
, а в самой программе следующее:

Код:
procedure TForm1.FormShow(Sender: TObject);
 begin
 if ParamCount > 0 then
  if Paramstr(Paramcount) = '-tray' then
begin

// Здесь делаем что-то с показом главной формы, например,
// если она по дефолту видна, то её скрываем:

Visible:= false;

end;


Можно это делать прям в проекте (*.dpr) - так артефактов с морганием формы не будет. Проще способа нет.
10
15 декабря 2011 года
Freeman
3.2K / / 06.03.2004
На самом деле, если делать Visible := False внутри OnShow, можно нарваться на рекурсию. Чтобы главная форма не мелькала при запуске, в VCL вроде был штатный Application.ShowMainForm. Вот его и надо ставить в False после анализа командной строки. А анализ делать ещё до Application.Run, в отдельной процедуре.
26K
15 декабря 2011 года
Kliper
47 / / 02.11.2007
Спасибо большое, буду пробовать
26K
15 декабря 2011 года
Kliper
47 / / 02.11.2007
Цитата: Alegun
На автозапуске, при старте Windows записываем так (в реестре или ярлыке):

 
Код:
"с:\myprog.exe -tray"



А куда именно прописать в ярлыке? Попробовал в свойства/ярлык поле объект - выдает ошибку - неправильное имя файла

Там есть поле "окно" если выставить свернутое - сворачивается но в этом случае нет вызова FormShow, что меня немного не устраивает

7
15 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
«Окно» не трогай:) И вынеси «-tray» за кавычки,т.е.
 
Код:
"C:\MyProg.exe" -tray
14
16 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
а мне «Окно» кажется более правильным вариантом. А на show рассчитывать нечего, ибо по логике его нет. Всего лишь мнение.
19K
17 декабря 2011 года
Alegun
269 / / 10.09.2010
Цитата: Kliper
А куда именно прописать в ярлыке? Попробовал в свойства/ярлык поле объект - выдает ошибку - неправильное имя файла

Там есть поле "окно" если выставить свернутое - сворачивается но в этом случае нет вызова FormShow, что меня немного не устраивает



Чтоб долго рязинку не тянуть, вот примерчик как создать ярлык с нужными параметрами в автозагрузке. Компилим (под D7, но и в других делфях всёравно пойдёт:-), жмём на кнопку, перезагружаемся - можно и без перезагрузки: просто жмём в меню "Пуск -> Автозагрузка" на новый ярлычок, смотрим надпись на лейбле, затем запускаем компилянт просто из папки и глядим туда же - разница чувствуется?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог