标签: delphi-2007

使用Delphi 2007将Base64字符串保存为二进制文件

我有一个Base64二进制字符串,它是由第三方供应商发送给我们的XML文档的一部分,我希望能够将其保存回原始文件格式(jpg).

使用这个问题的接受答案"使用php将base64字符串保存为二进制文件"我可以毫不费力地将字符串保存到jpg,所以我知道字符串格式正确并且是JPG文件.

但是我如何在Delphi 2007中做到这一点?

在网上看到我发现了一个关于如何将Base64转换为TByteDynArray的教程,并保存它,但它不能正常工作.我也玩过Indy的IdDecoderMIME,但没有成功.

有没有人知道如何做到这一点,或者我应该在哪里看?

delphi base64 web-services delphi-2007

1
推荐指数
1
解决办法
4339
查看次数

有谁知道Citrix和Delphi 2007应用程序之间的问题?(也许还有其他开发语言?)

情况很简单.我创建了一个复杂的Delphi应用程序,它使用了几种不同的技术.主要应用程序是WIN32模块,但是一些部件是作为.NET程序集开发的.它还与Web服务通信或从特定网站检索数据.它将大部分用户数据保存在MS Access数据库中,并在注册表中包含一些其他设置.在内存中,所有数据都在XML文档中转换,有时在系统崩溃时将其作为备份保存到磁盘.(从而允许用户恢复他的数据.)XML文件中还有一些数据用于只读目的.该应用程序还执行其他应用程序,并希望完成.总而言之,这是一个非常复杂的应用程序.

尽管少数用户确实在Citrix服务器上使用此应用程序,但我们不支持使用此应用程序的Citrix.(基本上,它允许这些用户更具移动性.)但即使我们不断告诉他们我们不支持Citrix,这些客户也会试图帮助他们解决他们往往会遇到的一些偶然问题.

主要问题似乎是偶尔出现在Citrix系统上的随机异常.从不在同一个位置,通常它看起来与一些记忆问题有关.我们已经发布了很多错误报告,并且存在太多不同的错误.所以我知道解决所有那些复杂的问题.

所以我想更加通用,只想了解Delphi(2007)在Citrix系统上运行时可能遇到的问题.特别是当此应用程序不是以任何方式设计为Citrix感知时.我们不想正式支持Citrix,但如果我们可以帮助这些客户会很好.并不是说他们会付给我们更多,但仍然......

那么有谁知道Delphi应用程序可以在Citrix系统上遇到的一些常见问题?有没有人知道Citrix的常见问题?是否存在一些针对Citrix问题的Silver Bullet或Golden Hammer解决方案?

顺便说一句.我对Citrix的了解仅限于这个维基百科条目和这个网站 ......还有一点我用Google搜索了 ...

delphi citrix delphi-2007

1
推荐指数
1
解决办法
3025
查看次数

为什么"菜单"单元过早定稿?

我在FastMM和FullDebugMode打开的情况下测试了我的应用程序,因为我遇到了一些关机问题.

在解决了我自己的问题之后,FastMM开始抱怨在TPopupList中对释放的对象调用虚方法.我试图在使用中尽早移动菜单单元,以便最后确定,但它没有帮助.这是真正的问题,来自FastMM的vcl或虚假警报中的错误?

以下是FastMM的完整报告:

FastMM has detected an attempt to call a virtual method on a freed object. An access violation will now be raised in order to abort the current operation.

Freed object class: TPopupList

Virtual method: Offset +16

Virtual method address: 4714E4

The allocation number was: 220

The object was allocated by thread 0x1CC0, and the stack trace (return addresses) at the time was:
403216 [sys\system.pas][System][System.@GetMem][2654]
404A4F [sys\system.pas][System][System.TObject.NewInstance][8807]
404E16 [sys\system.pas][System][System.@ClassCreate][9472]
404A84 [sys\system.pas][System][System.TObject.Create][8822]
7F2602 [Menus.pas][Menus][Menus.Menus][4223]
40570F [sys\system.pas][System][System.InitUnits][11397]
405777 [sys\system.pas][System][System.@StartExe][11462]
40844F …
Run Code Online (Sandbox Code Playgroud)

delphi debugging delphi-2007 fastmm

1
推荐指数
1
解决办法
753
查看次数

Delphi MainFormOnTaskBar模态窗口错误

您好

我正在使用Delphi 2007并将MainFormOnTaskBar属性设置为true.

我遇到的问题是这个.

如果从主窗体中打开子窗口,然后从刚刚打开的子窗口显示一个消息对话框.当您关闭消息对话框然后关闭子窗口时,主窗体将发送到您在屏幕上的任何其他应用程序的后面.

这种情况发生在Windows Vista和Windows 7下.有谁知道为什么会发生这种情况,我该如何解决?

delphi modal-dialog delphi-2007 windows-vista

1
推荐指数
1
解决办法
1864
查看次数

Delphi:使用类助手更改按钮颜色

我需要更改delphi表单控件的视觉样式,以便从.Net环境中显示它们.为此,我需要将delphi控件的颜色更改为蓝色($ 00FCF5EE).我已广泛使用"TButton"控件,它没有"颜色"属性.因此,我尝试了一种不同的方法,通过引入父表单并从该父表继承所有其他表单形成.在父表单中,我有一个类助手来更改按钮的颜色.这是代码:(我使用的是Delphi 2007)

TButtonHelper=class helper for TButton
private
  procedure doChangeColor;
public
  procedure DrawChangeColor;
end;

TParentForm = class(TForm)
public
  procedure AfterConstruction; override;
end;
Run Code Online (Sandbox Code Playgroud)

在实施部分,我有

    procedure TButtonHelper.doChangeColor;
    var
      SaveIndex: Integer;
      FCanvas:TCanvas;
      rect:TRect;
    begin
      if csDestroying in ComponentState then exit;
      FCanvas:=TCanvas.Create;

        SaveIndex := SaveDC(Self.Handle);
        FCanvas.Lock;
        try
          FCanvas.Handle := Handle;
          FCanvas.Font := Font;
          FCanvas.Brush := self.Brush;
          FCanvas.Brush.Color:=$00FCF5EE;
          FCanvas.FillRect(BoundsRect);//Omitting the code to draw the text
        finally
          FCanvas.Handle := 0;
          FCanvas.Unlock;
          RestoreDC(handle, SaveIndex);
          FCanvas.Free;
        end;
    end;


    procedure TButtonHelper.DrawChangeColor;
    begin
        doChangeColor;
        self.Repaint;
    end;

procedure TParentForm.AfterConstruction;
    var
     i …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

1
推荐指数
1
解决办法
6919
查看次数

以编程方式更改TChart大小

我正在以编程方式创建一个tChart(Delphi2007,TeeChar 7免费版).我想设置图表尺寸并可能更改宽高比,但我没有得到有意义的结果更改宽度和高度属性.我也尝试过改变轴TickLength而没有运气.我从dfm文件中复制了TChart的相关属​​性,而不是忘记任何有意义的东西.仅当我编辑X和Y max和min值时,图形的方面才会改变,但这还不够.

这是我的原始图表和"重新格式化"图表,因为您可以看到两者的图表尺寸均为400 x 250.是否有用于调整图表大小的特定属性?我希望轴相应调整大小,是否可能?谢谢您的帮助

第一张图表 调整了相同的图表

以下是与TChart相关的代码:

procedure CreateChart(parentform: TForm);
//actually formatChart is a CreateChart anf fChart a member of my class
begin
  fchart:= TChart.Create(parentform);
  fchart.Parent:= parentform;
  fchart.AxisVisible := true;
  fchart.AutoSize := false;
  fChart.color := clWhite;
  fchart.BottomAxis.Automatic := true;
  fchart.BottomAxis.AutomaticMaximum := true;
  fchart.BottomAxis.AutomaticMinimum := true;
  fchart.LeftAxis.Automatic := true;
  fchart.LeftAxis.AutomaticMaximum := true;
  fchart.LeftAxis.AutomaticMinimum := true;
  fchart.view3D  := false;
end

 procedure formatChart(width, height, xmin, xmax, ymin, ymax: double);
 //actually formatChart is a method anf fChart a member of my class
 begin
   with …
Run Code Online (Sandbox Code Playgroud)

delphi teechart delphi-2007

1
推荐指数
1
解决办法
3969
查看次数

我的“编译”对话框已消失。有可以控制的设置吗?

编译时不再弹出“正在编译”(请参见屏幕快照)对话框。消息正确显示在“ 消息”窗口中。我可以单击错误,并将其写入错误代码中。我正在使用Delphi 2007。

我可能会无意中设置了某个设置/选项吗?或者也许是一个ini文件设置来控制这个?我也尝试重新引导整个计算机,但问题仍然存在。

其他一切工作正常。但这使它成为一个非常困难的工作环境,因为编译器完成后我没有视觉状态。

注意:我知道“成功编译时自动关闭”复选框。我的问题/问题不在于编译后对话框关闭。它根本根本不会打开。

编译器消息框

更新 @ZdravkoDanev表示编译器选项上有一个“显示编译器进度”开关。我已包含屏幕截图,但没有看到。

Delphi编译器选项

delphi delphi-2007

1
推荐指数
1
解决办法
1519
查看次数

如何在Delphi 2007中的标签中显示大写希腊字母delta?

我想在标签中显示一个公式,如下所示:

| delta X | =(G - S + F)

其中上面的单词delta实际上应该是大写希腊字母delta(看起来像一个三角形).我尝试使用GnuGetText for Delphi来翻译它,但它出现了一个问号:

|?X | =(G - S + F)

由于Gorm(使用Delphi XE编写)正确显示字符串,我想一个unicode感知Delphi版本将是一个解决方案.不幸的是,我不能这样做因为这会破坏现有的代码.

另一个解决方案是如何避免这个问题的公式图片.

还有其他选择吗?

delphi delphi-2007

1
推荐指数
1
解决办法
932
查看次数

使用uJson for Delphi解码json

我有一个看起来像这样的JSON文件,我正在尝试对其进行解码,但是没有运气:

[
  {
    "FirstName": "Kim",
    "Surname": "Jensen"
  },
  {
    "FirstName": "Amery",
    "Surname": "Mcmillan"
  },
  {
    "FirstName": "Denton",
    "Surname": "Burnett"
  }
  ...
]
Run Code Online (Sandbox Code Playgroud)

将uJson与Delphi 2007结合使用,我知道当数组具有如下名称时如何提取数据:

{
  "Names": [
    {
      "FirstName": "Kim",
      "Surname": "Jensen"
    },
    {
      "FirstName": "Amery",
      "Surname": "Mcmillan"
    },
    {
      "FirstName": "Denton",
      "Surname": "Burnett"
    }
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)
var
  json: TJSONObject;
  Text: String;
  i: Integer;
begin
  json := TJSONObject.create(jsontext);

  for i:=0 to json.getJSONArray('Names').Length -1 do
  begin
    Text := json.getJSONArray('Names').getJSONObject(i).optString('FirstName');
    ...
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,这个数组没有名字,我已经尝试了几乎所有我能想到的东西,但是这个简单的事情却花了我几个小时才能弄清楚。

delphi json delphi-2007 ujson

1
推荐指数
1
解决办法
164
查看次数

如何在Delphi中从HTTPS URL获取图像?

我正在尝试从此答案中TImage说明的URL 加载开始。

uses
  GIFImg;

procedure TForm1.Button1Click(Sender: TObject);
var
  Stream : TMemoryStream;
  GIF : TGIFImage;
begin
  Stream := TMemoryStream.Create;
  GIF := TGIFImage.Create;
  try
    IdHTTP1.Get('http://www.google.com/intl/en_ALL/images/logo.gif', Stream);
    //IdHTTP1.Get('https://www.google.com/intl/en_ALL/images/logo.gif', Stream);

    Stream.Position := 0;
    GIF.LoadFromStream(Stream);

    Image1.Picture.Assign(GIF);

  finally
    FreeAndNil(GIF);
    FreeAndNil(Stream);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

如果URL以简单的HTTP开头,则一切正常。

当我尝试从HTTPS URL加载时,出现EIdIOHandlerPropInvalid异常消息:

IOHandler值无效。

我尝试添加一个TIdSSLIOHandlerSocketOpenSSL并将其设置IOHandlerTIdHTTP组件。

在此处输入图片说明 在此处输入图片说明

完成此操作后EIdOSSLCouldNotLoadSSLLibrary,出现以下消息异常:

无法加载SSL库。

属性是否存在问题或其他问题?

delphi indy delphi-2007

1
推荐指数
2
解决办法
107
查看次数