Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 628
от 22.10.2006, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 397, Экспертов: 74
В номере:Вопросов: 5, Ответов: 8


Вопрос № 59168: Здравстуйте! Не могли бы вы мне помочь потомучто я уже не знаю куда обратиться. Знаю что вопросов на данную тематику было много, но я просмотрел много ответов и не нашел то что мне необходимо. Дело в том что я не понимаю каким образом можно произ...
Вопрос № 59229: Подскажите как правильно работать в dll с функциями возвращающие значение Widestring....
Вопрос № 59245: Здравствуйте УВАЖАЕМЫЕ ЭКСПЕРТЫ!!! Нужна Ваша помощь! Не знаете ли вы сайты, электронные уроки, где объясняют, как создать программу «Тест» на Делфи. Или может какой-нибудь простейший исходник где-нибудь есть, чтобы в нем можно было разобраться! Пожа...
Вопрос № 59259: Где можно достать компилятор C++ Builder или Delphi для windows mobile, или как перевести уже написанную программу на windows mobile...
Вопрос № 59269: Hello всем.Нуждаюсь в помощи.Только силно не ругайте за тупые вопросы.Спасибо: 1)Как узнать в Delphi,есть ли в файле,объём которого я хочу узнать,символы Unicode? Далее пойдут отрывки из прог и вопросы к ним: 2) Funct...

Вопрос № 59.168
Здравстуйте! Не могли бы вы мне помочь потомучто я уже не знаю куда обратиться. Знаю что вопросов на данную тематику было много, но я просмотрел много ответов и не нашел то что мне необходимо.
Дело в том что я не понимаю каким образом можно производить операции над матрицами (определитель, решение САУ и т.п.) Для начала я хочу найти определитель (см. код в прилож.) но не получаеться..... Код я взял на одном из сайтов и подкоректировал немного... Может у кого нибудь есть докментация по решению матриц с помощью делфи или исходники. Помогите чем можете. Заранее благодарен!

Приложение:

Отправлен: 16.10.2006, 23:10
Вопрос задал: Djoin (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, Djoin!
Для начала, Вам нужно обратить свое внимание на математический апарат решения данных задач, например "Справочник по высшей матиматике" Сигорского или аналогичные. Далее, желательно ознакомится с численными методами решения задач с матрицами, например Кормен "Алгоритмы. Постоение и анализ". Ну и тогда можно приступать к разработке собственных програм или анализу чужих. Дополнительно могу выслать модуль Matrix.pas, в котором реализованы многие функции для работы с матрицами. В приложении перечень функций этого модуля.

Приложение:

---------
Carpe diem!

Ответ отправил: Проходящий Мимо (статус: 8-ой класс)
Ответ отправлен: 17.10.2006, 09:41

Отвечает: sir henry
Здравствуйте, Djoin!
На что Вам прежде всего следует обратить внимание при работе с матрицами, Вам уже сказал предыдущий эксперт. Добавлю лишь то, что это не зависит от языка программирования, т.к. язык - это всего лишь инструмент, который на основе Вашего знания позволяет получить како-либо результат. Убежден, что как только Вы сможете решить свою задачу (например, найти тот же определитель), то сразу же и поймете, как это сделать с помощью Дельфи.
Загляните сюда:
http://alglib.sources.ru/matrixops/
Здесь Вы найдете алгоритмы решений задач с матрицами и примеры на C#, C++, Delphi.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 17.10.2006, 10:07


Вопрос № 59.229
Подскажите как правильно работать в dll с функциями возвращающие значение Widestring.
Отправлен: 17.10.2006, 14:27
Вопрос задал: Negruzzi Cristian (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Маренич Владимир
Здравствуйте, Negruzzi Cristian!
Два варианта:
1. Подключать к DLL-ке и приложениям, которые ее используют в разделе USES модуль ShareMem. Причем она должна в секции USES стоять первой в списке. При этом нужно с exe-шником "таскать" DLL-ку BORLNDMM.DLL
2. В процедурах и функциях DLL-ки в параметрах использовать PWideChar и потом преобразовывать к WideString. При вызове процедуры тоже выполнять преобразование из WideString в PWideChar.

Приложение:

Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 17.10.2006, 15:00

Отвечает: Gladiator
Здравствуйте, Negruzzi Cristian!

ShareMem и BORLNDMM.DLL не требуется.

1)
library Lib;

uses
SysUtils,
Classes;

function SummW(c,d: integer): WideString; stdcall;
begin
Result:=IntToStr(c+d);
end;

exports SummW;

begin
end.

2)
unit Unit1;

interface

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

Function SummW(c,d: integer): widestring; stdcall; external 'lib.dll';

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
ResSummW: widestring;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ResSummW:=SummW(StrToInt(Edit1.Text),StrToInt(Edit2.Text));
Label1.Caption:=ResSummW;
end;

end.
Ответ отправил: Gladiator (статус: 3-ий класс)
Ответ отправлен: 17.10.2006, 15:20


Вопрос № 59.245
Здравствуйте УВАЖАЕМЫЕ ЭКСПЕРТЫ!!! Нужна Ваша помощь! Не знаете ли вы сайты, электронные уроки, где объясняют, как создать программу «Тест» на Делфи. Или может какой-нибудь простейший исходник где-нибудь есть, чтобы в нем можно было разобраться! Пожалуйста, подскажите! Заранее ОГРОМНОЕ СПАСИБО!!!!!!!!!!:-)
Отправлен: 17.10.2006, 16:11
Вопрос задала: Алена (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Patriotix-N
Здравствуйте, Алена!
Архив статей
http://www.delphiworld.narod.ru/

Название говорит само за себя:
http://www.ishodniki.ru/
http://www.delphisources.ru/pages/sources.html

На сайте есть исходник какого-то теста:
http://www.programmersclub.ru/labplay
---------
Краткость - сестра таланта.
Ответ отправил: Patriotix-N (статус: 2-ой класс)
Ответ отправлен: 17.10.2006, 22:00
Оценка за ответ: 5


Вопрос № 59.259
Где можно достать компилятор C++ Builder или Delphi для windows mobile, или как перевести уже написанную программу на windows mobile
Отправлен: 17.10.2006, 18:22
Вопрос задал: George soselia (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, George soselia!
В Visual Studio 8 точно есть средства для разработки под платформу Windows Mobile. Я что-то подобное слышал и про 6-ую версию. Компиляторов C++ Builder и Delphi для windows mobile не существует. Можно еще писать на J2ME, но это уже совсем другой язык и скорее для смартфонов на ОС, отличных от Windows. Впрочем, если вам все равно Delphi или C++ - может, и Java пойдет? ^^
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 19.10.2006, 00:17


Вопрос № 59.269
Hello всем.Нуждаюсь в помощи.Только силно не ругайте за тупые вопросы.Спасибо:

1)Как узнать в Delphi,есть ли в файле,объём которого я хочу узнать,символы Unicode?

Далее пойдут отрывки из прог и вопросы к ним:

2)
Function AttrStr(Attr:integer):boolean;
begin
Result:='';

if (FILE_ATTRIBUTE_DIRECTORY and Attr) > 0 then Result := Result + '';
if (FILE_ATTRIBUTE_ARCHIVE and Attr) > 0 then Result := Result + 'A';
if (FILE_ATTRIBUTE_READONLY and Attr) > 0 then Result := Result + 'R';
if (FILE_ATTRIBUTE_HIDDEN and Attr) > 0 then Result := Result + 'H';
if (FILE_ATTRIBUTE_SYSTEM and Attr) > 0 then Result := Result + 'S';

Параметры ,начинающие со слова File_... в этом примере-где они описаны(в каком модуле).В листинге нет объявления типа файл!

3)procedure TForm1.Button1Click(Sender: TObject);
Var
f:tFileStream;
Buf:string[11];// Я убираю [11] и ошибка!
begin //Но в этом случае создаётся строка из 255 символов?
f:=TFileStream.Create('c:example.txt',fmOpenReadWrite);//asd.txt для примера!
f.Seek(15,soFromCurrent);
f.Read(buf,10);
Edit1.Text:=buf;
f.Free;
end;

Как вы поняли,прога пытается засунуть в Edit прочитанные из файла 10 символов с начала!Вопросы я буду приводить в комментариях!

4)procedure TForm1.Button1Click(Sender: TObject);
Var
Date:TDateTime;
begin
Try
Date:=StrToDate(Edit1.Text);
//Когда я ввожу в Edit1 буквы ,проверить на ошибки не получается.WHY?
Except;
Label1.Caption:='Вводить только числа!';
End;
Edit2.Text:=DatetoStr(Date);
end;

Такая же ситуация,когда я хочу обойти деление на 0!

5)procedure TForm1.Button1Click(Sender: TObject);
Var
r:array[0..3,0..4] of integer ;
i,j:integer;
begin
For i:=0 to high(r) do
begin
for j:=0 to high(r) do //Не удаётся вывести массив!
Listbox1.Items.Add( IntToStr(r[i,j])); //В чём же ошибка?
end;
end;

6)procedure TForm1.Button1Click(Sender: TObject);
Var
i:integer;
begin
Label2.Caption:='Проверяю...'; //Несмотря на то,что эта строка идёт за
Sleep(200); // строкой с циклом,цикл выполняется первым!!!
for i:=0 to 20 do begin //Как исправить?
progressbar1.Position:=round(i/20*100);
Sleep(100);
end;
if edit1.Text='password' then edit2.Text:='Код верный'
else
Edit2.Text:='Код неверный';
Sleep(600);
progressbar1.Position:=0;
end;

7)Что это за обявление :
Переменная:set of 1..N ?

8)Какую книгу посоветуете для логики (в кодинге очень нужно) ?
Отправлен: 17.10.2006, 20:04
Вопрос задал: Xtreme (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Monah
Здравствуйте, Xtreme!
Отвечаю по пунктам.
1 - незнаю.
2 - Поднеси мышку к обявлению переменной, константы, типа, класса и нажми Ctrl название превратится в гиперссылку по которой можно перейти к месту где оно объявлено.
3 - Нет String резервирует только указатель на строку. ShortString 255 байт. А длинна String ограничена разрядностью шины процессора и доступной памятью.
Можно сделать так SetLength(s, 10); если использовать string
4 - Попробуй вместо Edit1 использовать MaskEdit. Можно задать любую маску, есть готовые шаблоны.
5 - Ошибка скорее всего в том что массив двумерный, и я предпологаю, что High возвращает только по первой размерности. Как боротся не знаю.
6 - все правильно, просто приоритет отрисовки ниже чам цикла. Не успевает отрисоваться текст. Вставь перед sleep или вместо него application.processmessage;
И внутри длинных циклов тоже не помешает такая конструкция, иначе приложение перестанет отзыватся.
7 - это множество. Означает что переменная может принимать любые значения из диапазона например "set of 1..10" значит переменная может содержать любые комбинации чисел от 1 до 10, но каждое значение только один раз.
8 - по логике ни чего не встречал.
Ответ отправил: Monah (статус: 5-ый класс)
Ответ отправлен: 17.10.2006, 20:35

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Xtreme!
2) Атрибуты файла - это свойство от операционной системы, а не от компилятора. Они есть у любого файла! Кстати, для их просмотра и изменения существует консольная утилита attr (входящая в состав, например, WinXP Prof), хотя то же самое можно сделать и через визуальный интерфейс.
5) Бороться так: брать high(r[i])
Но, возможно, придется объявить двумерный массив так: r:array[0..3] of array[0..4] of integer;
и к элементам доступаться так: r[i][j]
6) Внутри длинных циклов слишком часто вызывать application.processmessages тоже бывает накладно
7) Множество не может быть размером больше, чем 256 и состоять только из перечислимых типов. Об этом и многом другом написано в справке. Правда, на англ. :-)
8) Из логики для программирования надо знать не так уж и много
Правила де Моргана:
(not x) and (not y) = not (x or y)
(not x) or (not y) = not (x and y)
двойное отрицание (по-моему, называется, метод исключения третьего)
not(not x) = x
Законы поглощения:
x and true = x
x and false = false
x or true = true
x or false = x
Вот, практически, и все.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 19.10.2006, 01:14


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное