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

Ваш аккаунт

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

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

Подписчиков: -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 ответов / показаны 1001 - 1039

Страницы:
3.2K
11 мая 2010 года
Гудвин
186 / / 22.12.2007
как сделать так чтоб при изменении квадратной формы она оставалась квадратной? форма с прорисовкой, и если просто высоте ширину приравнивать в onResize получается не очень хороший эффект с прорисовкой и границами окна
303
11 мая 2010 года
makbeth
1.0K / / 25.11.2004
Вместо OnResize используй OnCanResize. В нем в параметрах обработчика задавай нужную ширину и/или высоту.
6.2K
13 мая 2010 года
thenilman
44 / / 28.05.2005
Добрый день!
Может быть, у кого-нибудь найдется пример блокировки файла по чтению\записи с применением семафоров? Мне надо как-то разобраться с ними. Проблема в том, что сабж совершенно не гуглится - при слове семафор вылезает куча ссылок на работу с многопоточностью, а про банальную блокировку файлов ничего нет :(

Помогите, пожалуйста...
14
14 мая 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: thenilman
Может быть, у кого-нибудь найдется пример блокировки файла по чтению\записи с применением семафоров?


Блокировку чего и от чего. Нужна полная ясность. Семафоры при блокировке файлов особо не при чем, это объект синхронизации.

61K
19 мая 2010 года
saimon47sa
1 / / 19.05.2010
Есть набор констант с точностью до 15 знака+ все переменные и массивы типа Extended.
Если я тупо присваиваю значение константы какой либо переменной то делфи отображает уже 10 знаков.При этом если навести курсор на константу(в режиме отладки) то через черту отображаеться тоже 10 значное значение.(выглядит примерно так: "число 15 знаков"| "округленное до 10")
При заполнении массивов тоже должно быть 15 знаков ,но отображаеться в watch только 10, да и результаты тоже 10 значные.Иногда вылазит 11 знак.А так если идет дальше ,добавляет мантису к числу и все.....
Что нужно сделать чтобы работать именно с 15 знаками.
Оригинальная программа составленна на фортране еще, там вообще тип риал стоит, а работает он с 15 знаками а дальше е.
У меня 2010 делфи заплат вроде нету.Если мне память не изменяет в 2007 было также.
14
19 мая 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: thenilman
Да черт его поймет вообще, что от меня хотят
вот фото


1. уточнить что хотят
2. фото [COLOR="Silver"]было[/COLOR] гениальное, еще меньше не сделать?
3. такие темы создаем в "студентам"

Цитата: saimon47sa
Есть набор констант с точностью до 15 знака+ все переменные и массивы типа Extended.


прочитайте свое сообщения с т.з. стороннего наблюдателя. лично я мало что понял.

62K
27 июня 2010 года
zvo59
1 / / 26.06.2010
Подскажите, пожалуйста, как в программе, работающей как служба (сервис), получить пути к папкам конкретного или текущего пользователя? Служба запущена от имени LOCAL SYSTEM.
62K
07 июля 2010 года
soke
1 / / 07.07.2010
нужно в общем разработать длл алгоритмы и библиотеку dll обработки матриц

и даны такие условия
сложение матриц
формирование вектора из матрицы по строкам
мб уже делал кто подобное?
6.2K
13 июля 2010 года
thenilman
44 / / 28.05.2005
У меня вопрос, попробую сформулировать покороче.
Есть приложение, которое пытается вопроизвести существующий сайт на локальном компьютере с частичным изменением контента. Ну и показать его пользователю. В нем есть форма, на ней TWebBrowser - для отображения.
Хтмл в нем генерится динамически, вот код:
Код:
var
  Document:IHTMLDocument2;
  V:OleVariant;
  s:string;
  i:integer;
begin
  if WebBrowser1.Document = nil then WebBrowser1.Navigate('about :blank');
  while WebBrowser1.Document = nil do Application.ProcessMessages;
  if PageControl1.ActivePageIndex<>2 then exit;
  Document:=WebBrowser1.Document as IHtmlDocument2;
  V:=VarArrayCreate([0, 0], varVariant);
  s:=Memo1.Text;
<..>
  V[0]:=AboutBox.Memo1.Text+s+AboutBox.Memo2.Text;
  Document.Write(PSafeArray(TVarData(v).VArray));
  Document.Close;
  WebBrowser1.Silent:=true;
  end;

Все работает на ура, НО шрифт не тот.
Шрифт не совпадает с шрифтом страницы, которую я симулирую в TWebBrowser. Если предыдущее предложение требует пояснений, то я могу залить два скриншота. При этом, если использовать не динамическую запись хтмл-кода в TWebBrowser, а использовать временные html-файлы (генерить код, сохранять на жесткий диск и грузить в TWebBrowser), то все прекрасно.
Более того! Если вытащить исходный хтмл, тот, который отображается криво, прямо из TWebBrowser, сохранить его в файл и открыть тем же самым TWebBrowser, то все отображается правильно.
Из чего я сделал вывод, что проблема не в HTML, а в TWebBrowser.
Помогите исправить шрифт, пожалуйста :(

ЗЫ Delphi 7
14
14 июля 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: thenilman

Из чего я сделал вывод, что проблема не в HTML, а в TWebBrowser.


но

Цитата: thenilman

сохранить его в файл и открыть тем же самым TWebBrowser, то все отображается правильно.


Проблем может быть множество. Возможно там css (не)подсасывается или js какой-нибудь, которые иначе (не)работают с диска - сложно сказать.

6.2K
14 июля 2010 года
thenilman
44 / / 28.05.2005
И что делать? Сохранять на диск временный файл и грузить с него?
13K
01 сентября 2010 года
X-enot
39 / / 01.09.2010
Всем привет. Я начинающий програмер мало что секу... Столкнулся с такой проблемой . Короче надо откомпилить готовый проект( проект не мой) но сам факт, там много всяких библиотек и при первом же компиле делфин давай ругаться ... Вот весь список библиотек
 
Код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, jpeg, Controls, Forms,
  Dialogs, ExtCtrls, GR32_Image, GR32_Layers, StdCtrls, ComCtrls, Sockets, CompressionStreamUnitForms;


А ошибка в GR32_Image.dcu . Типо файл не найден. Стал шарить в инете нашёл только библиотеку GR32_Image.pas .
Помогите, может у кого завалялись эти библиотеки... (P.s говорят они древние...) :(
14
01 сентября 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: X-enot
Стал шарить в инете нашёл только библиотеку GR32_Image.pas .
Помогите, может у кого завалялись эти библиотеки...


graphics32

13K
01 сентября 2010 года
X-enot
39 / / 01.09.2010
Вообщем пытался создать программу которая вытаскивает пароли из системы. Нашёл инфу что этот код нельзя будет использовать в WinXP. Но все таки хотелось бы дописать прогу... Помогите найти ошибку...
Вот сам код...
Код:
unit Unit1;

interface

uses
  Windows, SysUtils, Forms, ShellAPI, Classes, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    hMFR: THandle;
  end;

var
  Form1: TForm1;
const
  Count: Integer = 0;
function WNetEnumCachedPasswords (dp: lpStr; w: Word; b: Byte; PC: PChar;
dw: DWord): Word; stdcall;


implementation

{$R *.dfm}
function WNetEnumCachedPasswords //Имя функции
(lp: lpStr;  //Должуен быть NIL
 w: Word;    //Должен быть 0
 b: Byte;   //Должен быть $FF
 PC: Char;  //Адрес функции, в которую вернуться пароли
 dw: DWord): Word;
 external mpr //Имя DLL-файла в котором находится эта функция
   name 'WNetEnumCachedPasswords';  //Имя функции в DLL-файле.
 type
  PWinPassword= ^TWinPassword;
  TWinPassword= record
    Entry:Word;
    ResourceSize: Word;   //Размер имени пользователя
    PasswordSize: Word;   //Размер пароля
    EntryIndex: Byte;
    EntryType: Byte;
    PasswordC: Char;   //Имя пользователя и пароль
  end;
function AddPassword //Имя функции
(
WinPassword: PWinPassword;  //указатель на структуру WinPassword
dw: DWord
): LongBool; stdcall;
var
  Password: String;
  PC: Array[0..$FF] of Char;
begin
  inc(Count);

  Move(WinPassword.PasswordC, PC, WinPassword.ResourceSize);
  PC[WinPassword.RecourceSize] :=#0;
  CharToOem(PC, PC);
  Password :=StrPas(PC);

  Move(WinPassword.PasswordC, PC, WinPassword.PasswordSize +
  WinPassword.ResourceSize);

  Move(PC[WinPassword.RecourceSize], PC,WinPassword.PasswordSize);
  PC[WinPassword.PasswordSize] :=#0;
  CharToOem(PC,PC);
  Password:= Password + ': ' + StrPas(PC);

  Form1.ListBox.Intems.Add(Password);
  Result :=True;
end;


procedure TForm1.FormShow(Sender: TObject);
begin
  if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then
    begin
      Application.MessageBox('Невозможно прочесть пароли.', 'Error', mb_Ok or mb_IconWarning);
        Application.Terminate;
        end
        else
          if  Count = 0 then
            ListBox.Items.Add('Пароля нету');
       end;

end.
253
01 сентября 2010 года
Proger_XP
1.5K / / 07.08.2004
А в чём ошибка-то проявляется?
303
02 сентября 2010 года
makbeth
1.0K / / 25.11.2004
Цитата: X-enot
Нашёл инфу что этот код нельзя будет использовать в WinXP. Но все таки хотелось бы дописать прогу...


У тебя нет оснований доверять этой инфе? Так вот я отвечу: этим кодом (или каким либо еще) из всего, что не Win9x вытащить в принципе невозможно по дефолту, Можно, конечно с групповыми политиками поиграться, но этим будет заниматься на своей машине только законченный идиот... Так о чем это я? Ах да... дорогой X-enot! пора бы уже знать, что в современном мире в всем серьезном софте (да, да! во всем) пароли давным давно уже не храняться в системе :D

13K
02 сентября 2010 года
X-enot
39 / / 01.09.2010
Цитата: makbeth
У тебя нет оснований доверять этой инфе? Так вот я отвечу: этим кодом (или каким либо еще) из всего, что не Win9x вытащить в принципе невозможно по дефолту, Можно, конечно с групповыми политиками поиграться, но этим будет заниматься на своей машине только законченный идиот... Так о чем это я? Ах да... дорогой X-enot! пора бы уже знать, что в современном мире в всем серьезном софте (да, да! во всем) пароли давным давно уже не храняться в системе :D



Ооо Ну я пока только учусь. :rolleyes:

13K
02 сентября 2010 года
X-enot
39 / / 01.09.2010
Цитата: Proger_XP
А в чём ошибка-то проявляется?



ошибка в строке

 
Код:
function WNetEnumCachedPasswords //Имя функции
(lp: lpStr;  //Должуен быть NIL
 w: Word;    //Должен быть 0
 b: Byte;   //Должен быть $FF
 PC: Char;  //Адрес функции, в которую вернуться пароли
 dw: DWord): Word;
 external mpr //Имя DLL-файла в котором находится эта функция
   name 'WNetEnumCachedPasswords';  //Имя функции в DLL-файле.
  end;
А именно ошибка звучит так
Код:
[Error] Unit1.pas(47): Previous declaration of 'WNetEnumCachedPasswords' was not marked with the 'overload' directive
  [Error] Unit1.pas(50): '.' expected but ';' found
  [Error] Unit1.pas(60): Left side cannot be assigned to
  [Error] Unit1.pas(63): Undeclared identifier: 'RecourceSize'
  [Error] Unit1.pas(70): Undeclared identifier: 'RecourceSize'
  [Error] Unit1.pas(75): Undeclared identifier: 'ListBox'
  [Error] Unit1.pas(75): Missing operator or semicolon
  [Error] Unit1.pas(89): Undeclared identifier: 'ListBox'
  [Error] Unit1.pas(89): Missing operator or semicolon
  [Error] Unit1.pas(24): Unsatisfied forward or external declaration: 'WNetEnumCachedPasswords'
  [Fatal Error] WinPass.dpr(5): Could not compile used unit 'Unit1.pas'
13K
02 сентября 2010 года
X-enot
39 / / 01.09.2010
Ребята подскажите свежие Сорцы для разработки Интернет и Сеть приложений. Заранее благодарен:)
253
02 сентября 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: X-enot
А именно ошибка звучит так


У тебя там два объявления функции - одно в interface, другое в implementation, и оба разные. Убери первое и перенеси второе из implementation на его место.

13K
02 сентября 2010 года
X-enot
39 / / 01.09.2010
Цитата: Proger_XP
У тебя там два объявления функции - одно в interface, другое в implementation, и оба разные. Убери первое и перенеси второе из implementation на его место.



всеравно выходит ошибка... :(

Код:
unit Unit1;

interface

uses
  Windows, SysUtils, Forms, ShellAPI, Classes, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    hMFR: THandle;
  end;

var
  Form1: TForm1;
const
  Count: Integer = 0;


  function WNetEnumCachedPasswords //Имя функции
(lp: lpStr;  //Должуен быть NIL
 w: Word;    //Должен быть 0
 b: Byte;   //Должен быть $FF
 PC: Char;  //Адрес функции, в которую вернуться пароли
 dw: DWord): Word;
 external mpr //Имя DLL-файла в котором находится эта функция
   name 'WNetEnumCachedPasswords'; //Имя функции в DLL-файле.
    end;

implementation



{$R *.dfm}
 type
  PWinPassword= ^TWinPassword;
  TWinPassword= record
    Entry:Word;
    ResourceSize: Word;   //Размер имени пользователя
    PasswordSize: Word;   //Размер пароля
    EntryIndex: Byte;
    EntryType: Byte;
    PasswordC: Char;   //Имя пользователя и пароль
  end;

function AddPassword //Имя функции
(
WinPassword: PWinPassword;  //указатель на структуру WinPassword
dw: DWord
): LongBool; stdcall;
var
  Password: String;
  PC: Array[0..$FF] of Char;
begin
  inc(Count);

  Move(WinPassword.PasswordC, PC, WinPassword.ResourceSize);
  PC[WinPassword.RecourceSize] :=#0;
  CharToOem(PC, PC);
  Password :=StrPas(PC);

  Move(WinPassword.PasswordC, PC, WinPassword.PasswordSize +
  WinPassword.ResourceSize);

  Move(PC[WinPassword.RecourceSize], PC,WinPassword.PasswordSize);
  PC[WinPassword.PasswordSize] :=#0;
  CharToOem(PC,PC);
  Password:= Password + ': ' + StrPas(PC);

  Form1.ListBox.Intems.Add(Password);
  Result :=True;
end;


procedure TForm1.FormShow(Sender: TObject);
begin
  if WNetEnumCachedPasswords(nil, 0, $FF, @AddPassword, 0) <> 0 then
    begin
      Application.MessageBox('Невозможно прочесть пароли.', 'Error', mb_Ok or mb_IconWarning);
        Application.Terminate;
        end
        else
          if  Count = 0 then
            ListBox.Items.Add('Пароля нету');
       end;

end.


ошибка...
 
Код:
[Hint] Unit1.pas(20): Variable 'Form1' is declared but never used in 'Unit1'
  [Error] Unit1.pas(33): 'IMPLEMENTATION' expected but ';' found
  [Error] Unit1.pas(35): '.' expected but 'IMPLEMENTATION' found
  [Error] Unit1.pas(11): Unsatisfied forward or external declaration: 'TForm1.FormShow'
  [Fatal Error] WinPass.dpr(5): Could not compile used unit 'Unit1.pas'
253
03 сентября 2010 года
Proger_XP
1.5K / / 07.08.2004
Проверяй синтаксис... что это за end?
 
Код:
name 'WNetEnumCachedPasswords'; //Имя функции в DLL-файле.
   end;
303
03 сентября 2010 года
makbeth
1.0K / / 25.11.2004
Все равно эта функция работать не будет...
49K
03 октября 2010 года
FAVORIT
16 / / 14.06.2009
Ситуация: Программа в полноэкраном режиме, воспроизводит ряд видеороликов (формата - avi, 800x600, XVID, 981 кбит/сек, размер всех файлов 72,9 МБ), используя стандартный плеер.

Проблема: На разных компьютерах установлены разные кодыки и видео не всегда проигрываются.

Вопрос: Можно ли избежать этой проблемы? Например, как то внедрить кодыки в саму програму или подобрать универсальные параметры видео файла.
303
03 октября 2010 года
makbeth
1.0K / / 25.11.2004
Варианты: Windows Media Video (aka wmw) или переезжать на Flash (flv).
64K
03 октября 2010 года
Вадим29
1 / / 03.10.2010
Здравствуйте!!!Очень нужна помощь.Хочу создать процедуру, по которой рисуется прямоугольник с текстом внутри, и потом цвет рамки прямоугольника меняется.
6
03 октября 2010 года
George
4.1K / / 05.01.2007
В статьях есть про простейшее рисование в дельфи.
64K
04 октября 2010 года
Denisko
4 / / 04.10.2010
как написать админу? как с ним вообще связаться?
26K
07 октября 2010 года
Kliper
47 / / 02.11.2007
Здравствуйте.
Делфи7.
Есть функция, с выходным значением типа single.
Этот выходной результат может быть не числом (NAN). В этом случае генерируется исключение EConvertError (именно по окончании работы функции, т.е. при выдаче значения). Как отключить это срабатывание и можно ли вообще это сделать?
Мне результат=NAN тоже нужен
Вариант сделать обертку из try-except не предлагать, т.к. эта функция вложена в другую, и таких конструкций много
303
07 октября 2010 года
makbeth
1.0K / / 25.11.2004
Если возникает EConvertError, то значит в коде есть преобразования типов (подозреваю, что Real->Single, а NaN реала не помещается в сингл). Уберешь преобразование, исчезнет исключение. И вообще, "код в студию!" (c)
26K
07 октября 2010 года
Kliper
47 / / 02.11.2007
Преобразования типов нет, сингл выходит на сингл.
Забыл добавить все это дело крутится в отдельном потоке, если в основном, то ошибка не возникает, сейчас проверил. Т.е. явно связано с особенностями работы потока
Вот при выходе из RezFloat и вылетаем ошибка, даже если ее вызывать отдельно:
R:=RezFloat(P,6); //(R:single)

function RezFloat(var P:array of byte; m:byte):single;
var Rv: array [0..3] of byte absolute Result; //absolute Result - совмещает с Result адреса ячеек пямяти Rv
begin Rv[3]:=P[m+0]; Rv[2]:=P[m+1]; Rv[1]:=P[m+2]; Rv[0]:=P[m+3]; end; //Собираем float из байтов

function Okruglenie(R:single; m:shortInt):string;
begin
Result:=FloatToStrF(R,ffFixed,5,m);
end;

-----
код
...
S:=Okruglenie(RezFloat(P,5),3);
...
303
07 октября 2010 года
makbeth
1.0K / / 25.11.2004
Мутновато как-то. Ну да ладно. Итак, давай попробуем избавиться от размещения массива по адресу возврата. Есть подозрение что это не совсем кошерно. Попробуй объявить еще одну переменную в функции с типом Single и плясать от нее. Примерно так:
 
Код:
function RezFloat(var P:array of byte; m:byte):single;
var LocalResult: Single;
     Rv: array [0..3] of byte absolute LocalResult;
begin
    Rv[3]:=P[m+0];
    Rv[2]:=P[m+1];
    Rv[1]:=P[m+2];
    Rv[0]:=P[m+3];
    Result:=LocalResult;
end;
26K
08 октября 2010 года
Kliper
47 / / 02.11.2007
Я так уже делал, тоже самое. Внутри процедуры все нормально, ошибка возникает при выходе, из нее, на енде, видимо когда идет присвоение результата переменной, и только если код работает в отдельном потоке.
26K
12 октября 2010 года
Kliper
47 / / 02.11.2007
Ни у кого нет подсказок по моей проблеме?
1
13 октября 2010 года
kot_
7.3K / / 20.01.2000
Цитата: Kliper
Ни у кого нет подсказок по моей проблеме?


ну если никто не отвечает - то наверное нет. Да и в принципе - в данной ситуации только ты сам себе и можешь подсказать - используя отладчик. ИМХО, проблема у тебя не в возвращаемом параметре. Проблема вероятнее всего в получаемых параметрах. Именно поэтому она и проявляется только в отдельном потоке - в какой то момент времени твой массив становится мусором (например выходит из области видимости) - а поток с ним продолжает работать, не проверяя. Но это только предположение. Проверяй сам.

303
13 октября 2010 года
makbeth
1.0K / / 25.11.2004
Есть еще предположение, что Single передается через регистры FPU и, в случае с отдельным потоком, работает не очень хорошо. Но это все из области сфероконической теории, так что тут действительно нужно мониторить отладчиком (вплоть до инструкции процессора, на которой возникает исключение).
26K
13 октября 2010 года
Kliper
47 / / 02.11.2007
а отключить генерацию ошибки как-то можно?
10
13 октября 2010 года
Freeman
3.2K / / 06.03.2004
Возможно даже, есть какая-то бяка в компиляторах Borland, связанная с сопроцессором и потоками. Подумал об этом сразу же по прочтении темы, но ссылок не нашёл. Возможно стоит гуглить по теме "8087CW delphi thread".
26K
13 октября 2010 года
Kliper
47 / / 02.11.2007
В продолжении темы, вопрос на засыпку: что будет если в программе число разделить на ноль?
6
13 октября 2010 года
George
4.1K / / 05.01.2007
Исключение будет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог