Новости
Приложение
FAQ
Статьи
Android
Linux
Delphi
C#
OS
VT






0000000000000

Delphi Indy SASL компонент Firemonkey !

Прежде всего вам нужно ознакомиться с официальными примерами. В зависимости от версии вашего Дельфи вы сможете найти Indy\BasicClientServer.  На этой странице имеется краткое описание SASL компонентов доступных для разработки firemonkey пространства имен FMX. Клиентские компоненты indy разработанны компанией Неврона с использованием сокетов.

Серверное приложение создается в основном на VCL компонентах не визуального типа! Примечание: VCL компоненты и их пространство имен это не то же самое, что и FMX пространство имен. Вы можете использовать firemonkey в VCL приложениях! Обратное использование не возможно! В мобильных приложениях не получится использовать VCL ноступны в Delphi и они отображаются не активным цветом!

 

Indy SASL  
компонент описание
TIdSASLAnonymous unit IdSASLAnonymous;
interface
uses Classes, IdSASL, IdTCPConnection;
{
Реализует RFC 2245
Anonymous SASL механизм
Оксюморон, если вы спросите меня :-).
5-20-2002 - Создана данное устройство.
}
type
  TIdSASLAnonymous = class(TIdSASL)
  protected
    FTraceInfo : String;
    procedure InitComponent; override;
  public
    class function ServiceName: TIdSASLServiceName; override;
    function StartAuthenticate(const AChallenge: String): String; override;
  published
    property TraceInfo : String read FTraceInfo write FTraceInfo;
  end;
implementation
{ TIdSASLAnonymous }
procedure TIdSASLAnonymous.InitComponent;
begin
  inherited;
  FSecurityLevel := 0;   //broadcast on the evening news and post to every
                         // newsgroup for good measure
end;
class function TIdSASLAnonymous.ServiceName: TIdSASLServiceName;
begin
  Result := 'ANONYMOUS';   {Do not translate}
end;
function TIdSASLAnonymous.StartAuthenticate(
  const AChallenge: String): String;
begin
  Result := TraceInfo;
end;
end.
TIdSASLCRAMMD5
unit IdSASL_CRAM_MD5;

// S.G. 9/5/2003: First implementation of the CRAM-MD5 authentication algorythm
// S.G. 9/5/2003: Refs: RFC 1321 (MD5)
// S.G. 9/5/2003:       RFC 2195 (IMAP/POP3 AUTHorize Extension for Simple Challenge/Response)
// S.G. 9/5/2003:       IETF draft draft-ietf-ipsec-hmac-md5-txt.00
{$I IdCompilerDefines.inc}

interface

uses
  Classes, IdSASL,
  IdSASLUserPass, IdCoderMIME;
type
  TIdSASLCRAMMD5 = class(TIdSASLUserPass)
  public
    class function BuildKeydMD5Auth(const Password, Challenge: string): string;
    class function ServiceName: TIdSASLServiceName; override;

    function StartAuthenticate(const AChallenge:string) : String; override;
    function ContinueAuthenticate(const ALastResponse: String): String;
      override;
  end;
implementation
uses
  IdGlobal, IdGlobalProtocols, IdHashMessageDigest, IdHash, SysUtils, idBuffer;
{ TIdSASLCRAMMD5 }
class function TIdSASLCRAMMD5.BuildKeydMD5Auth(const Password,  Challenge: string): string;
var
  AKey, ASecret,
  WorkBuffer, opad, ipad: TMemoryStream;
  Ahasher: TIdHashMessageDigest5;
  Buffer: T4x4LongWordRecord;
  // Hashes a stream and place the result in another stream
  procedure _HashStream(Src, Dest: TMemoryStream; SrcSize: Integer);
  begin
    Src.position := 0;
    Buffer := Ahasher.HashValue(Src);
    Dest.Size := 0;
    WriteTIdBytesToStream(Dest,ToBytes(Buffer[0]));
    WriteTIdBytesToStream(Dest,ToBytes(Buffer[1]));
    WriteTIdBytesToStream(Dest,ToBytes(Buffer[2]));
    WriteTIdBytesToStream(Dest,ToBytes(Buffer[3]));
    Dest.Position := 0;
    // Dest.Seek(0, soFromBeginning);
  end;
  // Takes an input stream (Pad) and XOR the beginning with another "key" stream
  procedure _XORStringPad(Key, Pad: TMemoryStream);
  var
    I: Integer;
//    Selector: Integer;
  begin
    //APadSelector := 0;//Pad.Memory;
    //AKeySelector := 0;//Key.Memory;
    for I := 0 to Key.Size - 1 do    // Iterate
    begin
      TIdBytes(Pad.Memory)[i] := TIdBytes(Key.Memory)[i] XOR TIdBytes(Pad.Memory)[i]
{      APadSelector^ := Byte(APadSelector^) XOR Byte(AKeySelector^);
      inc(APadSelector);
      inc(AKeySelector);}
    end;    // for
  end;
  // Creates the necessary streams for the function
  procedure _IniStreams;
  begin
    AKey := TMemoryStream.Create;
    ASecret := TMemoryStream.Create;
    WorkBuffer := TMemoryStream.Create;
    opad := TMemoryStream.Create;
    ipad := TMemoryStream.Create;
  end;
  // Release allocated streams
  procedure _ReleaseStreams;
  begin
    if assigned(AKey) then
      FreeAndNil(AKey);
    if assigned(ASecret) then
      FreeAndNil(ASecret);
    if assigned(WorkBuffer) then
      FreeAndNil(WorkBuffer);
    if assigned(opad) then
      FreeAndNil(opad);
    if assigned(ipad) then
      FreeAndNil(ipad);
  end;
  // Zero out a memory zone
  procedure IdZeroMemory(Dest: TIdbytes; Length: Integer);
  begin
    CopyTIdBytes(ToBytes(StringOfChar(#0, Length)), 0, Dest, 0, Length);
  end;
begin
  Ahasher := TIdHashMessageDigest5.Create;
  try
    _IniStreams;
    try
      // Copy the key and secret data into the buffers.
      // The key MUST be <=64 byte long and padded with zeros to 64 bytes
      // In POP3/IMAP4, the "key" is actually the user's password
      // Ideally, the key is exactly 16 bytes long. Shorter keys makes the
      // system less secure while longuer key do not really add to security
      AKey.Size := 64;
      IdZeroMemory(AKey.Memory, AKey.Size);
      if Length(Password) > 64 then
      begin
        // Key is longuer than 64 bytes
        // Use the MD5 summ of key instead
        Buffer := Ahasher.HashValue(Password);
        WriteTIdBytesToStream(AKey,ToBytes(Buffer[0]));
        WriteTIdBytesToStream(AKey,ToBytes(Buffer[1]));
        WriteTIdBytesToStream(AKey,ToBytes(Buffer[2]));
        WriteTIdBytesToStream(AKey,ToBytes(Buffer[3]));
      end
      else
        WriteStringToStream(AKey,Password);

      // The secret can be as long as one wishes
      // In POP3/IMAP4 AUTH, it is the challenge sent by the server
      WriteStringToStream(ASecret,Challenge);
      // Initialize the inner pad
      WriteStringToStream(ipad,StringOfChar(#$36, 64));
      // XOR the inner pad and the string
      _XORStringPad(AKey, ipad);
      // Add the key at the end of the pad
      ipad.Position := 64; //Seek(0, soFromEnd);
      ASecret.Position := 0;
      WriteMemoryStreamToStream(Asecret, ipad, ASecret.Size);
      // Compute the MD5 hash of the result
      _HashStream(ipad, WorkBuffer, ipad.Size);
      // Initialize the outer pad
      WriteStringToStream(opad,StringOfChar(#$5c, 64));
      // XOR the outer pad with the key
      _XORStringPad(AKey, opad);
      // Add the result of the inner calculation to the end of the outer pad
      opad.Position := opad.Size;
      WriteMemoryStreamToStream(WorkBuffer, opad, WorkBuffer.Size);
//      opad.WriteBuffer(WorkBuffer.memory^, WorkBuffer.Size);
      opad.Position := 0;
      // Compute the hash of the hashed inner padded string and the outter padded string
      WorkBuffer.Size := 0;
      _HashStream(opad, WorkBuffer, opad.Size);
      opad.Position := 0;
      result := LowerCase(Ahasher.AsHex(Ahasher.HashValue(opad)));
      // S.G. 10/5/2003: ToDo: zero the memory so that sensitve info do not stay in memory
    finally
      _ReleaseStreams;
    end;
  finally
    Ahasher.Free;
  end;
end;
function TIdSASLCRAMMD5.ContinueAuthenticate(
  const ALastResponse: String): String;
begin
end;
class function TIdSASLCRAMMD5.ServiceName: TIdSASLServiceName;
begin
  result := 'CRAM-MD5'; {do not localize}
end;
function TIdSASLCRAMMD5.StartAuthenticate(
  const AChallenge: string): String;
var
  Digest: String;
begin
  if Length(AChallenge) > 0 then
  begin
    Digest := GetUsername + ' ' + BuildKeydMD5Auth(GetPassword, AChallenge);
    result := Digest;
  end
  else
    result := '';
end;
end.
TIdSASLCRAMSHA1 unit IdSASL_CRAM_SHA1;

{
  Refs: RFC 1321 (MD5)
  RFC 2195 (IMAP/POP3 AUTHorize Extension for Simple Challenge/Response)
  IETF draft draft-ietf-ipsec-hmac-md5-txt.00
}

interface
{$i IdCompilerDefines.inc}

uses
  IdSASL,
  IdSASL_CRAMBase,
  IdSASLUserPass;

type

  TIdSASLCRAMSHA1 = class(TIdSASLCRAMBase)
  public
    class function BuildKeydAuth(const APassword, AChallenge: string): string; override;
    class function ServiceName: TIdSASLServiceName; override;
  end;

implementation

uses
  IdGlobal,
  IdHMACSHA1,
  SysUtils;

class function TIdSASLCRAMSHA1.BuildKeydAuth(const APassword, AChallenge: string): string;
var
 LHash:TIdHMACSHA1;
 LBuffer:TIdBytes;
begin
 LHash:=TIdHMACSHA1.Create;
 try
  LHash.Key:=ToBytes(APassword);
  LBuffer:=ToBytes(AChallenge);
  LBuffer:=LHash.HashValue(LBuffer);
  Result:=LowerCase(ToHex(LBuffer));
 finally
  FreeAndNil(LHash);
 end;
end;

class function TIdSASLCRAMSHA1.ServiceName: TIdSASLServiceName;
begin
  result := 'CRAM-SHA1'; {do not localize}
end;

end.
TIdSASLDigest  
TIdSASLExternal Реализует RFC 2222: Внешний механизм SASL                                                                                                                                           unit IdSASLExternal;

interface
uses
  Classes, IdSASL, IdTCPConnection;                                                                                                                                                     
type
  TIdSASLExternal = class(TIdSASL)
  protected
    FAuthIdentity: String;
    procedure InitComponent; override;
  public
    class function ServiceName: TIdSASLServiceName; override;
    function StartAuthenticate(const AChallenge: String): String; override;

  published
    property AuthorizationIdentity : String read FAuthIdentity write FAuthIdentity;
  end;

implementation

{ TIdSASLExternal }

procedure TIdSASLExternal.InitComponent;
begin
  inherited;
  FSecurityLevel := 0; // unknown, depends on what the server does
end;

class function TIdSASLExternal.ServiceName: TIdSASLServiceName;
begin
  Result := 'EXTERNAL';  {Do not translate}
end;

function TIdSASLExternal.StartAuthenticate(
  const AChallenge: String): String;
begin
  Result := AuthorizationIdentity;
end;

end.        
TIdSASLLogin Основной механизм в систему как SMTP использует его. Это на самом деле не указано в RFC - по крайней мере, я не мог найти. Это типа приливных UserPass, потому что он нужен имя пользователя / пароль                                                                                            unit IdSASLLogin;

interface
uses
  Classes, IdSASL,
  IdSASLUserPass;

type
  TIdSASLLogin = class(TIdSASLUserPass)
  protected
    procedure InitComponent; override;
  public
    class function ServiceName: TIdSASLServiceName; override;

    function StartAuthenticate(const AChallenge:string) : String; override;
    function ContinueAuthenticate(const ALastResponse: String): String;
      override;
  end;

implementation

uses IdUserPassProvider, IdBaseComponent;

{ TIdSASLLogin }

function TIdSASLLogin.ContinueAuthenticate(
  const ALastResponse: String): String;
begin
  Result := GetPassword;
end;

procedure TIdSASLLogin.InitComponent;
begin
  inherited InitComponent;
  FSecurityLevel := 200;
end;

class function TIdSASLLogin.ServiceName: TIdSASLServiceName;
begin
  Result := 'LOGIN'; {Do not translate}
end;

function TIdSASLLogin.StartAuthenticate(
  const AChallenge: string): String;
begin
  Result := GetUsername;
end;

end.     
TIdSASLOTP Первоначальная версия IdSASLOTP. Это OTP (One-Time-только пароль) SASL
  механизм.  unit IdSASLOTP;

interface
uses
  Classes,
  IdException,
  IdSASL,
  IdSASLUserPass;

type
  TIdSASLOTP = class(TIdSASLUserPass)
  protected
    function GenerateOTP(const AResponse:string; const APassword:string):string;
    procedure InitComponent; override;
  public
    class function ServiceName: TIdSASLServiceName; override;

    function StartAuthenticate(const AChallenge:string) : String; override;
    function ContinueAuthenticate(const ALastResponse: String): String;
      override;

  end;

  EIdOTPSASLException = class(EIdException);
  EIdOTPSASLUnknownOTPMethodException = class(EIdOTPSASLException);

implementation

uses
  IdBaseComponent, IdGlobal, IdOTPCalculator,  IdUserPassProvider, SysUtils;

{ TIdSASLOTP }

function TIdSASLOTP.ContinueAuthenticate(
  const ALastResponse: String): String;
begin
  Result := GenerateOTP(ALastResponse, GetPassword);
end;

procedure TIdSASLOTP.InitComponent;
begin
  inherited;
  FSecurityLevel := 1000;
end;

class function TIdSASLOTP.ServiceName: TIdSASLServiceName;
begin
  Result := 'OTP'; {Do not translate}
end;

function TIdSASLOTP.StartAuthenticate(const AChallenge: string): String;
begin
  Result := GetUsername;
end;

function TIdSASLOTP.GenerateOTP(const AResponse:string; const APassword:string):string;
var LChallenge:string;
    LChallengeStartPos:integer;
    LMethod:string;
    LSeed:string;
    LCount:integer;
begin
  LChallengeStartPos:=pos('otp-', AResponse); {do not localize}
  if LChallengeStartPos>0 then begin
    inc(LChallengeStartPos, 4); // to remove "otp-"
    LChallenge:=copy(AResponse, LChallengeStartPos, $FFFF);
    LMethod:=Fetch(LChallenge);
    LCount:=StrToInt(Fetch(LChallenge));
    LSeed:=Fetch(LChallenge);
    if LMethod='md5' then {do not localize} // methods are case sensitive
    begin
      Result := 'word:' + TIdOTPCalculator.ToSixWordFormat(TIdOTPCalculator.GenerateKeyMD5(lseed, APassword, LCount)) {do not localize}
    end
    else
    begin
      if LMethod = 'md4' then {do not localize}
      begin
        Result := 'word:' + TIdOTPCalculator.ToSixWordFormat(TIdOTPCalculator.GenerateKeyMD4(lseed, APassword, LCount)) {do not localize}
      end
      else
      begin
        if LMethod = 'sha1' then  {do not localize}
        begin
           Result := 'word:' + TIdOTPCalculator.ToSixWordFormat(TIdOTPCalculator.GenerateKeySHA1(lseed, APassword, LCount)) {do not localize}
        end
        else
        begin
          raise EIdOTPSASLUnknownOTPMethodException.Create('Unknown OTP method'); //rs  {do not localize}
        end;
      end;
    end;
  end;
end;

end.
TIdSASLPlain TIdSASLUserPass, потому что он нужен имя пользователя / пароль,
   кроме того, он имеет свойство LoginAs - это "эффективное имя пользователя"
   после установления соединения, которые могут быть различными, как ваш "реальный" имя пользователя
   (Например, корневой вход в систему, как кто-то другой на системе UNIX                                                                                              
unit IdSASLPlain;

interface
uses
  Classes, IdSASL,
  IdSASLUserPass;

type
  TIdSASLPlain = class(TIdSASLUserPass)
  protected
    FLoginAs: String;
    procedure InitComponent; override;
  public
    class function ServiceName: TIdSASLServiceName; override;
    function StartAuthenticate(const AChallenge:string) : String; override;
  published
    property LoginAs  : String read FLoginAs write FLoginAs;
  end;

implementation

{ TIdSASLPlain }

procedure TIdSASLPlain.InitComponent;
begin
  inherited InitComponent;

end;

class function TIdSASLPlain.ServiceName: TIdSASLServiceName;
begin
  Result := 'PLAIN';  {Do not translate}
end;

function TIdSASLPlain.StartAuthenticate(const AChallenge: string): String;
var
  fusr, flogas: string;
begin
  fusr := GetUsername;
  flogas := LoginAs;
  if fusr = '' then begin
    fusr := flogas;
  end;
  Result := flogas+#0+fusr+#0+GetPassword;  {Do not translate}
end;

end.
 
TIdSASLSKey SKEY SASL механизм, как это определено в RFC 2222. Обратите внимание, что это является устаревшим и
  вы должны использовать RFC 2444 для новых конструкций. Это предусмотрено только для обратной
  совместимость.
 
S / KEY механизм SASL на основе RFC 2222.

Отметим, что это изношено и S / Key является торговой маркой Белькоре. Данное устройство
предоставляется только для обратной compatiability с некоторыми старыми системами.

Новые конструкции следует использовать IdSASLOTP (RFC 2444), который является более гибким и использует лучший хэш
(MD5 и SHA1).                                                                                                                                                                                          unit IdSASLSKey;

interface
uses Classes, IdSASLUserPass, IdSASL;
type
  TIdSASLSKey = class(TIdSASLUserPass)
  protected
    procedure InitComponent; override;
  public
    class function ServiceName: TIdSASLServiceName; override;

    function StartAuthenticate(const AChallenge:string) : String; override;
    function ContinueAuthenticate(const ALastResponse: String): String;
      override;
  end;

implementation

uses
  IdBaseComponent, IdGlobal, IdOTPCalculator,  IdUserPassProvider, SysUtils;

const SKEYSERVICENAME = 'SKEY'; {do not localize}

{ TIdSASLSKey }

function TIdSASLSKey.ContinueAuthenticate(
  const ALastResponse: String): String;
var LBuf, LSeed : String;
  LCount : Cardinal;
begin
  LBuf := Trim(ALastResponse);
  LCount := StrToIntDef(Fetch(LBuf),0);
  LSeed := Fetch(LBuf);
  Result := TIdOTPCalculator.ToSixWordFormat(TIdOTPCalculator.GenerateKeyMD4(lseed, GetPassword, LCount));
end;

procedure TIdSASLSKey.InitComponent;
begin
  inherited;
  //less than 1000 because MD4 is broken and this is depreciated
  FSecurityLevel := 900;
end;

class function TIdSASLSKey.ServiceName: TIdSASLServiceName;
begin
  Result := SKEYSERVICENAME;
end;

function TIdSASLSKey.StartAuthenticate(const AChallenge: string): String;
begin
  Result := GetUsername;
end;

end.
 
TIdUserPassProvider Этот компонент имеет комбинацию имени пользователя / пароля.
   Он используется SASL или другими компонентами для того, чтобы
   упростить программирование приложений - программист будет иметь только
   установить имя пользователя / пароль один раз, если пользователь вводит его, а не для
   все компоненты, которые вместо того, чтобы сейчас ссылка на экземпляр этого класса.                                                                         unit IdUserPassProvider;

interface
uses
  IdBaseComponent;

type
  TIdUserPassProvider = class(TIdBaseComponent)
  protected
    FUsername: string;
    FPassword: string;
  public
    function GetPassword: String;
    function GetUsername: String;
  published
    property Username: string read GetUsername write FUsername;
    property Password: string read GetPassword write FPassword;
  end;

implementation

{ TIdUserPassProvider }

function TIdUserPassProvider.GetPassword: String;
begin
  Result := FPassword;
end;

function TIdUserPassProvider.GetUsername: String;
begin
  Result := FUsername;
end;

end.


Delphi 3D Scene & Shapes & Layers компонент Firemonkey !

3D Primer

FireMonkey представляет 2D вид объектов в 3D-пространстве. TViewport3D отображает 3D-контента в остальном 2D форме, в то время как TForm3D начинается с 3D-контентом. 2D и 3D могут быть вложенными.
FireMonkey 3D использует библиотеки специфи.... читать статью


Delphi  Animation компонент Firemonkey !

 Компоненты анимации в Дельфи для firemonkey представленны компонентами TColorAnimation, TGradientAnimation, TFloatAnimation, TRectAnimation, TBitmapListAnimation, TBitmapAnimation, TColorKeyAnimation, TFloatKeyAnimation, TPathAnimation. Для большинства специализированных наборов компонентов не доступны для .... читать статью


Delphi  Colors компонент Firemonkey !

 Блок Vcl.Graphics содержит определения полезных констант для TColor. Эти константы карты либо непосредственно к ближайшему соответствующего цвета в палитре системы (например, clBlue карты до синего) или к соответствующему экрану.... читать статью


Delphi  DBExpress компонент Firemonkey !

 Компоненты DBExpress позволяют самым простым способом организовать доступ к структурированным источникам данных. Для мобильных платформ вы можете разрабатывать приложения на основе firemonkey все компоненты доступны для использован.... читать статью


Delphi  Grids  Common controls компонент Firemonkey !

 

Компоненты Grids представлены TGrid, TStringGrid, THeader это обычные визуальные компоненты пришедщие из далекого прошлого первых версий Дельфи.... читать статью


Delphi  LiveBindings Misc компонент Firemonkey !

LiveBindings компоненты поддерживыемые как в VCL и FireMonkey в рамках RAD Studio.
LiveBindings основывается на реляционных логических выражениях с однонаправленным или двунаправленным взаимодействием клиента и сервера. LiveBindings также об объектах уп.... читать статью


Delphi Shapes компонент Firemonkey !

Описание

Образец Arrows3D демонстрирует, как использовать класс TViewport3D, чтобы просматривать и взаимодействовать с 3D-объектами. Класс TViewport3D реализует интерфейс для просмотра 3D-объектов. Этот пример использует 3D-элементы управления, такие .... читать статью

Delphi Indy SASL компонент Firemonkey !

Прежде всего вам нужно ознакомиться с официальными примерами. В зависимости от версии вашего Дельфи вы сможете найти Indy\BasicClientServer.  На этой странице имеется краткое описание SASL компонентов доступных .... читать статью


Delphi Indy Server компонент Firemonkey !

Прежде всего вам нужно ознакомиться с официальными примерами. В зависимости от версии вашего Дельфи вы сможете найти Indy\BasicClientServer. ения. Вы должны создать два типа приложений для сервера и для клиентского компьютера. Поэтому компо.... читать статью


Delphi Interbase компонент Firemonkey !

InterBase кросс-платформенная СУБД поддерживает Unicode и позволяет создать кросс платформенные приложения. Компоненты InterBase имеют свой редактор свойств вызываемый двойным щелчком. IBX может работать то.... читать статью


Delphi Indy Intercepts компонент Firemonkey !

Intercepts(Перехватчики) позволяют изменять  приняты данные в IOHandler и изменять их перед посылкой в IOHandler. Перехватчики  используются для реализации логики и отладки компонентов. Они могут быть также .... читать статью


Delphi Rest Client компонент Firemonkey !

Прежде всего сказать, что REST Client это библиотека для работы с JSON без явной поддержки XML. Структура REST библиотека фокусируется на JSON в качестве формата пре.... читать статью


Delphi TeeChart и Cloud компоненты в Firemonkey приложениях!

TeeChart поддерживается VCL и FireMonkey в RAD Studio компонент для построения графиков программного обеспечения Steema. TeeChart включает в себя быстрый и простой в использовании компоненты для построения ди.... читать статью


Delphi WebSrvices компонент Firemonkey !

Компоненты WebService это приложения выполняемые на сервере как служба и предоставляющее клиенту свои функции через протоколы Интернет. Благодаря WebSrvices происходит обмен информацией между приложениями. Пр.... читать статью


Delphi dbGo компоненты Firemonkey !

dbGo предоставляет разработчикам мощную и логической объектной модели для программного доступа, редактирования и обновления данных из широкого спектра источников данных через системные интерфейсы OLE DB. Наиболее распространенным использован.... читать статью

Delphi  Effect компонент Firemonkey !

 FireMonkey встроенный ImageFX двигатель обеспечивает более 50 GPU с питанием от эффектов. Эти эффекты невизуальные компоненты, которые могут быть найдены в категории Эффекты на палитре инструментов. Все указанные эффекты могут быть просто вк.... читать статью


Delphi  FireDAC компонент Firemonkey !

FireDAC библиотека которая, позволяющая осуществлять доступ к  MySQL, SQL, InterBase, SQLite, Oracle, Server,  PostgreSQL, DB2,  Firebird, Access, SQLAnywhere, Advantage DB, Informix из Delphi и C++ Builder. Разработка баз данных весело снова с FireDAC.... читать статью


Пишем на Delphi для Android

Сейчас хотя бы одно устройство управляемое операционной системой Android можно найти практически в каждом доме и это не только смартфоны и планшеты, которые у всех на слуху, это и мультимедиа проигрыватели и ТВ-приставки и даже детские игрушки.
.... читать статью

Делаем первые шаги в программировании.

Делаем первые шаги в программировании
Итак, по той или иной причине, вы начали задумываться об изучении программирования. Первоначально необходимо точно определиться, для чего вы собираетесь заняться этим. Конечно, сейчас .... читать статью

Развитие языков программирования: системы высокого и низкого уровня

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

Общие основы программирования на компьютере

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

Нейролингвистическое программирование

Нейролингвистическое программирование.
В шестидесятых годах прошлого века знаменитый антрополог Грегори Бейтсон совместно с такими известными учеными как: Ричард Бендлер, Джон Гриндер, Френк Пьюселик, начал свою научную.... читать статью

Delphi Indy Client компонент Firemonkey !

Прежде всего вам нужно ознакомиться с официальными примерами. В зависимости от версии вашего Дельфи вы сможете найти Indy\BasicClientServer. Indy компоненты позволяют создавать клиент серверные приложения. Это означает, что должно быть два т.... читать статью


Delphi Material & Layout компонент Firemonkey !

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


Delphi Data Access компоненты в Firemonkey приложениях!

VCL компоненты и их пространство имен это не то же самое, что и FMX пространство имен. Вы можете использовать firemonkey в VCL приложениях! Обратное исполь.... читать статью


Delphi Internet компонент Firemonkey !

Internet  компоненты для работы с наиболее популярными сетевыми протоколами в среде Delphi в частности HTTP, FTP, TCP, UDP,  Gopher, POP3, SMTP, NNTP, Ident, IRC, IMAP4, Finger, LPR, FSP, SOCKS,  SNPP, SNTP. Для использования компонентов закладки Internet проектах мобильных приложени.... читать статью


delphi xe5 component additional


Firemonkey имеет следующие компоненты закладки additional в панели компонентов. Также вы можете ознакомиться с официальным ресурсом компнии .... читать статью

Delphi FireMonkey Standard




The following figure shows the relationship of some key classes that make up the FireMonkey hierarchy. To create a FireMonkey component, you need to decide which class you will use as an ancestor (extension point) to implement a .... читать статью


источник информации
index yandex. Рейтинг@Mail.ru



Уличные бои собак - одна как волк



Сколько времени осталось до развала Грузии?



Блогер Ничиро Яки показал красоту Японии весной! Любуйтесь Сакурой - она прекрасна!



Бесплатная программа для перекодирование и обрезки видео!



Мишико - торчок



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



Жестокость и насилие на улицах - опастность от собак