Ответы пользователя по тегу Delphi
  • Как изменить значение графика через Tchart Delphi 7?

    svd71
    @svd71
    В TChart добавляется серия. Это объект, описывающий структуру выводимой кривой: вид, цвет, координаты и пр. Добавляется серия либо двойном щелчком мыши на компоненте, либо в коде.
    Далее у серии есть метод addXY(), с помощью которого заносяца точки этой серии.
    Ответ написан
    Комментировать
  • Как работать с спец символами Delphi?

    svd71
    @svd71
    Судя по всему вы работаете с широкими символами типа WideString. Доподлинно мне такая функция не известна. Да и подобный финкционалитет тоже не требуется. Но вот следющий сценарий мог бы помочь.
    1. Присвоить переменной типа AnsiString.
    2. С помощью StringReplace() заменить все вопросы на пустую строку.
    3. Обратное преобразование в Wide.
    Ответ написан
    Комментировать
  • Какую среду разработки выбрать для написания "аналога 1С", имеющию поддержку работы с SQL серверами?

    svd71
    @svd71
    Ну если только для защиты, то зайдите на torry.net и скачайте любой скриптовый компонент. И в путь. Или можно потратиться на FastReport скрипт - еще шикарней аналогия будет. Ведь без генератора печати не обойтись.

    Хотя если вам хотелось бы, чтоб с "пользой на будующее" что-то делать и если есть времени более года, то лучше начать с изучения java или c#.
    Ответ написан
    Комментировать
  • Виртуальные папки в Project Manager RAD Studio (XE10)?

    svd71
    @svd71
    Вся эта структура зависсит напрямую от файловой системы. Что вам мешает физическти разнести файлы по папкам с названиями?
    Естественно все это "дерево" строится на основе данных из *.dpr. Если в файле проекта лежат абсолютные пути, то и отображаться они будут с этими абсолютными путями в дереве. А вот с отностиельными путями все выглядит так, как вы и хотите.
    Ответ написан
    Комментировать
  • Как настроить правильный кирллический вывод через IDHTTP?

    svd71
    @svd71
    То есть у вас проблема именно в коннекте базы данных о которой ни слова. Доставить кирилицу наиболее простым образом - это настроить правильное соединение с базой данных. В резутьтате на все символьные поля у вас должны создаваться потомки TWideStringField или его аналог. Проверяйне настройки соединения с базой. Если база Interbase/Firebird, то достаточнов параметре соединения указать UTF8.

    Если же у вас все таки и база с кодировкой ANSII и соединени с ней, то в методах текстового поля в событиях Get/PutRecord нужно использовать обработку методами utf8encode/utf8decode.
    Ответ написан
    3 комментария
  • Какие есть хорошие уроки по Delphi ?

    svd71
    @svd71
    Ну я бы не называл желающих поделиться зананиями, выкладывающих ролики на Ютьюб, как "выкладывающих лажу". Просто каждый делает в меру своих возможностей, не так ли?

    https://www.google.de/search?client=ubuntu&channel...

    www.embarcadero.com/31-days-of-december
    Ответ написан
    1 комментарий
  • Где сейчас используется Delphi?

    svd71
    @svd71
    Altium design
    Ответ написан
    Комментировать
  • Как интегрировать проводник windows в свое приложение?

    svd71
    @svd71
    Можно. Нужно смотреть COM-интрфейсы. Внятного примера с ходу не нашел, но вот примерное построение шелловского поиска www.delphi-central.com/tutorials/Shell_Search.aspx .

    Как прийдет понимание об использовании интерфейсов, COM и ActiveX, советую сразу посмотреть на msdn.com - там все интерфейсы должны быть расписаны.
    Ответ написан
    Комментировать
  • Delphi 7 бесплатная?

    svd71
    @svd71
    Есть еще вариант попробовать портировать на Лазарус. Только если проект использует компоненты базы данных, то напрячься придется.

    У Эмбаркадеры есть еще вариант, что берется версия под конкретную разработку проекта. цену точно не скажу, но помнится там было чтио то в районе 500 на разработчика. нужно узнавать у них. Вполне возможен вариант, что они могут предоставить какую либо версию бесплатно.
    Ответ написан
    Комментировать
  • Вывод форматированного текста Delphi

    svd71
    @svd71
    были такие компоненты: fast-report. www.fast-report.com/en

    В нем можете и в htm, pdf, office и кучу других форматов выводить.

    Кроме того там же можно и показ на экран оформить и если нужно и на печать вывести. а шаблоны менять редактором.
    Ответ написан
    Комментировать
  • Почему тип Varchar определяется как TWideMemoField?

    svd71
    @svd71
    Отсуствие длинны может дать понять датасету, что предоставленные данные из BLOB-полей. Поэтому попробуйте задать длинну или же добавляйте поля нужного типа вручную в дизайнере или перед открытием в рантайме.
    Ответ написан
    1 комментарий
  • Как заставить работать этот код?

    svd71
    @svd71
    1. Убедитесь, что пароль и имя пользователя такие же, как и должны быть.

    2. попробуйте переписать строку соединения с базой на полный путь, а не на относительный путь. База должна располагаться не на съемном носителе. Так же попробуйте localhost заменить на 127.0.0.1 и попробуйте с указанием порта 3050. Часто такой глюк бывает на Виндовс системах, где инсталяция криво пробежала и не модифицировала services.

    3. В строке сединения нужно еще указать с каким charset будуте работать.
    Ответ написан
  • Как осуществить динамическое расширение массива?

    svd71
    @svd71
    обычно я делеаю такие штуки так:
    i := Length(Eat);
    SetLength(Eat, i+1);
    Eat[i].EatName := Eatname; 
    Eat[i].EatCoun t:= EatCount;
    Ответ написан
    Комментировать
  • Delphi. Как оптимизировать создание записей в классе record?

    svd71
    @svd71
    function CreateDrinker(var Drinker: TDrinker; fname: string; a: integer): string;


    указать перед параметром, который нужно изменять в функции, как var.
    Ответ написан
    Комментировать
  • Delphi 7: Как показать форму поверх экрана блокировки Windows XP?

    svd71
    @svd71
    Дело в том, что этот диалог еще с версии NT переведен на уровень ядра, что бы защитить машину от перехвата паролей. Поэтому простыми средствами вам не обойтись. Поэтому логичнее прислушаться к совету @fart и делать то, что написано в статье. Другого способа просто нет - только банальная подмена библиотеки.
    Ответ написан
    Комментировать
  • Как работать с https в delphi 7?

    svd71
    @svd71
    Это обычный сервер. Вам нужно в датамодуль добавить компоненты ssl хэндлеров и с ними уже экспериментировать.
    unit U_HTTPSrv;
    
    interface
    
    uses
      SysUtils, Classes, IdServerIOHandler, IdServerIOHandlerSocket,
      IdServerIOHandlerStack, IdBaseComponent, IdComponent, IdCustomTCPServer,
      IdCustomHTTPServer, IdHTTPServer, IdContext;
    
    type
      TDataModule1 = class(TDataModule)
        IdHTTPServer: TIdHTTPServer;
        IdServerIOHandlerStack: TIdServerIOHandlerStack;
        procedure IdHTTPServerCommandGet(AContext: TIdContext;ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
      protected
    
      public
    
      end;
    
    var
      DataModule1: TDataModule1;
    
    implementation
    
    uses
        IdHttp
      , U_Mach4_HTTP
      , T_Mach4
      ;
    
    {$R *.dfm}
    
    function NormalFileName(aFileName: String): String;
    begin
      Result := copy(aFileName, 2 ,255);
    end;
    
    procedure TDataModule1.IdHTTPServerCommandGet(AContext: TIdContext;
      ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
    var
      FS : TFilestream;
      aFilename: String;
      _messages: String;
      FA: T_FahrauftragRec;
      FAO : T_FahrauftragObj;
      i : Integer;
      pn: String;
    begin
            (* ('Req.QueryParams(GET):'+ ARequestInfo.QueryParams);
               ('Req.Document:'+ ARequestInfo.Document);
               ('Req.Params(REQUEST):'+ ARequestInfo.Params.Text);
               ('Req.UnparsedParams(braucht nicht):'+ ARequestInfo.UnparsedParams);
               ('Req.FormParams(POST [ungetrennt]):'+ ARequestInfo.FormParams);   *)      
    
    
     with TIdHttp.Create(nil) do
     try
       //if (ARequestInfo.Document = '/ppppp') then
       begin
    
         if ARequestInfo.Document = '/' then
            ARequestInfo.Document := ARequestInfo.Document + 'form.html';
         aFilename := NormalFileName(ARequestInfo.Document);
    
    
        if FileExists(aFilename) then
        begin
          //AResponseInfo.ContentType := GenContType(aFilename); // определяет тип содержимого по расширению запрашиваемого файла *.htm == text/html *.txt == text/plain ну и так далее
          AResponseInfo.ResponseNo := 200;// все успешно
          AResponseInfo.ContentStream := TFileStream.Create(aFileName,fmShareDenyNone);
          Exit;
        end
        else
        begin
    //localhost:8080/MB_FA?id=1&lageroperation=1&packung.packungsart=1&packung.artikelcode=A1234567&packung.breite=123,4
          if (ARequestInfo.Document = '/MB_FA') then
            with  T_FahrauftragObj.Create( nil ) do
            try
              FAO := T_FahrauftragObj(ObjInstance);
              for i := 0 to ARequestInfo.Params.Count -1 do
              begin
                pn := ARequestInfo.Params.Names[i];
                FAO.setProperty(pn , ARequestInfo.Params.Values[pn]);
              end;
              AResponseInfo.CustomHeaders.Add('Content-type: text/xml;');  //Content-type: text/xml; charset=utf-8
              AResponseInfo.ContentText := FAO.buildXML('MB_FA');
              exit;
            finally
              Free;
            end;
          if (ARequestInfo.Document = '/MB_WBA') then
            with  T_WBAuftragObj.Create( nil ) do
            try
              FAO := T_FahrauftragObj(ObjInstance);
              for i := 0 to ARequestInfo.Params.Count -1 do
              begin
                pn := ARequestInfo.Params.Names[i];
                FAO.setProperty(pn , ARequestInfo.Params.Values[pn]);
              end;
              AResponseInfo.CustomHeaders.Add('Content-type: text/xml;');  //Content-type: text/xml; charset=utf-8
              AResponseInfo.ContentText := FAO.buildXML('MB_WBA');
              exit;
            finally
              Free;
            end;
        end;
        _messages := _messages+(Format('Client %s:%d trying to get nonexistent file "%s" at %s',[
                                AContext.Binding.PeerIP,
                                AContext.Binding.PeerPort,
                                ARequestInfo.Document,
                                FormatDateTime('yyyy/mm/dd hh:mm:ss', Now)]))+#13#10;
        aFilename := NormalFileName('/404.htm');//выдаем 404 ошибку
    //    AResponseInfo.ContentType := GenContType(aFilename);
        AResponseInfo.ResponseNo := 404;
        AResponseInfo.ContentText := 'NoInfo';
        //AResponseInfo.ContentStream := TFileStream.Create(aFileName,fmShareDenyNone);
      end;
    
     
     finally
       Free;
     end; 
    
    end;
    
    end.


    object DataModule1: TDataModule1
      OldCreateOrder = False
      Height = 130
      Width = 185
      object IdHTTPServer: TIdHTTPServer
        Active = True
        Bindings = <>
        DefaultPort = 8080
        IOHandler = IdServerIOHandlerStack
        AutoStartSession = True
        SessionState = True
        OnCommandGet = IdHTTPServerCommandGet
        Left = 64
        Top = 8
      end
      object IdServerIOHandlerStack: TIdServerIOHandlerStack
        Left = 64
        Top = 56
      end
    end
    Ответ написан
  • Как работать с https в delphi 7?

    svd71
    @svd71
    Не проще ли попробовать сначала было Indy? С SSL, конечно, не пробовал, но вот обычный сервер использовал. Но вроде как там есть необходимые свойства и события для подключения сертификатов.
    Ответ написан
  • Как в delphi писать процедуры для динамических объектов?

    svd71
    @svd71
    Если вы создаете окна одного класса, то все функции, принадлежащие этому классу будут имплементированы во все копии. Пример:
    type
     TNotepad = class(TForm) //Предок всех классов для записи блокнота
    public
      class var OnAfterCreate: TNotifyEvent; //событие, для реакции после создания 
      constructor Create(AOwner: TComponent); override; //второй возможный 
                                        //вариатнвариант
    end;
    
    TMainForm = class(TForm)
       procedure FormCreate(Sender: TObject);
    public
       procedure DoAfterCreate1(Sender:TObject); //вариант 1
       procedure  DoAfterCreate2(Sender:TObject); //вариант 2
    end;
    
    constructor TNotepad.Create(AOwner: TComponent);
    begin
     inherited;
      //варант 1
     if Assigned(OnAfterCreate) then
          OnAfterCreate(Self);
    //*1
    //вариант 2
    if Assigned(Screen.MainForm ) then
      if Screen.MainForm is TMainForm then
        TMainForm(Screen.MainForm).DoAfterCreate2(Self);
    //*2
    end;
    
    procedute TMainForm.FormCreate(Sender:TObject);
    begin
      TNotepad.OnAfterCreate := Self.DoAfterCreate1; //вариант 1
    end;
    Ответ написан
    Комментировать
  • Как в delphi писать процедуры для динамических объектов?

    svd71
    @svd71
    Событие компонентов устанавливается определенного типа, поэтому нужно смотреть в первую очередь какой тип имеет событие. Под него создается процедура или функция объекта. Например реализация для кнопки и для формы на одну единственную процедуру, если известно, что она есть:
    procedure TForm1.OnCklickFrom2(Sender: TObject);
    begin
      Caption := TComponent(Sender).Name;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      Frm2 : TForm2;
    begin
      Frm2 := TForm2.Crete(Application);
      Frm2.OnClick := Self.OnCklickFrom2;
      Frm2.Button1.OnClick := Self.OnCklickFrom2;
    end;
    Ответ написан