小编Sam*_*m M的帖子

getMeasuredHeight和getHeight有什么区别

我试着打电话View.getMeasuredHeightView.getHeightonGlobalLayout.两者都给我相同的结果.

我想知道,在什么情况下他们的价值会有所不同?有没有例子可以证明这一点?

我试着在谷歌搜索.第一个结果似乎与此问题无关:Android:如何获得自定义View的高度和宽度?

android view width

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

JSON空数组

我试图解析从REST Web服务返回的一些JSON.get()调用的返回值是TStringStream.我正在使用dbxjson来处理数据.为了便于在此处演示,我创建了一个测试项目,可以在不调用Web服务的情况下重现错误(使用文本文件代替Web服务输出).这是代码:

var SL : TStringStream;
  LJsonObj : TJSONObject;
begin
  SL := TStringStream.Create;
  try
    SL.LoadFromFile('output.txt');
    LJsonObj := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(SL.DataString), 0) as TJSONObject;
  finally
    SL.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

有时,此JSON数据中的phone_numbers数组为空.在来自Web服务调用的流对象中,它看起来像这样:

{
    "Contact Information Service": {
        "response": {
            "phone_numbers": [

]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会导致ParseJSONValue返回nil值.

但是,如果我在我的测试txt文件中将空phone_numbers数组更改为:

{
    "Contact Information Service": {
        "response": {
            "phone_numbers": []
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常(即返回一个TJSONObject).不同之处在于空数组中的空格.由于某种原因,空数组中具有空格的第一个JSON响应导致ParseJSONValue返回nil.它工作正常,方括号之间没有空格.

我的JSON解析出了什么问题?在调用ParseJSONValue之前是否需要进行某种预解析?

delphi delphi-xe2

9
推荐指数
2
解决办法
3423
查看次数

向TIdHttp请求添加自定义标头,标头值包含逗号

我正在使用Delphi XE2和Indy 10.5.8.0.我有一个TIdHttp实例,我需要为请求添加一个自定义标头.标头值中包含逗号,因此它会自动解析为多个标头.我不希望它那样做.我需要我的自定义标头的标头值仍然是一个字符串,而不是基于逗号分隔符拆分.

我试过设置IdHttp1.Request.CustomHeaders.Delimiter := ';'没有成功.有没有办法确保标题不会分裂?

procedure SendRequest;
const HeaderStr = 'URL-Encoded-API-Key VQ0_RV,ntmcOg/G3oA==,2012-06-13 16:25:19';
begin
  IdHttp1.Request.CustomHeaders.AddValue('Authorization', HeaderStr);
  IdHttp1.Get(URL);
end;
Run Code Online (Sandbox Code Playgroud)

delphi indy10 delphi-xe2

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

Int64类型的Web服务中的空白值

我使用具有数字元素的Web服务.Delphi wsdl导入器将其设置为Int64.

Web服务允许此元素为空.但是,因为它被定义为Int64,当我在Delphi中使用Web服务而不为其设置值时,它默认为0,因为它是Int64.但是我需要它是空白的并且Web服务不接受值0(0被定义为无效并且由Web服务返回错误).

如果类型是Int64,我如何传递空值?

delphi null soap web-services delphi-xe2

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

合并多个数据框 - match.names(clabs,names(xi))中的错误:名称与先前的名称不匹配

在尝试合并多个数据帧时,我得到了一些非常奇怪的东西.救命!

我需要通过列'RID'和'VISCODE'合并一堆数据帧.以下是它的外观示例:

d1 = data.frame(ID = sample(9, 1:100), RID = c(2, 5, 7, 9, 12),
            VISCODE = rep('bl', 5),
            value1 = rep(16, 5))

d2 = data.frame(ID = sample(9, 1:100), RID = c(2, 2, 2, 5, 5, 5, 7, 7, 7),
            VISCODE = rep(c('bl', 'm06', 'm12'), 3),
            value2 = rep(100, 9))

d3 = data.frame(ID = sample(9, 1:100), RID = c(2, 2, 2, 5, 5, 5, 9,9,9),
            VISCODE = rep(c('bl', 'm06', 'm12'), 3),
            value3 = rep("a", 9),
            values3.5 = rep("c", 9))

d4 …
Run Code Online (Sandbox Code Playgroud)

merge r dataframe

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

未登录时通过扬声器输出声音

我有一个用Delphi XE编写的程序,它使用TMediaPlayer播放WAV文件.该程序在Windows 7计算机上的系统托盘中运行.程序等待事件触发播放wav文件.如果我在计算机上登录,那么wav就可以了.但是,如果我锁定计算机终端(或通过远程桌面登录),则wav文件无法通过计算机扬声器播放.我知道事件正在被触发,因为事件处理程序中的所有其他代码都运行正常; 只是你听不到wav文件.我已将音量硬编码到最高级别,因此我知道这不是音量问题.如果当前没有人登录到计算机,Windows 7是否有阻止声音通过扬声器的东西?如果存在这种限制,是否有办法绕过它?

delphi windows-7

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

使用Web服务时是什么导致此错误?

我有一个使用以Cold Fusion编写的Web服务的Delphi XE应用程序(我无法控制该服务的输出格式)。我在Delphi中使用WSDL Importer创建了用于调用Web服务的单元。我在Delphi中遇到一个异常,说“元素“数据”不包含单个文本节点”。

当我得到异常时,从Web服务返回的XML的相关部分是这样的:

<data soapenc:arrayType="xsd:anyType[][1]" xsi:type="soapenc:Array">
  <data soapenc:arrayType="xsd:anyType[2]" xsi:type="soapenc:Array">
    <data xsi:type="soapenc:string">6490</data>
    <data xsi:type="soapenc:string">Other Expense</data>
  </data>
</data>
Run Code Online (Sandbox Code Playgroud)

如果来自Web服务的XML包含多个<data>子级,则不会发生异常。

<data soapenc:arrayType="xsd:anyType[][3]" xsi:type="soapenc:Array">
  <data soapenc:arrayType="xsd:anyType[2]" xsi:type="soapenc:Array">
    <data xsi:type="soapenc:string">2600</data>
    <data xsi:type="soapenc:string">Deferred Revenue</data>
  </data>
  <data soapenc:arrayType="xsd:anyType[2]" xsi:type="soapenc:Array">
    <data xsi:type="soapenc:string">4120</data>
    <data xsi:type="soapenc:string">Non-Credit Income</data>
  </data>
  <data soapenc:arrayType="xsd:anyType[2]" xsi:type="soapenc:Array">
    <data xsi:type="soapenc:string">6490</data>
    <data xsi:type="soapenc:string">Other Expense</data>
  </data>
</data>
Run Code Online (Sandbox Code Playgroud)

是什么导致此异常,并且有解决该异常的方法而又不能更改Web服务本身?

delphi web-services delphi-xe

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

显示提示

我已经在表单上添加了组件提示.当组件获得焦点时,我想设置标签组件的标题以显示提示.

我添加了一个TApplicationEvents对象并将OnShowHint事件设置为

procedure TImportFrm.ApplicationEvents1ShowHint(var HintStr: string;
  var CanShow: Boolean; var HintInfo: THintInfo);
begin
  HelpLbl.Caption := HintStr;
end;
Run Code Online (Sandbox Code Playgroud)

但是,似乎ShowHint事件仅在鼠标移动时触发.有没有办法在组件获得焦点时触发提示代码,而不必为表单上的每个组件实现OnEnter事件?

delphi vcl delphi-xe2

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

如何在不使用Tableau Desktop的情况下发布到Tableau Public

我目前正在使用Tableau Python API生成.tde.应该每天使用新数据生成此.tde,但截至目前,我无法通过Tableau Desktop找到发布到Tableau Public的方法.

有没有办法在不通过桌面客户端的情况下发布到Tableau Public?也许通过欺骗POST,通过使用tabcmd.exe或其他东西?

这个帖子在同一行上提出了一些问题,但遇到了一个特定于Tableau Server的答案,这是一个我无法访问的单独产品.

api post publish tableau-api

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

创建一个函数来自动执行 SQL 连接

我正在使用一个包含 60 多个表的数据库,我正在尝试编写一个 python 函数,该函数接受您希望使用的表,并输出您应该用来连接这些表的连接语句。我已将所有 60 个表放入一个有序字典中,如下所示,其中列出了每个表中的表名称、主键和外键。

OrderedDict({
    'table1_name':{'pk':'id', 'fk':{'table2_name':'table2_id', 'table3_name':'table3_id'}}
    'table2_name':{'pk':'id'},
    'table3_name':{'pk':'id', 'fk':{'table1_name':'table1_id'}
}) #Etc...
Run Code Online (Sandbox Code Playgroud)

我开始编写一个函数,但收效甚微,因为外键相互交织,使得从一个表遍历到另一个表并找到最短路径变得非常复杂。我尝试编写一个函数来执行此操作,如下所示:

def join_creator(main_table, *tables):    
    #Test if we can join other tables directly to main
     try:
        main_table
        main_pk = table_dict[main_table]["pk"]
     except:
        print('No primary key, this cannot be your main table')
        return

     result = f'FROM "public"."{main_table}" \n'
     for table in other_tables:
        try: 
            fk = table_dict[table]['fk'][main_table]
            result += f'LEFT JOIN "public"."{table}" ON {main_table}.{main_pk}={table}.{fk}\n'
        except KeyError:
            pass
     print(result)
Run Code Online (Sandbox Code Playgroud)

总而言之,该函数的输入类似于 join_creator('table_1', 'table_2', 'table_3')

输出将是一个像这样的字符串:

FROM table_1
LEFT JOIN table_2 …
Run Code Online (Sandbox Code Playgroud)

python sql algorithm data-structures

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