Обсуждение Программирование на Delphi/Pascal

Книженку покупал, дешевле в инете заказать, не искал так как сразу отнес к разряду must have
на вин7 стоит заглушка на chm файлы
Решение нашел. Нужно добавить в реестр:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]
SaveZoneInformation"=dword:00000001
Или оформить в REG-ФАЙЛ:

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]
SaveZoneInformation"=dword:00000001

reboot
тут


 

    Bell

    очки: 34
    Нет комментариев

MIDAS

Ословед
Есть база в формате dbf, там судя по всему одна таблица, необходимо к базе законектиться и вывести её содержимое на TDBGrid.
Только ADOQuerry не хочет конектиться. Какие у него настройки должны быть?
 
Награды
7
Есть база в формате dbf, там судя по всему одна таблица, необходимо к базе законектиться и вывести её содержимое на TDBGrid.
Только ADOQuerry не хочет конектиться. Какие у него настройки должны быть?
Я рекомендую воспользоваться BDE для этой цели, это компоненты TDatabase, TTable и т.п. со вкладки компонент BDE. Чтобы ADO работало с базами данных от dBase нужно чтобы был соответствующий OLEDB провайдер. Ну и естественно лучше один раз импортировать содержимое этой таблицы во что-то современное, с чем ADO работает без проблем, и пользоваться.
 
Добрый день! Подскажите, как в Delphi 7 преобразовать полученный текст вида \u041f\u0435\u0440\u0444\u043e\u0440\u0430\u0446\u0438\u044f в читаемый?
 
Награды
7
Добрый день! Подскажите, как в Delphi 7 преобразовать полученный текст вида \u041f\u0435\u0440\u0444\u043e\u0440\u0430\u0446\u0438\u044f в читаемый?
Судя по всему это так закодированы символы Unicode. Ниже код чисто проиллюстрировать метод преобразования. Без проверок и медленный.

Код:
program UnicodeConvert;
{$APPTYPE CONSOLE}
{$R *.res}

uses
  SysUtils,
  Classes;

function DecodeUnicodeString(const aEncodedString: AnsiString): WideString;
var
  UnicodePoints: TStrings;
  idxPoint: Integer;
  Point: AnsiString;
  Code:Word;
begin
  UnicodePoints := TStringList.Create;
  try
    UnicodePoints.Delimiter := '\';
    UnicodePoints.DelimitedText := aEncodedString;
    Result:='';
    for idxPoint := 0 to UnicodePoints.Count - 1 do
    begin
      Point := UnicodePoints[idxPoint];
      if (Length(Point)=5) and (Point[1]='u') then
      begin
        Point:='$'+Copy(Point, 2, Length(Point));
        Code:=StrToInt(Point);
        if Result='' then
          Result:=WideChar(Code)
        else
          Result:=Result+WideChar(Code);
      end;
    end;
  finally
    UnicodePoints.Free;
  end;
end;

begin
  try
    WriteLn(DecodeUnicodeString(ParamStr(1)));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Программе передать строку вида \u041f\u0435\u0440\u0444\u043e\u0440\u0430\u0446\u0438\u044f в командную строку.
 
Добрый день! Подскажите, как в Delphi 7 преобразовать полученный текст вида \u041f\u0435\u0440\u0444\u043e\u0440\u0430\u0446\u0438\u044f в читаемый?
Судя по всему это так закодированы символы Unicode. Ниже код чисто проиллюстрировать метод преобразования. Без проверок и медленный.

Код:
program UnicodeConvert;
{$APPTYPE CONSOLE}
{$R *.res}

uses
  SysUtils,
  Classes;

function DecodeUnicodeString(const aEncodedString: AnsiString): WideString;
var
  UnicodePoints: TStrings;
  idxPoint: Integer;
  Point: AnsiString;
  Code:Word;
begin
  UnicodePoints := TStringList.Create;
  try
    UnicodePoints.Delimiter := '\';
    UnicodePoints.DelimitedText := aEncodedString;
    Result:='';
    for idxPoint := 0 to UnicodePoints.Count - 1 do
    begin
      Point := UnicodePoints[idxPoint];
      if (Length(Point)=5) and (Point[1]='u') then
      begin
        Point:='$'+Copy(Point, 2, Length(Point));
        Code:=StrToInt(Point);
        if Result='' then
          Result:=WideChar(Code)
        else
          Result:=Result+WideChar(Code);
      end;
    end;
  finally
    UnicodePoints.Free;
  end;
end;

begin
  try
    WriteLn(DecodeUnicodeString(ParamStr(1)));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Программе передать строку вида \u041f\u0435\u0440\u0444\u043e\u0440\u0430\u0446\u0438\u044f в командную строку.
Спасибо! Принцип понятен, но нужно дорабатывать, т.к в моем случае могут попадаться и английские символа и цифры и пробелы, вперемешку с русскими буквами (только русские буквы идут в нечитаемом виде).
 
Награды
7
Тогда тебе надо разбивать входную строку на токены и преобразовывать в зависимости от того что в каждом оказалось - просто символ, который надо понимать как есть, или такой закодированный символ, представленный своим кодом.
 
По поводу шапки темы - есть достаточно древняя книжка - Рэй Конопка "Создание оригинальных компонент в Delphi", у меня она в бумаге где-то валялась, наверное где-нибудь есть и в сканах. Достойна упоминания и обязательна к прочтению для падаванов. Вправляет мозги касаемо DB-aware-компонентов, а также дает хорошую базу по функционированию компонентов.
 
Награды
7
Шапка темы изменена на новый вариант. Старый вариант сохранен в текстовом файлике, на всякий случай. По поводу FreePascal/Lasarus просьба, кто шарит, предоставить ссылки и инструкции чего и как. У меня нет времени чтобы разбираться с оным. Активных участников темы просьба выкачать литературу себе в eMule на хранение, она не так много места занимает.
 

MIDAS

Ословед
Такой вопрос. Сделал проектик в XE2 на паскале.
Работает всё чудесно.
Открываю проектный файл в старых версиях делфи (7ке) и начинается ругань при попытки компиляции. После того как в uses'ах у большинства слов удаляю приставку VCL всё становиться гладко.
В связи с этим вопрос: можно ли создавать в XE2 проекты сразу без этой VCL приставки?
Проект создаю методом: File - New - VCL Delphi Project (собственно отсюда и эта приставка, не дурак, но строки создания не VCL я не вижу)
 
Награды
7
В Delphi XE/2/3 сменились названия юнитов ближе к стилю .NET. То что XE2 понимает что SysUtils = System.SysUtils или Controls = VCL.Controls это потому что у неё в свойствах проекта прописаны все эти расширения пространств имён (unit scope names). Например: System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi. Ну т.е. если мы пишем uses ExtCtrls, то компилятор пытается вначале найти ExtCtrls.pas/dcu, потом System.Win.ExtCtrls, Data.Win.ExtCtrls...., наконец доходит до Vcl.ExtCtrls и на этом успокаивается. Но дизайнер генерит синтаксически верный код, ведь не будет-же он добавлять в uses несуществующие юниты.

Однако-ж девелопить под XE2 в которой просто масса несовместимых с Delphi 7 вещей, а потом пытаться собирать это все на Delphi 7, это такой надежный способ найти проблем на свою задницу, и хорошо если всё дело ограничиться только ошибками компиляции.

Чтобы генерить имена юнитов в стиле совместимом со старыми версиями Delphi... я такого не встречал. Правда и не искал.
 
Награды
7
Помогите пл3.
Нужно для каждого пункта реализовать свой проект.
Построение геометрических фигур
Посмотреть вложение 2645443
А что конкретно у тебя не получается? Всё ведь предельно примитивно. Пункты с 1 по 4 см ниже, 5 и 6 уж надеюсь сообразишь как.

Пример для Delphi XE/XE2.
Код:
unit Unit1;

interface

uses
  Winapi.Windows,
  Winapi.Messages,
  System.Types,
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    procedure PaintSection(aCanvas: TCanvas; aFrom, aTo: TPoint; aColor:TColor);
    procedure PaintRect(aCanvas:TCanvas; aTopLeftCorner, aBottomRightCorner:TPoint; aColor:TColor);
    procedure FillRect(aCanvas:TCanvas; aTopLeftCorner, aBottomRightCorner:TPoint; aColor, aFillColor:TColor);
    procedure PaintCircle(aCanvas:TCanvas; aCenter:TPoint; aRadius:Integer; aColor:TColor);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FillRect(aCanvas: TCanvas; aTopLeftCorner, aBottomRightCorner: TPoint; aColor, aFillColor: TColor);
begin
  PaintRect(aCanvas, aTopLeftCorner, aBottomRightCorner, aColor);
  aCanvas.Brush.Color:=aFillColor;
  aCanvas.FloodFill(aTopLeftCorner.X+((aBottomRightCorner.X-aTopLeftCorner.X) div 2), aTopLeftCorner.Y+((aBottomRightCorner.Y-aTopLeftCorner.Y) div 2), aColor, fsBorder);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  PaintSection(Canvas, Point(100, 100), Point(200, 200), clRed);
  PaintRect(Canvas, Point(300, 100), Point(400, 200), clBlue);
  FillRect(Canvas, Point(100, 300), Point(200, 400), clBlack, clYellow);
  PaintCircle(Canvas, Point(350, 350), 50, clTeal);
end;

procedure TForm1.PaintCircle(aCanvas: TCanvas; aCenter:TPoint; aRadius: Integer; aColor: TColor);
begin
  aCanvas.Pen.Color:=aColor;
  aCanvas.Brush.Style:=bsClear;
  aCanvas.Ellipse(Rect(aCenter.X-aRadius, aCenter.Y-aRadius, aCenter.X+aRadius, aCenter.Y+aRadius));
end;

procedure TForm1.PaintRect(aCanvas: TCanvas; aTopLeftCorner, aBottomRightCorner: TPoint; aColor: TColor);
begin
  PaintSection(aCanvas, aTopLeftCorner, Point(aBottomRightCorner.X, aTopLeftCorner.Y), aColor);
  PaintSection(aCanvas, Point(aBottomRightCorner.X, aTopLeftCorner.Y), aBottomRightCorner, aColor);
  PaintSection(aCanvas, aBottomRightCorner, Point(aTopLeftCorner.X, aBottomRightCorner.Y), aColor);
  PaintSection(aCanvas, Point(aTopLeftCorner.X, aBottomRightCorner.Y), aTopLeftCorner, aColor);
end;

procedure TForm1.PaintSection(aCanvas: TCanvas; aFrom, aTo: TPoint; aColor: TColor);
begin
  Canvas.Pen.Color:=aColor;
  Canvas.MoveTo(aFrom.X, aFrom.Y);
  Canvas.LineTo(aTo.X, aTo.Y);
end;

end.

Рисуется вот это.

attachment.php
 

levko

.I.КРЫШУЮ ФОРУМ.I.
СуперМодератор
Награды
8
не стал создавать новую тему, может кто здесь подскажет:
заинтересовался delphi...может кто подскажет хороший самоучитель или ещё чего-нить интересное.
 
не стал создавать новую тему, может кто здесь подскажет:
заинтересовался delphi...может кто подскажет хороший самоучитель или ещё чего-нить интересное.

Чтобы просто разобраться с интерфейсом Delphi 7, вполне покатит - http://rutracker.org/forum/viewtopic.php?t=2829387
Чтоб кодить на более респектабельном уровне, чем в видео уроках, конечно нужны книжки. В принципе если есть хорошая база Паскаля, то синтаксис за исключением объявления объектов можно пропустить. По паскалю порекомендовал бы Культина, по Делфи читал все подряд, уже не вспомню что именно - все поудалял.
 
Награды
7
не стал создавать новую тему, может кто здесь подскажет:
заинтересовался delphi...может кто подскажет хороший самоучитель или ещё чего-нить интересное.
Какой твой уровень в программировании вообще? Что знаешь, что делал, чего хочешь достичь (ответ: "Власть, женщины и деньги" слишком общий :) )?
 
Пытаюсь работать с фейсбуком с помощью TWebBrowser. Не получается заполнять поля и нажимать кнопки внутри приложений
В оперовском драгонфлае смотрю id элементов и использую с помощью WebBrowser.OleObject.Document.GetElementByID, элементы не находятся. Что можно сделать?
 
Награды
7
Пытаюсь работать с фейсбуком с помощью TWebBrowser. Не получается заполнять поля и нажимать кнопки внутри приложений
В оперовском драгонфлае смотрю id элементов и использую с помощью WebBrowser.OleObject.Document.GetElementByID, элементы не находятся. Что можно сделать?
Вообще не работал с TWebBrowser, но рискну предложить попробовать выбросить всю DOM куда-нибудь в виде файла или просто отобразить в отдельном окошке и поизучать что там реально содержится и в каком виде. Может просто ищешь не то что там лежит.

Document какого типа?
 
Блин, допер. Приложение это отдельная страничка, в чем-то типа фрейма открыта
 
Всем привет! Еще раз обращусь за помощью. :)
Подскажите, пожалуйста, в каком направлении копать! Задача следующая (реализовано, но много одинаковой писанины):
1. На форме есть memo1, например с 5-ю строками данных
2. В основном модуле динамически создается IdHttp, через который программа логинится на сайт. Куки сохраняются в отдельной переменной. После логина основной поток запускает 5 дополнительных потоков из 5-ти дополнительных модулей.
3. В дополнительных модулях (5 шт, как и кол-во строк в memo1) описан поток со своим, динамически созданном, IdHttp. Куки скопированы из глобальной переменной. Каждый модуль берет свою строку из memo1 (1-й модуль - первую, 2-й - 2-ю....) и POST запросом отправляет на сайт.
Так вот вопрос! Можно ли создавать потоки, исходя из кол-ва строк в memo1 и не писать на каждый поток свой модуль!?
Фактически получается, что каждый дополнительный поток делает одну и ту же работу, только данные берет из разных строк memo1.
 
Сверху