Articles of delphi 7

从服务的执行线程执行命令行

乍一看,我没有运气 uses ShellApi; … ShellExecute(Handle, pchar('open'), pchar('emf2pdf.exe'), pchar(s), pchar(root), SW_SHOWNORMAL); 其中s是参数string,root是命令所在的目录。 我得到的错误是'缺less运算符或分号',也'太多实际参数'。 可能是我忽视的东西,有点压力。 甚至不知道从哪里拿到手柄。 对于执行可以build议的命令行的替代方法感到高兴! 基本上,服务寻找文件定期转换,所以我只是寻找一种方式来形成一个命令行,如在DOS中执行它,最好没有一个窗口popup短暂和closures,但我会采取什么我可以得到。 🙂 我正确的安装delphi可以代码提示参数为我,但不popup帮助页上按F1(索引中找不到)。 更新:从DelphiPages中使用这个CreateProcess函数: Function ExecuteAndWait(sExecutableFile : String; wWindowState : Word = SW_SHOWNORMAL) : Boolean; var siInfo : TStartUpInfo; piInfo : TProcessInformation; begin FillChar(siInfo, SizeOf(siInfo), #0); with siInfo do begin cb := SizeOf(siInfo); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := wWindowState; end; […]

OEMToCharW返回错误的字符

我从控制台应用程序(CMD)读取input缓冲区,如下所示: var pBuffer : array [0..2400] of Widechar; dBuffer : array [0..2400] of WideChar; CReadBuffer : Cardinal; BytesRead : Cardinal; begin // …. ReadFile(BuffHandle, pBuffer[0], CReadBuffer, BytesRead, nil); pBuffer[BytesRead] := #0; // Finish/End the WideString OemToCharW(pBuffer, dBuffer); MessageBoxW (0, dBuffer, '', 0); // …. end; 由于某种原因我得到奇怪的字符… CMD应该有oem字符集。 我以前使用过OEMtoCharA,它工作正常。 我做错了什么? 感谢帮助。 编辑:我使用Delphi7

我怎么可以释放一个Tbitnel,它有一个TbitBtn来调用Tpanel

我创build一个自定义的Tpanel,并在里面我把各种自定义组件… procedure Panel_Comp(Location: TWinControl; NumOfComp: Integer;Left,Top,Height,width:Integer); begin MyPanel := TsPanel.Create(Conf); MyPanel.Name := 'MyPanel' + IntToStr(NumOfComp); MyPanel.Parent := Location; MyPanel.Left := Left; MyPanel.Top := Top; MyPanel.Height := Height; MyPanel.Width := width; MyPanel.Caption := ''; end; 我这样称呼它 Panel_Comp(Conf.ScrollBox1,1,8,10,70,322); 在同样的逻辑,我把新的面板内的其他自定义组件包括一个tBitbtn有一个onclick事件.. procedure BitBtn_Comp(Location: TWinControl; NumOfComp: Integer; Left,Top,Height,Width,ImageNum: Integer); begin MyBitBtn := TBitBtn.Create(Conf); …… MyBitBtn.tag := NumOfComp; MyBitBtn.OnClick:= Conf.CloseCurrentPanel; end; […]

delphi7:启用项目的可能选项的自动列表我正在工作?

我最近开始使用Delphi 7,目前正在学习如何使用它。 我读过这个基本知识的时候阅读过 它说delphi帮助我们列出了我们正在处理的项目的可能选项。 这些可能的select会帮助我很多,因为我目前不知道有什么select,但是,当我写的时候,我没有可能的选项窗口,如下所示: 它是否被默认禁用,如果是,我可以在哪里启用它? 提到我正在使用Windows 10并且Windows 10确实警告说Delphi可能无法在我的Windows上正常工作也是很重要的,尽pipe我真诚地怀疑这是因为整个程序工作的很好。 预先感谢你,我为这样的菜鸟问题道歉:)

获取unicode符号的别名

是否有任何WinAPI获得Unicode字符的名称? 目前我只知道一个办法就是parsinghttp://unicode.org/Public/6.1.0/ucd/NamesList.txt文件。

Delphi的几个版本

由于与不同应用程序版本的客户有关的原因,我需要在我的笔记本电脑上维护Delphi(7,XE 7,XE 8,XE 10.1 Berlin和XE 10.2 Tokyo)的几个版本。 我主要关心的是PATHvariables以及编译和链接时的问题。 会有什么问题? 我需要改变什么? 任何build议是最受欢迎的。

我的Delphi 7应用程序暂停Application.Initialize并不返回到下一行

我在Delphi 7上创build了一个应用程序。我的应用程序从昨天开始运行良好。 我不知道昨天发生了什么,导致我的应用程序停止在源代码中的Application.Initialize行,并且当我跟踪程序时不会返回到下一行。 当生成的文件正确运行在另一台机器上时,我无法从widows niether运行创build的可执行文件。 这里是编译器在其上停止的代码: 程序Info_Kiosk; 使用SysUtils,Forms,…(一些其他单位); {$ R * .res} 开始 在Application.Initialize; Application.CreateForm(Tfrm_Main,frm_Main); 任何帮助,将不胜感激

在Windows和Delphi中实现应用程序的可移植性?

我们有这个应用程序不写入Windowsregistry或将其configuration文件(如INI文件)存储在用户的configuration文件; 相反,它将其configuration文件存储在程序的目录中。 维基百科有这样的说法 便携式应用程序(便携式应用程序)是一种计算机软件程序,旨在独立于操作系统运行。 这种types的应用程序存储在一个可移动存储设备,如CD,USB闪存驱动器,闪存卡 – 存储其程序文件,configuration信息和数据在存储介质本身。 所以我们的问题是,这是否使我们的应用程序成为一个真正的便携式应用程序 我应该指出,如果应用程序在写保护介质上,我们使用下面的函数,所以它不会尝试写入该介质。 function GetTempFile(): string; var Buffer: array[0..MAX_PATH] of Char; begin Windows.ZeroMemory(@Buffer, System.SizeOf(Buffer)); SysUtils.StrPCopy(Buffer, SysUtils.ExcludeTrailingBackslash(SysUtils.ExtractFilePath(System.ParamStr(0)))); Windows.GetTempFileName(Buffer, '~', 0, Buffer); Result := string(Buffer); end; function IsMediumWriteProtected(): Boolean; var ErrorMode: Word; hHandle: THandle; begin ErrorMode := Windows.SetErrorMode(SEM_FAILCRITICALERRORS); try hHandle := Windows.CreateFile(PChar(GetTempFile()), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, 0); try […]

在delphi中反向encryption

这个代码不是我写的,而是之前的程序员。 但是,我注意到他没有提供解密algorithm,使encryption无用。 我怎样才能解密这个? function Encrypt(jstr: String): String; var I: Integer; A: Real; begin if Length(jstr) = 0 Then begin Result := ''; Exit; end; A := 0; for I := 0 To Length(jstr) do A := A + (Ord(jstr[I]) * Pos(jstr[I],jstr)) / 33; Result := FormatFloat('0000000000.0000000000',A); if Pos(',',Result) > 0 then begin Insert('.',Result,Pos(',',Result)); Delete(Result,Pos(',',Result),1); end; […]

如何模仿窗体中间的或打开另一个程序并键入一个单词?

巴比伦词典和其他一些字典允许点击任何Windows程序中的任何单词,并自动识别光标下的单词,并立即打开词典窗口,同时在已安装的字典中search该单词。 另一方面,你可以打开你的字典,input你的字,然后按回车,结果将是相同的。 有一个delphi的forms,包含一个文本标签,例如单词“Automaton”。 我的问题是: 如何从我的delphi应用程序发送一个单词到词典窗口,就像你手动input并按Enter键? 最好的解决办法是通过Windows机制发送一些消息,但是如果它太复杂了,还有另一个解决scheme,所以第二个答案是:正如我所描述的,我们需要build模一个[Ctrl +鼠标左键]这个单词在我的Delphi应用程序的屏幕上显示在一个窗体上,确切地说,在这个标签的某个中心像素上。 你能不能给一个build议如何在Delphi中做一件事? **编辑:与AppActivate的问题是这样的:巴比伦字典有一个守护进程的一部分,在托盘座位。 在任务pipe理器中,应该input文本的真实窗口也被命名为“巴比伦”。 所以AppActivate('Babylon')试图把应用程序的非可视部分带到前面。 你有什么build议如何确定窗口句柄或应用程序的真正的视觉部分? 在任务pipe理器中,我重复将视觉和非视觉部分命名为“巴比伦”。