小编Maz*_*a89的帖子

如果我为不存在的参数调用ParamByName会发生什么?

我对Delphi很新,并收到了以下代码(省略了一些不相关的部分),我正试图了解它的作用:

object SelectCosts: TIBQuery
    SQL.Strings = (
      'SELECT * FROM costs '
      'WHERE code = :code')
    ParamData = <
      item
        DataType = ftUnknown
        Name = 'code'
        ParamType = ptUnknown
      end>
  end
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,使用该查询,但添加了未在查询中定义的参数.

DM_HRV.SelectCosts.ParamByName('part').Value := 1;
Run Code Online (Sandbox Code Playgroud)

此参数是否会'part'改变所做的选择?换句话说:SQL查询是否自动更改为以下内容?

'SELECT * FROM costs '
  'WHERE code = :code'
  'AND part = :part'
Run Code Online (Sandbox Code Playgroud)

delphi parameterized-query

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

如何强制程序始终运行while循环的第一次迭代?

我正在编写一个程序来实现我在文献中找到的算法.在这个算法中,我需要一个while循环;

while(solution has changed){
    updateSolution();
}
Run Code Online (Sandbox Code Playgroud)

为了检查while条件是否满足,我创建了一个名为copy的Object(与解决方案类型相同).在更新解决方案之前,此副本是解决方案的副本.因此,如果解决方案发生了变化,则会满足while循环中的条件.

但是,我在执行while循环时找到两个对象条件的最佳解决方案时遇到了一些问题,因为我从一个空解决方案(结果集)开始,并且副本在那时也是空的(都使用构造函数调用班级).这意味着当执行while循环时,两个对象都是相等的,因此while循环中的所有语句都不会被执行.

我现在的解决方案是创建一个在while循环之前设置为true的虚拟变量,并在其中设置为false.我怀疑这是最好的解决方案,所以我想知道是否有这个问题的标准解决方案(某种方式迫使程序始终运行while循环的第一次迭代)?

代码现在是:

SolutionSet solution = new SolutionSet();
SolutionSet copy = new SolutionSet();
boolean dummy = true;

while((!solution.equals(copy)) || dummy){
   dummy = false;
   copy = solution.copy();
   solution.update() // here some tests are done and one object may be added to solution
}
Run Code Online (Sandbox Code Playgroud)

java iteration while-loop

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

如何优化ArrayList <Integer>中值的更新

我想在数据集中存储某个变量的所有值以及每个值的频率.为此,我使用a ArrayList<String>来存储值和a ArrayList<Integer>来存储频率(因为我不能使用int).不同值的数量是未知的,这就是我使用ArrayList和不使用的原因Array.

示例(简化)数据集:

a,b,c,d,b,d,a,c,b
Run Code Online (Sandbox Code Playgroud)

ArrayList<String>与价值观是这样的:{a,b,c,d}ArrayList<Integer>同频率的样子:{2,3,2,2}.

为了填充这些,ArrayLists我使用以下代码迭代数据集中的每个记录.

public void addObservation(String obs){
    if(values.size() == 0){// first value
        values.add(obs);
        frequencies.add(new Integer(1));
        return;//added
    }else{
        for(int i = 0; i<values.size();i++){
            if(values.get(i).equals(obs)){
                frequencies.set(i, new Integer((int)frequencies.get(i)+1));
                return;//added
            }
        }
        // only gets here if value of obs is not found
        values.add(obs);
        frequencies.add(new Integer(1));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于我将使用它的数据集可能非常大,我想优化我的代码,并且使用frequencies.set(i, new Integer((int)frequencies.get(i)+1));似乎不是非常有效.

这让我想到了我的问题; 如何优化更新IntegerArrayList

java

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

如何从运行jar文件中打印消息?

最近我一直在使用Eclipse构建两个工具.我正在那里打印一些消息(System.out.print).但是,我现在为每个工具构建了一个.jar文件,我想在另一台机器上运行(没有安装eclipse).运行此.jar不会向我提供我正在打印的消息.

从正在运行的.jar文件中将消息打印到屏幕的最佳方法是什么?例如,如何打印:

System.out.print("Results succesfully saved!");
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了一下,但找不到任何结果.

java

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

如何在Web服务上发布HTTP帖子?

我需要对Web服务进行HTTP发布..

如果我将它放入这样的Web浏览器中

http://server/ilwebservice.asmx/PlaceGPSCords?userid=99&longitude=-25.258&latitude=25.2548
Run Code Online (Sandbox Code Playgroud)

然后将值存储到服务器上的数据库中..

在Eclipse中,使用Java编程实现android ..这个url看起来像

http://server/ilwebservice.asmx/PlaceGPSCords?userid="+uid+"&longitude="+lng1+"&latitude="+lat1+"
Run Code Online (Sandbox Code Playgroud)

uid,lng1并且lat1被指定为字符串..

我该怎么办呢?

谢谢

java eclipse post android http

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