小编Gia*_*lli的帖子

如何正确分配新的字符串值?

我试图了解如何以最干净/最安全的方式解决C中的这个微不足道的问题.这是我的例子:

#include <stdio.h>

int main(int argc, char *argv[])
{
    typedef struct
    {
        char name[20];
        char surname[20];
        int unsigned age;
    } person;

    //Here i can pass strings as values...how does it works?
    person p = {"John", "Doe",30};

    printf("Name: %s; Age: %d\n",p.name,p.age);
    // This works as expected...
    p.age = 25;
    //...but the same approach doesn't work with a string
    p.name = "Jane";

    printf("Name: %s; Age: %d\n",p.name,p.age);

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

编译器的错误是:

main.c:在函数'main'中:main.c:18:错误:从类型'char*'分配类型'char [20]'时出现不兼容的类型

我知道C(不是C++)没有字符串类型而是使用字符数组,所以另一种方法是更改​​示例结构以保存字符指针:

#include <stdio.h>

int main(int argc, char *argv[])
{
    typedef …
Run Code Online (Sandbox Code Playgroud)

c string struct strcpy

45
推荐指数
3
解决办法
16万
查看次数

使用WinMerge作为TortoiseHG合并工具

我正在尝试将WinMerge设置为TortoiseHG中的合并工具; 这是我的Mercurial.ini:

; User specific Mercurial config file.
; See the hgrc man page for details.

[ui]
username = Bargio <>
merge = winmergeu


[extdiff]
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /ub /wl

[merge-tools]
winmergeu.executable = C:\Program Files (x86)\WinMerge\WinMergeU.exe
winmergeu.priority= 1
winmergeu.fixeol=True
winmergeu.checkchanged=True
winmergeu.args= /e /ub /dl other /dr local $other $local $output
winmergeu.gui=False

[tortoisehg]
vdiff = winmerge
Run Code Online (Sandbox Code Playgroud)

Visual diff工作得很好但是当我尝试合并两个文件时,我收到以下错误:

tool winmergeu can't handle binary
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

merge mercurial tortoisehg winmerge

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

JavaScript扩展类型返回

我实际上在研究Crockford的Javascript:好的部分.我是JavaScript的新手,所以我很难理解这段代码是如何工作的:

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};
Run Code Online (Sandbox Code Playgroud)

这就是我的想法:

作为一个方法(一个对象内部的函数),this指向该Function对象,但为什么需要返回该对象,因为我从该方法内部访问它?如果我是对的,this是参考,而不是本地副本,所以:

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
};
Run Code Online (Sandbox Code Playgroud)

应该也可以.

另一方面,在JavaScript中,没有return语句的函数返回undefined并分配给它Function.prototype.method.

问题

返回有this什么意义?


工作示例#1

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};
var add = function(a, b) {
    return a+b;
};

Function.method('add', add);
var f = function() {};

print(f.add(1,2));

Number.method('integer', function () {
        return Math[this < …
Run Code Online (Sandbox Code Playgroud)

javascript extension-methods function-prototypes prototypal-inheritance

7
推荐指数
2
解决办法
1567
查看次数

依赖注入简单实现

在阅读完这个问题之后,我想知道是否有人可以帮助我了解如何使用这些PHP类正确实现依赖注入:

class DBClass
{
    private $mMysqli;
    function  __construct(mysqli $database)
    {
        $this->mMysqli=$database;
    }
    function __destruct()
    {
        $this->mMysqli->close();
    }

    public function listUsers()
    {
        $query='SELECT * FROM Utente;';
        $resultset=$this->mMysqli->query($query);
        while($row = $resultset->fetch_array(MYSQLI_ASSOC)) {
            echo $row['username'];
            echo $row['pwd'];
            echo "<br />\n";
        }

    }

    public function runQuery($query)
    {
        return $resultset=$this->mMysqli->query($query);
    }

    public function getConnection()
    {
        return $this->mMysqli;
    }
}
Run Code Online (Sandbox Code Playgroud)

会话类:

class Session
{
    private $_session;
    public $maxTime;
    private $database;

    public function __construct(DBClass $database)
    {
        $this->database=$database;
        $this->maxTime['access'] = time();
        $this->maxTime['gc'] = get_cfg_var('session.gc_maxlifetime');
        session_set_save_handler(array($this,'_open'),
                array($this,'_close'), …
Run Code Online (Sandbox Code Playgroud)

php oop design-patterns

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

Sonata Admin Bundle不使用多对多实体关系

我目前正在使用Symfony 2.1.0-DEVDoctrine 2.2.x使用Sonata Admin Bundle ,而且我遇到了多对多实体关联的问题:

class MyProduct extends Product {

    /**
     * @ORM\ManyToMany(targetEntity="Price")
     */
    private $prices;

    public function __construct() {
        $this->prices = new \Doctrine\Common\Collections\ArrayCollection()
    }

    public function getPrices() {
        return $this->prices;
    }

    public function setPrices($prices) {
        $this->prices = $prices;
    }
}

// Admin Class

class GenericAdmin extends Admin {

    ...

    public function configureFormFields(FormMapper $formMapper)
        {
            $formMapper
                ->with('General')
                ->add('prices', 'sonata_type_model')
                ->end()
            ;
        }
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

现在,如果尝试为Sonata的CRUD 创建/编辑表单面板中的多对多关联添加价格,则更新不起作用.

关于这个问题的任何提示?谢谢!

php doctrine-orm symfony-sonata symfony-2.1

3
推荐指数
1
解决办法
8395
查看次数

帮助正则表达式问题

我想知道是否有可能为以下数据模式制作一个RegEx:

'152:Ashkenazi A,Benlifer A,Korenblit J,Silberstein SD.'

string = '152: Ashkenazi A, Benlifer A, Korenblit J, Silberstein SD.'
Run Code Online (Sandbox Code Playgroud)

我正在使用这个正则表达式(使用Python的re模块)来提取这些名称:

re.findall(r'(\d+): (.+), (.+), (.+), (.+).', string, re.M | re.S)
Run Code Online (Sandbox Code Playgroud)

结果:

[('152', 'Ashkenazi A', 'Benlifer A', 'Korenblit J', 'Silberstein SD')]
Run Code Online (Sandbox Code Playgroud)

现在尝试使用不同数量(少于4个或超过4个)的名称数据模式不再起作用,因为RegEx期望只找到其中​​的4个:

(.+), (.+), (.+), (.+).
Run Code Online (Sandbox Code Playgroud)

我找不到一种方法来概括这种模式.

python regex string unicode

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

Python 正则表达式无法按预期工作

我精心设计了这个正则表达式

<entry>\\n<(\w+)>(.+?)</\w+>\\n</entry>
Run Code Online (Sandbox Code Playgroud)

解析以下RSS 提要

<?xml version="1.0" encoding="UTF-8"?>\n<feed version="0.3" xmlns="http://purl.org/atom/ns#">\n<title>Gmail - Inbox for g.bargelli@gmail.com</title>\n<tagline>New messages in your Gmail Inbox</tagline>\n<fullcount>2</fullcount>\n<link rel="alternate" href="http://mail.google.com/mail" type="text/html" />\n<modified>2011-03-15T11:07:48Z</modified>\n<entry>\n<title>con due mail...</title>\n<summary>Gianluca Bargelli http://about.me/proudlygeek/bio</summary>\n<link rel="alternate" href="http://mail.google.com/mail?account_id=g.bargelli@gmail.com&amp;message_id=12eb9332c2c1fa27&amp;view=conv&amp;extsrc=atom" type="text/html" />\n<modified>2011-03-15T11:07:42Z</modified>\n<issued>2011-03-15T11:07:42Z</issued>\n<id>tag:gmail.google.com,2004:1363345158434847271</id>\n<author>\n<name>me</name>\n<email>g.bargelli@gmail.com</email>\n</author>\n</entry>\n<entry>\n<title>test nuova mail</title>\n<summary>Gianluca Bargelli sono tornato!?& http://about.me/proudlygeek/bio</summary>\n<link rel="alternate" href="http://mail.google.com/mail?account_id=g.bargelli@gmail.com&amp;message_id=12eb93140d9f7627&amp;view=conv&amp;extsrc=atom" type="text/html" />\n<modified>2011-03-15T11:05:36Z</modified>\n<issued>2011-03-15T11:05:36Z</issued>\n<id>tag:gmail.google.com,2004:1363345026546890279</id>\n<author>\n<name>me</name>\n<email>g.bargelli@gmail.com</email>\n</author>\n</entry>\n</feed>\n'skinner.com/products/spl].
Run Code Online (Sandbox Code Playgroud)

问题是我没有通过使用Python 的 re 模块获得任何匹配项:

import re

regex = re.compile("""<entry>\\n<(\w+)>(.+?)</\w+>\\n</entry>""")
regex.findall(rss_string) # Returns an empty list
Run Code Online (Sandbox Code Playgroud)

使用在线正则表达式测试器(例如这个)可以按预期工作,所以我认为这不是正则表达式问题。

编辑

我很清楚使用正则表达式来解析上下文无关语法是不好的,但在我的情况下,正则表达式可能适用于那个 RSS 提要(顺便说一下,它是一个 Gmail 收件箱提要),我知道我可以使用外部库/xml 解析器来完成此任务:这只是练习,而不是习惯

问题应该是 …

python regex rss

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

在PyQt4中进行多次拖放

我找不到一个用Qt/PyQt拖动(和删除)多个元素的例子; 在我的情况下,我需要从这个QTableView拖动元素:

class DragTable(QTableView):
    def __init__(self, parent = None):
        super(DragTable, self).__init__(parent)
        self.setDragEnabled(True)

    def dragEnterEvent(self, event):
        if event.mimeData().hasFormat("application/pubmedrecord"):
            event.setDropAction(Qt.MoveAction)
            event.accept()
        else:
            event.ignore()

    def startDrag(self, event):
        print type(event)
        index = self.indexAt(event.pos())
        if not index.isValid():
            return

        selected = index.row()
        bstream = cPickle.dumps(selected)
        mimeData = QMimeData()
        mimeData.setData("application/pubmedrecord", bstream)
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        pixmap = QPixmap(":/drag.png")

        drag.setHotSpot(QPoint(pixmap.width()/3, pixmap.height()/3))
        drag.setPixmap(pixmap)
        result = drag.start(Qt.MoveAction)

    def mouseMoveEvent(self, event):
        self.startDrag(event)
Run Code Online (Sandbox Code Playgroud)

对于这个QLabel(我的dropzone):

class TagLabel(QLabel):
    def __init__(self, text, color, parent = None):
        super(TagLabel, self).__init__(parent)
        self.tagColor = color
        self.setText(text)
        self.setStyleSheet("QLabel { background-color: …
Run Code Online (Sandbox Code Playgroud)

python drag-and-drop pyqt pyqt4

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