Я начинающий, подскажите пожалуйста, как...
Если вы только начинаете осваивать Delphi или считаете, что ваш вопрос простой для более опытных участников форума, то задавайте его здесь, не надо создавать для этого отдельные темы.
Если вы размещаете вопрос здесь, то , пожалуйста, прочтите следующее:
1. когда будете задавать свой вопрос, то делайте это нажимая на "ответ"(не путать с "быстрый ответ") и кратко указывайте в "заголовке" тему своего вопроса;
2. опишите чего вы хотели добиться.
3. если у вас возникла какая-то ошибка, и вы не знаете как её исправить, то обязательно приведите текст самой ошибки;
4. если это необходимо, приведите фрагмент вашего кода(ни в коем случае не надо писать весь код), также при добавлении кода пользуйтесь тегами([code ] и [ /code]);
5. укажите версию Delphi, которую используете и все настройки проекта;
6. если у вас возникли проблемы с нестандартными компонентами, то обязательно приведите ссылку, по которой их можно скачать.
7. соблюдайте правила форума
Удачи.
Модераторы форума Delphi & Kylix: Delpher, kosfiz & OlgaKr
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.
Может быть, у кого-нибудь найдется пример блокировки файла по чтению\записи с применением семафоров? Мне надо как-то разобраться с ними. Проблема в том, что сабж совершенно не гуглится - при слове семафор вылезает куча ссылок на работу с многопоточностью, а про банальную блокировку файлов ничего нет :(
Помогите, пожалуйста...
Блокировку чего и от чего. Нужна полная ясность. Семафоры при блокировке файлов особо не при чем, это объект синхронизации.
Если я тупо присваиваю значение константы какой либо переменной то делфи отображает уже 10 знаков.При этом если навести курсор на константу(в режиме отладки) то через черту отображаеться тоже 10 значное значение.(выглядит примерно так: "число 15 знаков"| "округленное до 10")
При заполнении массивов тоже должно быть 15 знаков ,но отображаеться в watch только 10, да и результаты тоже 10 значные.Иногда вылазит 11 знак.А так если идет дальше ,добавляет мантису к числу и все.....
Что нужно сделать чтобы работать именно с 15 знаками.
Оригинальная программа составленна на фортране еще, там вообще тип риал стоит, а работает он с 15 знаками а дальше е.
У меня 2010 делфи заплат вроде нету.Если мне память не изменяет в 2007 было также.
вот фото
1. уточнить что хотят
2. фото [COLOR="Silver"]было[/COLOR] гениальное, еще меньше не сделать?
3. такие темы создаем в "студентам"
прочитайте свое сообщения с т.з. стороннего наблюдателя. лично я мало что понял.
и даны такие условия
сложение матриц
формирование вектора из матрицы по строкам
мб уже делал кто подобное?
Есть приложение, которое пытается вопроизвести существующий сайт на локальном компьютере с частичным изменением контента. Ну и показать его пользователю. В нем есть форма, на ней TWebBrowser - для отображения.
Хтмл в нем генерится динамически, вот код:
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
Из чего я сделал вывод, что проблема не в HTML, а в TWebBrowser.
но
сохранить его в файл и открыть тем же самым TWebBrowser, то все отображается правильно.
Проблем может быть множество. Возможно там css (не)подсасывается или js какой-нибудь, которые иначе (не)работают с диска - сложно сказать.
Dialogs, ExtCtrls, GR32_Image, GR32_Layers, StdCtrls, ComCtrls, Sockets, CompressionStreamUnitForms;
А ошибка в GR32_Image.dcu . Типо файл не найден. Стал шарить в инете нашёл только библиотеку GR32_Image.pas .
Помогите, может у кого завалялись эти библиотеки... (P.s говорят они древние...) :(
Помогите, может у кого завалялись эти библиотеки...
Вот сам код...
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.
У тебя нет оснований доверять этой инфе? Так вот я отвечу: этим кодом (или каким либо еще) из всего, что не Win9x вытащить в принципе невозможно по дефолту, Можно, конечно с групповыми политиками поиграться, но этим будет заниматься на своей машине только законченный идиот... Так о чем это я? Ах да... дорогой X-enot! пора бы уже знать, что в современном мире в всем серьезном софте (да, да! во всем) пароли давным давно уже не храняться в системе :D
Ооо Ну я пока только учусь. :rolleyes:
ошибка в строке
(lp: lpStr; //Должуен быть NIL
w: Word; //Должен быть 0
b: Byte; //Должен быть $FF
PC: Char; //Адрес функции, в которую вернуться пароли
dw: DWord): Word;
external mpr //Имя DLL-файла в котором находится эта функция
name 'WNetEnumCachedPasswords'; //Имя функции в DLL-файле.
end;
[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'
У тебя там два объявления функции - одно в interface, другое в implementation, и оба разные. Убери первое и перенеси второе из implementation на его место.
всеравно выходит ошибка... :(
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.
ошибка...
[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'
end;
Проблема: На разных компьютерах установлены разные кодыки и видео не всегда проигрываются.
Вопрос: Можно ли избежать этой проблемы? Например, как то внедрить кодыки в саму програму или подобрать универсальные параметры видео файла.
Делфи7.
Есть функция, с выходным значением типа single.
Этот выходной результат может быть не числом (NAN). В этом случае генерируется исключение EConvertError (именно по окончании работы функции, т.е. при выдаче значения). Как отключить это срабатывание и можно ли вообще это сделать?
Мне результат=NAN тоже нужен
Вариант сделать обертку из try-except не предлагать, т.к. эта функция вложена в другую, и таких конструкций много
Забыл добавить все это дело крутится в отдельном потоке, если в основном, то ошибка не возникает, сейчас проверил. Т.е. явно связано с особенностями работы потока
Вот при выходе из 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);
...
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;
ну если никто не отвечает - то наверное нет. Да и в принципе - в данной ситуации только ты сам себе и можешь подсказать - используя отладчик. ИМХО, проблема у тебя не в возвращаемом параметре. Проблема вероятнее всего в получаемых параметрах. Именно поэтому она и проявляется только в отдельном потоке - в какой то момент времени твой массив становится мусором (например выходит из области видимости) - а поток с ним продолжает работать, не проверяя. Но это только предположение. Проверяй сам.