标签: parameter-passing

如何在 FreePascal 中正确传递动态数组

在我编写的这个 FreePascal 代码中,我发现在一个长度为“n”的动态数组中,它总是在元素“n”中包含一个随机值。

我理解为什么会这样,但是,我想知道我编写代码的方式是否存在缺陷。我把它粘贴在下面。我欢迎任何更正。

program LinearSearch;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, SysUtils
  { you can add units after this };

{$R *.res}

type
  ArrayOfByte = array of Byte;

Function findMaximum(studentMarks : ArrayOfByte; numberOfStudents : integer)
: integer;
var
  maximumMark : Integer;
  studentWithMaximumMark : Integer;
  index : integer;
begin
  setLength(studentMarks, numberOfStudents);
  maximumMark := studentMarks[0];

  for index:=0 to numberOfStudents do
  begin
    write(IntToStr(studentMarks[index]));
    if index = numberOfStudents then writeln('.')
    else write(',');
  end;

  for index:= 0 to (numberOfStudents - 1) …
Run Code Online (Sandbox Code Playgroud)

freepascal parameter-passing dynamic-arrays

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

当我试图插入表格时,得到一个奇怪的"语法错误"

我正在尝试将新行添加到我拥有的表中.该数据库是MSSQL.我有一些其他表一直工作正常,但当我做了一个新的我不能添加新的行.相反,我收到此错误消息:

"System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理

附加信息:关键字"用户"附近的语法不正确."

我不知道为什么...

VS2013中的代码看起来像这样

        public void Update_Admin(User User)
    {
        using (SqlCommand cmd = new SqlCommand("INSERT INTO Admin (User, Password) VALUES (@User, @Password);", con))
        {
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add("@User", SqlDbType.VarChar).Value = User.UserName;
            cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = User.Password;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我知道进来的价值观是真实的.谁知道错了?

表格看起来像这样

CREATE TABLE [dbo].[Admin] (
[Id]       INT          IDENTITY (1, 1) NOT NULL,
[User]     VARCHAR (50) NULL,
[Password] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
Run Code Online (Sandbox Code Playgroud)

);

sql sql-server parameter-passing

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

如何传递从url获取两个id并使用共享首选项将其传递给其他类

http://example/map.php?cust_id = 1&store_id = 2,在onclick链接期间从url获取cust_id和store_id并将其保存在另一个共享首选项中.我从其他类调用这两个id并希望将这两个id发送到其他url但是id的值没有上传到该url,如果仅传递cust_id意味着一切正常,而传递两个值则无效.这个概念的新手请帮助我.

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        CharSequence urlstring1="cust_id";
        CharSequence urlstring2="store_id";
        String[] details = url.split("[?]");
        String[] strdetails =details[1].split("&");
        String strcust_id = strdetails[1];
        String strstore_id= strdetails[1];

        if (url.contains(urlstring1)& url.contains(urlstring2)){
            SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = settings.edit();
            editor.putString("Customer", strcust_id).putString("Store", strstore_id);
            editor.commit();

            AboutusFragment fragment2 = new AboutusFragment();
            FragmentManager fragmentManager = getFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container, fragment2);
            fragmentTransaction.commit();
            return false;
        }else{
            return super.shouldOverrideUrlLoading(view, url);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在下一堂课

if(CheckNetwork.isInternetAvailable(getContext().getApplicationContext())) //returns true if internet available …
Run Code Online (Sandbox Code Playgroud)

string url android parameter-passing sharedpreferences

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

在 Haxe 中,如何在函数中传递 Enum 值,然后在函数内将它们转换为字符串?

我似乎无法使其正常工作,但如果在 Haxe 中无法实现,我会感到惊讶。

我正在尝试将游戏中定义的几个 Enum 值传递给一个函数,以便它可以将它们连接为String类型并将其传递给其他函数。

例子:

// In a general Entity class:
public override function kill():Void {
    messages.dispatchCombined(entityType, ListMessages.KILLED);

    super.kill();
}
Run Code Online (Sandbox Code Playgroud)

在我的 Messages.hx 类中:

package common;

import msignal.Signal.Signal1;

/**
 * A Message / Event class using Signals bound to String names.
 * @author Pierre Chamberlain
 */
class Messages{
    var _messages:MessagesDef;

    public function new() {
        _messages = new MessagesDef();
    }

    public function add(pType:String, pCallback:FuncDef) {
        if (_messages[pType] == null) {
            _messages[pType] = new Signal1<Dynamic>();
        }

        var signals = …
Run Code Online (Sandbox Code Playgroud)

string enums haxe parameter-passing

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

使用"NA"将R数组传递给C函数

我使用C库在R中工作.我需要向C函数传递一个数字在1到10之间的数组,但也可能是"NA".然后在C中,取决于我需要设置输出的值.这是一个简化的代码

heredyn.load("ranking.so")

fun <- function(ranking) {
  nrak <- length(ranking)
  out <- .C("ranking", as.integer(nrak), as.character(ranking), rr = as.integer(vector("integer",nrak)))
  out$rr
}

ranking <- sample(c(NA,seq(1,10)),10,replace=TRUE)
rr <- fun(ranking)
Run Code Online (Sandbox Code Playgroud)

C函数可以简单地如

#include <R.h>

void ranking(int *nrak, char *ranking, int *rr) {
  int i ;

  for (i=0;i<*nrak;i++) {
    if (ranking[i] == 'NA')
      rr[i] = 1 ;
    else
      rr[i] = (int) strtol(&ranking[i],(char **)NULL,10) ;
  }
}
Run Code Online (Sandbox Code Playgroud)

由于"NA"值,我将排名设置为字符,但也许还有另一种方法,使用整数并且在调用函数之前不将"NA"替换为0?

(像这样的代码,总是给我一个零数组...)

c r parameter-passing dynamic-library

0
推荐指数
2
解决办法
668
查看次数

可以传递两个参数之一的 powershell 脚本,但不能同时传递两个参数

我制作了一个简单的 powershell 脚本,它有两个参数。如果我尝试不带参数执行脚本,它工作正常。如果我尝试使用两个参数之一执行它,它工作正常。当我尝试使用两个参数运行脚本时,出现以下错误:

Parameter set cannot be resolved using the specified named parameters.
Run Code Online (Sandbox Code Playgroud)

它还有一个关于 AmbiguousParameterSet 的花絮。

我的脚本的参数部分如下所示:

[CmdletBinding(DefaultParameterSetName="None")]
param(
    [Parameter(Mandatory=$False, ParameterSetName="BuildExclude")]
    [ValidateSet('proj1','proj2', 'proj3', 'proj4')]
    [string[]]$BuildExclude,
    [Parameter(Mandatory=$False, ParameterSetName="SkipDbRestore")]
    [switch]$SkipDbRestore
)
Run Code Online (Sandbox Code Playgroud)

这些用法有效:

.\RunScript.ps1 -BuildExclude proj1, proj2
.\RunScript.ps1 -SkipDbRestore
.\RunScript.ps1 
Run Code Online (Sandbox Code Playgroud)

由于上述原因,此用法不起作用:

.RunScript.ps1 -BuildExclude proj1, proj2 -SkipDbRestore
Run Code Online (Sandbox Code Playgroud)

即使我颠倒了参数的顺序,它也不起作用。我尝试添加参数位置,使 BuildExclude=0 和 SkipDbRestore=1 ,希望如果我至少保持它们的顺序,我就能让它们一起工作。但这给了我同样的歧义错误。我错过了什么?理想情况下,我希望能够以任何顺序调用带有参数的脚本并让它做正确的事情。

parameters powershell scripting parameter-passing optional-parameters

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

c#在循环中更改sql的参数

我想在循环中重用参数化查询。

(这个查询是一个简单的例子,我认为我不能在 sql 中进行循环并只返回所需的行)

代替

private String sql = "SELECT v FROM t WHERE VAL_1 = @param_1";
for (int n=1;n<10;n++)
{
    MySqlCommand m = new MySqlCommand(sql);
    m.Parameters.AddWithValue("@param_1", n);
    res = Convert.ToInt32(m.ExecuteScalar());
    ( ... )
}
Run Code Online (Sandbox Code Playgroud)

我想将查询的设置移到循环之外;就像是

private String sql = "SELECT v FROM t WHERE VAL_1 = @param_1";
MySqlCommand m = new MySqlCommand(sql);
m.Parameters.Add("@param_1");  // does not exist
for (int n=1;n<10;n++)
{
    m.Parameters.Set("@param_1", n); // does not exist
    res = Convert.ToInt32(m.ExecuteScalar());
    ( ... )
}
Run Code Online (Sandbox Code Playgroud)

因此,服务器不必为循环中的每个过滤器解析相同的 sql。

那可能吗?

c# mysql parameter-passing

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

模板默认参数作为指向自身的指针

我正在尝试开发一个通用树模板类,基本上,表示相同节点的层次结构.它需要2个模板参数,第一个是数据,第二个是引用另一个节点的类型(prev,next,parent,child).默认情况下,我希望它是一个传统的节点指针,但为了我的目的,我还需要它是不同的东西(例如内存池的整数索引).下面的代码无法编译.本能地,我觉得可以做到,但我不知道怎么做.任何人都可以提供这方面的见解吗?

template <typename U, typename TPTR = TreeNode_t<U>*>
class TreeNode_t
{
public:
    TPTR    prev;
    TPTR    next;
    TPTR    parent;
    TPTR    children;
    U m;
public:
    TreeNode_t() : prev(0), next(0), parent(0){}
    ~TreeNode_t(){}
    U &data() { return m; }
    const U &data() const { return m; }
    ...
Run Code Online (Sandbox Code Playgroud)

具体来说,我通常会像这样实例化它:

TreeNode_t<double> tree1;
Run Code Online (Sandbox Code Playgroud)

但是,有时我会这样想:

TreeNode_t<double, unsigned> tree2;
Run Code Online (Sandbox Code Playgroud)

c++ templates default parameter-passing

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

回调究竟是如何得到它们的参数的?

我无法理解 JavaScript 中的回调如何获取它们的参数。或者换句话说:如何实现一个高阶函数,使其回调接受例如标准errdata参数。

就像在这篇关于异步 JavaScript 的文章中以通常方式使用的回调示例中一样(我知道这是通常的,因为我在 Node.js 中看到的正是这种模式moongose(即用于在 db 中创建数据):

function getData(options, callback) { 
    $.get("example.php", options, function(response) { 
        callback(null, JSON.parse(response)); 
    }, function() { 
        callback(new Error("AJAX request failed!")); 
    }); 
} 

// usage 
getData({name: "John"}, function(err, data) { 
    if(err) { 
        console.log("Error! " + err.toString()) 
    } else { 
        console.log(data); 
    } 
});
Run Code Online (Sandbox Code Playgroud)

回调究竟是如何得到的参数errdata基于怎样getData()的功能上面声明?

javascript asynchronous callback parameter-passing

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

具有方法参数参考值与值的线程安全

我对线程安全的方法参数的理解是:通过值传递到方法中的参数作为方法调用的参数中给出的数据的副本传递,因此它们对于该方法调用是唯一的,不能由任何其他任务更改。相反,参考参数可能会因在其他任务中运行的代码而易于更改。

话虽如此,我仍然不太清楚为什么下面的代码(不制作循环计数器的本地副本)在每个线程中返回相同的数字。

static void ExampleFunc(int i) =>
            Console.WriteLine("task " + i);
Run Code Online (Sandbox Code Playgroud)
for (int i = 0; i < 10; i++)
{
    int taskN = i; //local copy instead of i
    Task.Run(() => Func(i));
}
Run Code Online (Sandbox Code Playgroud)

实际输出是:任务10十次,
我通过传递taskN而不是i来获得正确的输出(任务1到10)。

由于传递了类型值参数,因此我期望得到相同的结果。

c# multithreading parameter-passing thread-safety

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