如果你有一个Delphi项目并想要为它添加一个类型库,你可以很容易.
但是,我们希望能够添加多个不同类型的库.Delphi XE IDE似乎强迫您拥有一个且只有一个名为的类型库
MyProject.tlb
Run Code Online (Sandbox Code Playgroud)
我希望能够在我们的主项目中有多个类型库并进行COM插件,但我不想要一个单片类型库,而是需要多种类型的库用于各种不同类型的插件.
这可行吗?难道只是IDE强制执行"只能有一个TLB"规则吗?
我疯了.
这就是我在做什么
双击按钮并添加以下代码:
procedure TForm31.Button1Click(Sender: TObject);
var
BF: TBlobField;
BS: TStream;
BM: TBitmap;
begin
ClientDataset1.Open;
ClientDataset1.First;
BF := ClientDataSet1.FieldByName('Graphic') as TBlobField;
BS := ClientDataSet1.CreateBlobStream(BF, bmRead);
BS.Position := 0;
BM := TBitmap.Create;
try
BM.LoadFromStream(BS);
finally
BM.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)运行.当我这样做时,我得到"位图图像无效".
咦?这些数据多年来一直是位图 - 出了什么问题?
我有一个Angular应用程序在我的机器上运行正常ng serve,但是当我在StackBlitz上运行时:
https://stackblitz.com/github/nickhodges/primedirective
我收到以下错误:
Error in /turbo_modules/@angular/compiler@7.0.4/bundles/compiler.umd.js (2617:21)
Can't resolve all parameters for ApplicationModule: (?).
Run Code Online (Sandbox Code Playgroud)
我已经更新了StackBlitz编辑器上的依赖项,它仍然不起作用,给出了稍微不同的错误.
Error in /turbo_modules/@angular/compiler@7.1.0/bundles/compiler.umd.js (2497:21)
Can't resolve all parameters for ApplicationModule: (?).
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么StackBlitz会出现这个错误?
我的自定义验证器中有以下代码:
import { ValidatorFn, AbstractControl } from '@angular/forms';
// Credit for this function:
// https://stackoverflow.com/a/17390131/2044
function isPrime(aNumber: number): boolean {
let start: number = 2;
const limit: number = Math.sqrt(aNumber);
while (start <= limit) {
if (aNumber % start++ < 1) {
return false;
}
}
return aNumber > 1;
}
export class NumberValidators {
static isPrimeNumber(): ValidatorFn {
return (control: AbstractControl): { [key: string]: boolean } | null => {
if (isPrime(control.value)) {
return null;
}
return {
isPrimeNumber: …Run Code Online (Sandbox Code Playgroud) 另一个剪贴板问题
当文本放到剪贴板上时,它经常以多种方式进行,通常有和没有格式化信息.我想知道的是 - 如何在不改变格式的情况下更改剪贴板上的文本.换句话说,我想改变文本方面,但保持格式完全相同.
这又是我的"TextScrubber"应用程序,我想从剪贴板上的文本中删除换行符,但我不想改变有关该文本的格式信息.
我希望通过迭代所有存在的格式,存储每个格式,然后在文本被擦除后重新插入它,我不必"强力"它.
这是我的问题:如何摆脱此代码提供的关于StrPCopy被弃用的警告?或者换一种方式 - 我如何摆脱我认为最终会消失的StrPCopy?我根本不想使用AnsiString单元.
program Project2;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
aAmount: array[0..12] of AnsiChar;
TempStr: string;
begin
TempStr := '123456789012';
StrPCopy(aAmount, TempStr);
WriteLn(aAmount);
ReadLn;
end.
Run Code Online (Sandbox Code Playgroud) 我试图在Delphi中使用基于c的DLL.在我介入所有其他功能之前,我以为我会尝试让其中一个功能正常工作,而且我受到了阻碍.这是C调用:
int FindCityCounty(char *zip, char cityname[28], char state[2], char countyname[25],
char countynum[3]);
Run Code Online (Sandbox Code Playgroud)
我对这个概念感到困惑char cityname[25].就是它:
array[0..24] of Char/AnsiChar;
Run Code Online (Sandbox Code Playgroud)
?
翻译这些结构的正确方法是什么?我所有的尝试都以胡言乱语结束了.
更新:
以下是被调用函数的示例:
#include <stdio.h>
#include <Windows.h>
#include <srv.h> /* for CALLBACK, HINSTANCE */
#include <direct.h> /* for _getdrive and _getdcwd */
#define cpy_blank(word,len) memset(word,' ',len)
#define cpy_word strncpy
typedef int (CALLBACK* FindCityCounty)(
char ZIP[5],char cityname[28],char state[2],char countyname[25],char countynum[3]);
void runCA(FindCityCounty pCA)
{
char ZIP[5], cityname[28], state[2], countyname[25], countynum[3];
int rc;
printf("CorrectAddress C API Demonstration\n\n");
printf("FindCityCounty() function call\n");
printf("==================================\n");
/* …Run Code Online (Sandbox Code Playgroud) 好的,我们有一个MS SQL Server数据库.数据库随着时间的推移而发展.我猜测过去的一些领域CHAR(<somenumber>)现在VARCHAR或是NVARCHAR.结果,一些数据最后有空格.
我们的应用程序提供了搜索Exact/EndsWith/BeginsWith/Contains选项的选项.生成的SQL如下所示:
Select * from Customers where CustName LIKE 'Concord Elementary School'
Select * from Customers where CustName LIKE '%Concord Elementary School'
Select * from Customers where CustName LIKE 'Concord Elementary School%'
Select * from Customers where CustName LIKE '%Concord Elementary School%'
Run Code Online (Sandbox Code Playgroud)
但是,客户注意到Ends With和Contains搜索无效.(他们最近使用我们的脚本更新了他们的数据库,该脚本启用了Unicode,将CHAR字段更改为NVARCHAR字段....)
据我所知,这些查询在"Unicode更新"之前有效,它更改了许多表的字段类型.
如果我对数据库运行上面的SQL,我会得到第三个和第四个查询的结果.但是,第一个和第二个查询什么都不返回.
所以,我去了现场,复制了数据,粘贴了它,并注意到该字段最后有空格 - 毫无疑问,该字段的结果曾经是一个CHAR.结果,上述查询无法提供所需/预期的结果.
我们有数千个这样的查询,因此修复不明确.
那么我的问题是:可以做些什么来使我们的应用程序按预期工作?
delphi ×5
angular ×2
bitmap ×1
clipboard ×1
com ×1
delphi-xe ×1
sql ×1
sql-server ×1
stackblitz ×1
string ×1
typelib ×1
validation ×1