[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Antw: [DDL-ML] Bugfix fuer SpDrS60



> Stefan Preis schrieb:
> > 
> > Hey, und da habe ich schlimmstes vermutet und alle haben an den
> > falschen Stellen gesucht. Na immerhin ist s gefunden.
> > 
> > Danke !
> 
> Hi Stefan,
> 
> bitte checke das selbst nochmals durch. Auf jeden Fall ist dies ein
> erkannter Fehler. Aber leider steckt der Teufel im Detail. Ich habe
> vermutlich nicht alle Stellen gefunden, die geaendert werden muessen.
> Du kennst Deinen Code besser.
> 
> Torsten

es muss auch noch bFBport[496] in bFBport[496*4] geaendert 
werden.
Hier noch weitere Bugs:
In der Datei element.cpp Zeile 290 steht       write( iEDsocket, 
sSocketCommand_.data(), sSocketCommand_.length()+1 );
es muss heissen       write( iEDsocket, sSocketCommand_.data(), 
sSocketCommand_.length() );
und in der Datei MainWindow.cpp Zeile 594 steht write( 
iCmdSocket_, sSocketCommand_.data(), 
sSocketCommand_.length()+1 );
es muss heissen write( iCmdSocket_, sSocketCommand_.data(), 
sSocketCommand_.length() );

Fuer Stefan
Wenn eine gbs-Datei geladen ist und es fehlt die rts-Datei stuerzt
das Programm bei der Aenderung eines Rueckmeldekontaktes ab.
Das gleich passiert auch beim Laden (auch Autoload) einer Datei.
Der Fehler liegt in der 2. if-Abfrage folgender Routine

void GBSArea::slotFBportChanged( int iPortNr_ )
{
   // do nothing if there´s no layout loaded
   if( iNumOfElements == 0 )
      return;

   // first check if a changed port can reset a route
   // if there are any routes available at all
   QString s;
>>>>   if( sRouteFilename_ != "" && listOfReleasePorts->find( 
s.setNum(iPortNr_)) != -1 )
   {
      QString sRP, sLR;
      for( unsigned int i=0; i<listOfReleasePorts->count(); i++)
      {
         // now reset a route if:
         // -- the port number equals the release value in routing file
         // -- if port changed from 0 to 1
         // -- if this route is in SET state (= is active)
         // there may be more than one route to be released with 
same
         // FB port, so do NOT break the for() here !
         sRP = listOfReleasePorts->at( i );
         sLR = listOfLockedRoutes->at( i );

         if( iPortNr_ == sRP.toInt() && bFBport[iPortNr_] == 1 && 
sLR == "1" )
            slotStartRouting( i, RESET );
      }
   }
   else if( listOfReleasePorts->find( s.setNum(iPortNr_)) == -1 )
   // else inform all elements to switch the track-LEDs to correct 
colour
      emit FBportChanged( iPortNr_ );
}

Dieter