AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dienst/Service bleibt hängen bei StrToFloat()
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst/Service bleibt hängen bei StrToFloat()

Ein Thema von TUX_der_Pinguin · begonnen am 12. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Dienst/Service bleibt hängen bei StrToFloat()

  Alt 12. Nov 2007, 13:26
Ich habe einen kleinen Dienst geschrieben der eine Datei einliest und diese soll dann später mit einer Datenbank abgeglichen werden.
Jedoch gibt es ein Problem wenn ich die Funktion StrToFloat() verwende dann bleibt der Dienst hängen.

Delphi-Quellcode:
procedure TService1.Execute;
begin
  while NOT Terminated do begin
  //Log=> 'starte update'
  pLoad_File(db_File);
  //... Update routinen
  //Log=> 'beende update'
  end;

end;
Konvertiere ich in der folgenden Prozedur 2 Stings nach Real mit der Funktion 'StrToFloat' so ergibt die Logdatei das der Dienst hängen bleibt.
Zitat:
Log:
starte update
Konvertiere ich nicht mit 'StrToFloat' so sieht die log Datei korrekt aus
Zitat:
Log:
starte update
beende update
Was für ein Problem gibt es mit StroToFloat in einem Dienst/Service, ich raff es nicht!?


Delphi-Quellcode:
Procedure pLoad_File(Var db_File tDbFile);
Var
  FHandle : System.Text;
  Index : Integer;
  strRow : String;
  strID : String;
  strName : String;
  strType : String;
  strSupplier : String;
  strPrice : String;
  strPriceDiv : String;

Begin
  //init
  db_File := nil;
  Index := 0;

  //Länge setzen
  SetLength(db_File, 32768);

  //Einlesen der Artikelinformationen
  Assign(FHandle, FilePath);
  {$I-}
  Reset(FHandle);
  {$I+}
  If IoResult = 0 Then Begin
    While NOT EOF(FHandle) Do Begin
      Readln(FHandle,strRow);
      strID := Copy(strRow,64,6);
      strName := Copy(strRow,1,25);
      strType := Copy(strRow,27,15);
      strSupplier := Copy(strRow,43,3);
      strPrice := Copy(strRow,76,7);
      strPriceDiv := Copy(strRow,136,4);

      db_File[Index].ID := fDeleteChar(' ',fAsciiToAnsi(strID));
      db_File[Index].Name := fAsciiToAnsi(strName);
      db_File[Index].Typ := fAsciiToAnsi(strType);
      db_File[Index].Supplier := fAsciiToAnsi(strSupplier);
      db_File[Index].Price := 0;
      db_File[Index].PriceDiv := 1;

      //Preis
      If (Length(strPrice) > 0) AND fCheckChars(strPrice,'0123456789.') Then
        db_File[Index].Price := StrToFloat(strPrice)
      Else
        db_File[Index].Price := 0.0;

      //Preisdivisor
      If {(Length(strPriceDiv) > 0) AND} fCheckChars(strPriceDiv,'0123456789.') Then
        db_File[Index].PriceDiv := StrToFloat(strPriceDiv)
      Else
        db_File[Index].PriceDiv := 1;

      Inc(Index);
    End;{while}
    Close(FHandle);

  End;{if IoResult}

  //Array auf korrekte Länge abschneiden
  SetLength(db_File, Index);

End;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Dienst/Service bleibt hängen bei StrToFloat()

  Alt 12. Nov 2007, 13:30
TryStrToFloat ist StrToFloat immer vorzuziehen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Dienst/Service bleibt hängen bei StrToFloat()

  Alt 12. Nov 2007, 13:30
StrToFloat schmeißt vermutlich eine Exception die du nicht behandelst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Dienst/Service bleibt hängen bei StrToFloat()

  Alt 12. Nov 2007, 13:39
Zitat von Bernhard Geyer:
StrToFloat schmeißt vermutlich eine Exception die du nicht behandelst.
...weil der Hier im Forum suchenDecimalseparator nicht passt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Dienst/Service bleibt hängen bei StrToFloat()

  Alt 12. Nov 2007, 13:49
Zitat von Luckie:
Zitat von Bernhard Geyer:
StrToFloat schmeißt vermutlich eine Exception die du nicht behandelst.
...weil der Hier im Forum suchenDecimalseparator nicht passt.
Genau daran lag es, manchmal sieht man den Wald vor lauter Bäumen nicht
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz