Wenn ich wie folgt meine Methode schreibe bekomme falsche Werte zurück.
Mein Problem hierbei ist das die Daten eine Aufbereitung für ein struct sind in dem alle Werte ein char * erwarten.
PHP-Code:
QStringList hjcmsxml::ServerConnectionData( const QString &attr )
{
int i;
QString find(attr);
QStringList retval;
QDomElement Element = findDomElementByAttr(find);
if ( !Element.hasAttribute("name") )
return retval;
QDomNodeList nodes = Element.childNodes();
for ( i = 0; i < nodes.count() ; i++ )
{
retval << nodes.item(i).firstChild().nodeValue().toLocal8Bit().data();
}
return retval;
}
Jetzt habe ich zwei Stunden herum gebastelt bis ich zu dieser Lösung gekommen bin.
Das funktioniert wunderbar, ich frage mich aber trotzdem warum mir QByteArray oben so probleme macht?
Liegt es daran das es in einer Schleife liegt?
Und ist das ein größeres Problem was einen Bugs eintrag rechtfertigt?
PHP-Code:
QHash<QString, QByteArray> hjcmsxml::ServerConnectionData( QStringList fields, const QString &attr )
{
int i;
QString find(attr);
QHash<QString, QByteArray> retval;
QDomElement Element = findDomElementByAttr(find);
if ( !Element.hasAttribute("name") )
return retval;
if ( fields.size() < 1 )
return retval;
QDomNodeList nodes = Element.childNodes();
for ( i = 0; i < nodes.count() ; i++ )
{
foreach ( QString zeiger, fields )
{
QString cmd = nodes.item(i).nodeName().replace("server_","");
if (zeiger == cmd)
{
retval.insert( zeiger, nodes.item(i).firstChild().nodeValue().toLocal8Bit() );
}
}
}
return retval;
}
/* Lese Daten in QHash */
QHash<QString, QByteArray> data;
data = m_hjcmsxml->ServerConnectionData( options, act );
/* Starte Verbindung zum MySQL Server */
HJCMS_OPTIONS opts;
opts.host = data["host"].data();
opts.user = data["user"].data();
opts.password = data["password"].data();
opts.db = data["db"].data();
opts.port = data["port"].toUInt(&cv,10);
opts.unix_socket = data["socket"].data();
Lesezeichen