Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-11-2011, 11:25   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Mönchengladbach
Beiträge: 26
HTTPServiceWrapper konvertiert fälschlicherweise einen String zu Number

Ich habe in FlashBuilder 4 einen XMLservice erstellt, der von HTTPServiceWrapper erbt. Dieser soll eine XML-Datei holen und die darin enthaltenen Daten in ein ValueObject packen. Die Daten im XML sehen so aus:

PHP-Code:
<medium id="1050662256262775">
    <
label><![CDATA[Acetone]]></label>
.
.
.
</
medium
Die id ist im daraus generierten ValueObject ein String, was auch bei dem Datensatz oben funktioniert, obwohl die id nur aus Ziffern besteht.
Im Falle eines anderen Datensatzes mit der id '1050662328e65175' macht der von FlashBuilder generierte Code nun jedoch eine Zahl daraus, so dass ich bei der Abfrage der id des ValueObjects Medium 'Infinity' zurückerhalte.
Da dieses Fehlverhalten tief im von FB generierten Code zu liegen scheint, bin ich nun überfragt, wie ich dem beikommen könnte.
Die XML-Datei selber zu parsen scheint mir derzeit das einzige Mittel zu sein, das mir zur Verfügung steht, aber es muss doch auch eleganter gehen. Kann man den Wrapper nicht irgendwie dazu zwingen den Datentyp String anzuwenden?

Viele Grüße

Klaus
HarpoMarx ist offline   Mit Zitat antworten
Alt 24-11-2011, 12:00   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Was ist an selbst parsen nicht elegant? Ausserdem wird der Memory Footprint arg reduziert.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-11-2011, 12:05   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Mönchengladbach
Beiträge: 26
Ok. Ertappt. Ich suche nicht nach dem elegantesten Weg, sondern nach schnellsten, weil die Serviceklasse schon weit gediehen ist, für mich alles erledigt und jetzt im Nachhinein aufgefallen ist, dass bei 3 von 200 Datensätzen dieser Fehler auftritt.
Auch andere XMLs hole ich darüber. Alles hübsch bis auf die kleinen Ausreißer.
Für mich wäre das jetzt ein (großer) Mehraufwand, das alles zu trennen und nur für die Medien-XML einen Extraparsing zu coden.
HarpoMarx ist offline   Mit Zitat antworten
Alt 24-11-2011, 12:07   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Hm, hat das VO eine ID Eigenschaft die als String deklariert ist?
Omega Psi ist offline   Mit Zitat antworten
Alt 24-11-2011, 12:09   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Mönchengladbach
Beiträge: 26
Japp:
PHP-Code:
private var _internal_id String;
.
.
.
    public function 
set id(value:String) : void 
    
{        
        
MonsterDebugger.trace(thisvalueMonsterDebugger.LEVEL_DEBUG"""value"); //<-- Schmeißt 'Infinity'
        
var recalcValid:Boolean false;
        if (
value == null || _internal_id == null)
        {
            
recalcValid true;
        }    
        
        
        var 
oldValue:String _internal_id;               
        if (
oldValue !== value)
        {
            
_internal_id value;
            
this.dispatchEvent(mx.events.PropertyChangeEvent.createUpdateEvent(this"id"oldValue_internal_id));
        }             
        
        if (
recalcValid && model_internal::_cacheInitialized_isValid)
        {
            
model_internal::isValid_der model_internal::calculateIsValid();
        }  
    } 
HarpoMarx ist offline   Mit Zitat antworten
Alt 24-11-2011, 12:33   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Da wäre natürlich der Wert in der XML interessant.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-11-2011, 13:23   #7 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
ich vermute durch das e in '1050662328e65175' versucht er das als Hex-Wert zu interpretieren 0x1050662328e65175 == 1175551803939770741, nur sprengt das den Rahmen für int.

eine einfache (aber imo nicht ganz saubere) Lösung:
PHP-Code:
<medium id="#1050662256262775"> ... </medium
durch die Raute am Anfang sollte HTTPServiceWrapper das eindeutig als String erkennen, und auch nicht auf die Idee kommen nur einen Teil davon zu parsen (wie es parseInt ja macht, wenn nach der Zahl noch "Text" steht)

PHP-Code:
public function set id(value:String) : void 
{        
    
MonsterDebugger.trace(thisvalueMonsterDebugger.LEVEL_DEBUG"""value"); //<-- Schmeißt 'Infinity'
    
var recalcValid:Boolean false;
    if (
value == null || _internal_id == null)
    {
        
recalcValid true;
    }    
    
    if(
value.charAt(0) == "#"value value.substr(1);        //<--
    
    
var oldValue:String _internal_id;
    if (
oldValue !== value)
    {
        
_internal_id value;
        
this.dispatchEvent(mx.events.PropertyChangeEvent.createUpdateEvent(this"id"oldValue_internal_id));
    }             
    
    if (
recalcValid && model_internal::_cacheInitialized_isValid)
    {
        
model_internal::isValid_der model_internal::calculateIsValid();
    }  

__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 24-11-2011, 13:33   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ja, eine Umbenennung der IDs dürfte am schnellsten gehen, sonst musst du an den entsprechenden Stellen halt Hand anlegen.
Omega Psi ist offline   Mit Zitat antworten
Alt 24-11-2011, 14:03   #9 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Mönchengladbach
Beiträge: 26
Die XMLs werden leider fremdgeliefert und auch für anderes verwendet. Deswegen kann der Hebel leider nicht an dieser Stelle angesetzt werden.
HarpoMarx ist offline   Mit Zitat antworten
Alt 24-11-2011, 14:07   #10 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Ort: Mönchengladbach
Beiträge: 26
Eine ID mit dem Wert '1050662ece5b1175' funktioniert auch. Es werden nur die IDs, die nur genau ein 'e' enthalten, falsch konvertiert. Ich nehme an, dass das als Exponentialwert eingeordnet wird.
HarpoMarx ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
httpservice type

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
String == number? Hans meisa ActionScript 1 6 16-10-2006 09:54
string als Number mc_hammer Flash MX 2004 2 30-03-2005 16:23
Number to String... Vampire's Party ActionScript 1 7 01-10-2004 22:46
String to Number bastix Flash 4 und Flash 5 3 20-03-2002 22:51
String to Number bastix ActionScript 1 1 20-03-2002 20:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele