Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: RomanTim
Дата сообщения: 26.02.2006 12:54
Apleks
Только учти, что Д8 компилит только под .НЕТ
Автор: Apleks
Дата сообщения: 26.02.2006 14:52
А D2006 под win32 умеет?
Что надёжнее и проще/быстрее для небольшой проги D7 или D2006 ?
Автор: Vitus_Bering
Дата сообщения: 26.02.2006 15:17
Apleks
Конечно D7, ИМХО.
Автор: Pinocchio
Дата сообщения: 26.02.2006 15:54
Кто нибудь встречался с ошибкой отправки по IdSМТР? Дело в том что ситуацию воспроизвести на своём компе немогу, а сиё факт, что бывает такое - переключая с фастнет на инди получается ошибка отправки. Кабы знать в чём экзепшен? Может список получателей не через запятую, а через точку с запятой надо. А может новелл надо ставить чтобы ошибку отловить. Заранее спасибо за любые соображения, можно в ПМ.
Автор: vshersh
Дата сообщения: 26.02.2006 16:08
Schatz
Насколько я понял тебя устроит такое-же приложение как в демке IdTCPDemo, только с ActiveX-клиентом?
Если да, то завтра смогу выслать работающий пример для активной формы.


Цитата:
На клиенте нужно всего лишь три события сделать

А не сгодятся события от самого компонента TIdTCPClient:
OnConnected
OnDisconnected
и OnWork ?


Автор: SergeBS
Дата сообщения: 26.02.2006 17:24
vshersh

Цитата:

IMHO средствами делфи можно только картинки, иконки и курсоры добавить. Если надо бинарные данные без сторонних продуктов не обойтись
(Я говорю о Delphi 7 и ниже)

Зачем так категорично? DelphiWorld:

Интегрирование в EXE-шник других файлов
--------------------------------------------------------------------------------
Автор: Delirium
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Интегрирование в EXE-шник других файлов

Процедура из указанного файла (FileName) создаёт unit в котором объявлен,
заполненный побайтово, массив и процедура сохранения этого массива обратно
в файл. Таким образом можно включить в один EXE-шник множество других
файлов (dll, ocx, dbf и т.п.) - прикрепить их как unit-ы. Фактически,
после сжатия EXE-шника программами типа UPX, получаем довольно компактный
файл, который можно использовать в качестве дистрибутива, например.

Зависимости: SysUtils, System
Автор: Delirium
Copyright: Delirium (Master BRAIN)
Дата: 22 мая 2002 г.
***************************************************** }

procedure FileToPas(FileName: string);
var
BF: file of Byte;
F: TextFile;
P, N, S: string;
BFSize: integer;
BBB: Byte;
begin
AssignFile(BF, FileName);
Reset(BF);
BFSize := FileSize(BF);
P := ExtractFilePath(FileName);
N := ExtractFileName(FileName);
N := ChangeFileExt(N, '.PAS');
AssignFile(F, N);
ReWrite(F);
Writeln(F, '(* Generated by Master BRAIN (C) 2002 *)');
Writeln(F, 'unit ' + ChangeFileExt(N, '') + ';');
Writeln(F);
Writeln(F, 'interface');
Writeln(F);
Writeln(F, 'const FileSize:integer=' + IntToStr(BFSize) + ';');
Writeln(F, 'FileData:array[0..' + IntToStr(BFSize - 1) + '] of Byte=');
Writeln(F, '(');
while not Eof(BF) do
begin
S := '';
while (not Eof(BF)) and (Length(S) < 80) do
begin
Read(BF, BBB);
S := S + IntToStr(BBB) + ',';
end;
if Eof(BF) then
Delete(S, Length(S), 1);
Writeln(F, S);
end;
CloseFile(BF);
Writeln(F, ');');
Writeln(F);
Writeln(F, 'procedure SaveToFile(FileName:String);');
Writeln(F);
Writeln(F, 'implementation');
Writeln(F);
Writeln(F, 'procedure SaveToFile(FileName:String);');
Writeln(F, 'var F:File of Byte;');
Writeln(F, ' i:integer;');
Writeln(F, 'begin');
Writeln(F, 'AssignFile(F,FileName);');
Writeln(F, 'ReWrite(F);');
Writeln(F, 'for i:=0 to FileSize-1 do Write(F,FileData[i]);');
Writeln(F, 'CloseFile(F);');
Writeln(F, 'end;');
Writeln(F);
Writeln(F, 'end.');
CloseFile(F);
end;
Автор: vshersh
Дата сообщения: 26.02.2006 19:59
SergeBS


Цитата:
vshersh

Цитата:

IMHO средствами делфи можно только картинки, иконки и курсоры добавить. Если надо бинарные данные без сторонних продуктов не обойтись
(Я говорю о Delphi 7 и ниже)
    
Зачем так категорично? DelphiWorld...

Я говорил о встроенном редакторе ресурсов Delphi, который как таковой отсутствует
Есть Image Editor, но он сохраняет в res-файлы только картинки и иконки.
Например, вижуал студия позволяет редактировать ресурсы вручную.
Хотя, опять же IMHO , компоненты RX - это фундаментальная библиотека для делфи, поэтому подобные проблемы волновать не должны

А подход предложенный Delirium'ом конечно интересен, но, IMHO, не очень удобен

Автор: LordMAD
Дата сообщения: 26.02.2006 20:36
vshersh

Цитата:
Я говорил о встроенном редакторе ресурсов Delphi, который как таковой отсутствует

Об .RC-файлах мы не слышали? brcc32.exe удаляем из папки Bin за ненадобностью сразу после установки Delphi?
Автор: Schatz
Дата сообщения: 27.02.2006 07:06
vshersh

Цитата:
Насколько я понял тебя устроит такое-же приложение как в демке IdTCPDemo, только с ActiveX-клиентом?

Цитата:
А не сгодятся события от самого компонента TIdTCPClient:
OnConnected
OnDisconnected
и OnWork ?
Да, это именно то что мне нужно, и события эти подойдут, а по анологии я смогу уже сделать все остальное.

Я даже не знаю как тебя благодарить, буду сильно обязан.
Автор: okrom
Дата сообщения: 27.02.2006 09:42
Всем привет.
Нужно удалить TabSheet с кнопкой при нажатии на нее. В хелпе сказано:

Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don’t free a button, or the form that owns the button, in its OnClick event handler.

Как это можно обойти?
Автор: RomanTim
Дата сообщения: 27.02.2006 09:55
okrom
Можно послать самому себе сообщение через PostMessage, в параметре которого указать или сам TabSheet или его индекс, а в обработчике сообщения уже спокойно удалить
Автор: mr_Maik
Дата сообщения: 27.02.2006 10:32
Прветствую all.
Вопросик возник следующий: Надо из строки (ANSI) сделать строку (UTF-8) и запихать ее в файлик .txt из Delphi.
Все что смог нарыть это
MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), - 1, PWideChar(@Result[1]), Size) - но что-то не получается заюзать эту функцию выдает какие-то кракозябры странные. HELP please.
Автор: vshersh
Дата сообщения: 27.02.2006 11:31
Schatz
Напиши в ПМ свое мыло я тебе вышлю то что получилось

LordMAD
Еще раз поврторюсь:

Цитата:
Я говорил о встроенном редакторе ресурсов Delphi, который как таковой отсутствует

Под встроенным я подразумевал GUI-утилиту, как в VS. Считаю вопрос исчерпанным.


Добавлено:
mr_Maik

Код: Converts a string encoded in Ansi to UTF-8.

Unit
System

Category
character set conversions

Delphi syntax:
function AnsiToUtf8(const S: string): UTF8String
Автор: RomanTim
Дата сообщения: 27.02.2006 12:18
mr_Maik
UTF8Encode

Добавлено:
Сорри, не увидел про ANSI, эта функция с WideString работает
Автор: Schatz
Дата сообщения: 27.02.2006 15:03
vshersh
Попробую еще раз к тебе обратиться.
Твою компаненту запустить не смог в експлорере, но зато по образу и подобию переделал свою компаненту.
Но тут возник еще один глюк странный, компанента успешно считывает данные с сервера, накапливает их, но не выводит их. Вывести их можно еще раз запустив функцию соединения с сервером, в этот момент появляются все прочитанные до этого сообщения и возникает ошибка соединения. Ошибка - это понятно, а вот почему сообщения выходят не в момент их получения а в момент вызова функции соединения - не понятно.

Если у тебя найдется на меня еще немного времени и тебя не затруднит взглянуть на мой код, то я тебе вышлю свою компаненту, от твоей она не сильно отличается...
Автор: vshersh
Дата сообщения: 27.02.2006 15:38
Schatz
Без проблем.
Пиши в ПМ или высылай сразу на реплай.
Автор: RUNaum
Дата сообщения: 27.02.2006 17:52
подсобите с проблемкой.

есть PNG-изображение (на данный момент использую PngImage.pas с sourceforge.org), надо его повернуть. копчиком чую что вначале повернуть надо само изображение, а потом и маску (прозрачность), но не допонимаю до конца как это сделать =(

если кто с этим сталкивался подскажите. можно не на примере PngImage, а к примеру реализацию на том же gdi+.
Автор: RostY
Дата сообщения: 28.02.2006 08:39
The Envision Image Library не пробовал ?

_http://www.intervalsoftware.com/download.html

Я тут запустил демошку, загрузил картинку и поворачивается
Автор: vserd
Дата сообщения: 28.02.2006 11:33
okrom

Цитата:
Как это можно обойти?

Узнать какай таб нужно удалить, переключиться на другой, и удалить нужный.
В сем проблема-то?
Автор: Apleks
Дата сообщения: 28.02.2006 11:41
что означает предупреждение unsafe PChar во время компиляции ?
Автор: dyr farot
Дата сообщения: 28.02.2006 11:51
то, что работа с этим типом небезопасна -- спокойно можно вылезти за пределы строки. а если это делать при записи...
Автор: relictus
Дата сообщения: 28.02.2006 13:17
Народ, кто-нибудь использовал AQtime v4.9 (just released with tight Borland Developer Studio integration. Profile applications without leaving the IDE) от http://www.automatedqa.com/products/aqtime/index.asp для обнаружения утечек памяти и ресурсов?
Интересует, насколько он хорош для этих целей? Удобство работы с этим пакетом? Есть ли более легковесные аналоги?
Автор: BABAYKA
Дата сообщения: 28.02.2006 14:45
Всем добрый день.........на 76 стр. просил о хэлпе по правильномы закрытию всего приложения, в результате чего все переделал как подсказал vshersh (спасибо большое). Все работает прекрасно форма для ввода данных юзера и появляется и закрывается.......а коннекта к базе нет. Вторые сутки бьюсь и ни как....Понимаю....видимо руки у меня кривые... Но этим делу не поможешь. Подскажите , плиз, где ошибка? Что не правильно? Вот код формы данных юзера:

unit Login;

interface

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

type
TFLogin = class(TForm)
Label1: TLabel;
Label2: TLabel;
EdLogin: TEdit;
EdPassword: TEdit;
BtnOK: TButton;
BtnExit: TButton;
procedure BtnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FLogin: TFLogin;

function IsFLoginOK: Boolean;

implementation

{$R *.dfm}

function IsFLoginOK: Boolean;
begin
with TFlogin.Create(nil) do
try
Result := ShowModal = mrOK;
finally
Free;
end;
end;

procedure TFLogin.BtnOKClick(Sender: TObject);
begin
DataModule1.pFIBDatabase1.ConnectParams.UserName := FLogin.EdLogin.Text;
DataModule1.pFIBDatabase1.ConnectParams.Password := FLogin.EdPassword.Text;
try
DataModule1.pFIBDatabase1.Connected:=True;
DataModule1.pFIBDataSet1.Active:=True;
ModalResult := mrOK;
Except
ModalResult := mrNone;
ShowMessage('hjghjjhjgjhghj');
end;
end;

end.
Автор: RomanTim
Дата сообщения: 28.02.2006 15:15
BABAYKA

Цитата:
try
DataModule1.pFIBDatabase1.Connected:=True;
DataModule1.pFIBDataSet1.Active:=True;
ModalResult := mrOK;
Except
ModalResult := mrNone;
ShowMessage('hjghjjhjgjhghj');
end;


Раз коннекта нет - значит должно как-то ругаться... попробуй так - скажает на что ругается

Код: except
on E: Exception do begin
ModeulResult := mrNone;
ShowMessage('Ошибка подключения: '+E.Message);
end;
end;
Автор: BABAYKA
Дата сообщения: 28.02.2006 15:30
RomanTim

Ошибка от Debagger :
Progect PrEmpl.exe raised exception class EAccessViolation with message 'Access violation at adress 0054300D in module 'PrEmpl.exe'. Read of address 00000300. Process stoped. Use step or Run to continue.

Вот так всегда (или почти)....

и указывает на строчку:

DataModule1.pFIBDatabase1.ConnectParams.UserName := FLogin.EdLogin.Text;
Автор: vshersh
Дата сообщения: 28.02.2006 15:33
BABAYKA

Есть подозрение что ты не создал датамодуль
Автор: BABAYKA
Дата сообщения: 28.02.2006 15:34
vshersh

да нет сделан он....обрывок из проекта:
begin
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
if IsFloginOK then
begin
Application.CreateForm(TFEmpl, FEmpl);
Application.Run;
end;
end.
Автор: RomanTim
Дата сообщения: 28.02.2006 15:46
BABAYKA
Блин, сразу не увидел...

Форму ты создаешь через with - с ней работаешь и потом Free - без переменной, а в присваивании делаешь так
DataModule1.pFIBDatabase1.ConnectParams.UserName := FLogin.EdLogin.Text;
Переменная FLogin равна nil

Напиши
DataModule1.pFIBDatabase1.ConnectParams.UserName := EdLogin.Text;

Вообще класс к своим членам должен ображаться только напрямую - без глобальных переменных своего типа. А в модулях где описаны формы, создаваемые ручками лучше вообще удалять оприсание переменной - во избежание

Автор: vshersh
Дата сообщения: 28.02.2006 15:47
BABAYKA
В дизайн-тайм коннект получается?
Автор: BABAYKA
Дата сообщения: 28.02.2006 15:53
vshersh
да ....без проблем

Добавлено:
RomanTim

Теперь от дебаггера:

Progect PrEmpl.exe raised exception class EFIBClientError with message 'Cannot perform operation -- DB is currently open'. Prcess stopped и пр.......и ссылка сюда:

procedure FIBError(ErrMess:TFIBClientError; const Args:array of const);
begin
raise EFIBClientError.Create(
Ord(ErrMess),
Format(FIBErrorMessages[ErrMess], Args),nil);
end;

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.