AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Serviceanwendung treibt mich in den Wahnsinn

Ein Thema von Jelly · begonnen am 5. Dez 2005 · letzter Beitrag vom 6. Dez 2005
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#21

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 6. Dez 2005, 10:38
So, ich hab nun mal den Dienst interaktiv laufen, und hab die Prozedur gefunden, in der es manchmal zu Problemen führt:
Delphi-Quellcode:
function TFileArchiever.GetValueParams (AName, AType : string) : string ;
var
 qry : TQuery ;
 C : integer ;
begin
      try
          qry := TQuery.Create (Self) ;
          qry.DatabaseName := DatabaseName ;

          AType := uppercase(AType) ;
          if AType = 'Sthen AType := 'StringValue' ;
          if AType = 'Ithen AType := 'IntValue' ;
          if AType = 'Fthen AType := 'FloatValue' ;
          if AType = 'Dthen AType := 'DateTimeValue' ;
          with qry do begin
              close ;
              sql.text := format ('select %s from Params where VarName = ''%s''',
                        [AType,AName]) ;

              { Diese Message wird noch gezeigt }
              showmessage (sql.text) ;

              { Hier kommt es wohl zu einem Fehler }
              open ;

              Showmessage (FieldByName (AType).AsString) ;
              { >>> Dieses Feld ist leer, warum? Die Query stimmt }
              {     Die Showmessage erscheint nicht mehr }

              Showmessage ('Params table opened') ;
              if not (EOF and BOF) then begin
                 Result := FieldByName (AType).AsString ;
                 if (copy(Result,length(Result),1) <> '\') and (Result <> '')
                 then Result := Result + '\' ;
              end else begin
                 Result := '' ;
              end ;
              close ;
              Showmessage ('The Value: ' + Result) ;
              if not (DirectoryExists (Result))
              then ForceDirectories (Result) ;
          end ;
      finally
          qry.free ;
      end ;
end ;
Es ist wohl in Zeile 24 beim Öffnen der Tabelle, wo es zu einem Fehler kommt. Ich würd mir ja mal gern die Fehlermeldung anzeigen lassen, nur wie? Ein Umbiegen von application.OnException gibts nicht bei Serviceanwendungen.

Die Query ist so vollkommen in Ordnung, die Rechte sind im SQL Server auch für das SYSTEM Konto korrekt vergeben.

In der Query rufe ich lediglich einen Wert aus der Tabelle "Params" ab, die aber rein gar nichst mit einem Recordlock zu tun haben kann, da ich 1. überhaupt von nirgends sonstwo auf diese Tabelle zugreife, und 2. wenn doch, dann wirklich höchstens lesend, da es nur eine Nachschlagtabelle ist.

Ist das jetzt Zufall, dass der Dienst gerade in dieser Zeile seine Arbeit verweigert, und der Fehler sonstwo im Detail liegt, der spinn ich nun vollends und hab da wirklich im geposteten Code was falsch gemacht?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 6. Dez 2005, 10:51
Hallo Jelly,

welchen Wert hat denn AName? Vielleicht hast Du dort ein Feld, das mit einem reservierten Namen benannt ist (z.B. "USER")? Dann solltest Du das Format so anwenden (mit doppelten Hochkomma):
Delphi-Quellcode:
sql.text := format ('select "%s" from Params where VarName = ''%s''',
                        [AType,AName]) ;
Des weiteren könntest Du versuchen, den Fehler weiter einzugrenzen:
Delphi-Quellcode:
try
  open;
except
  on e : exception do
  begin
    ShowMessage(e.Message);
  end;
end;
Ausserdem kannst Du AFAIK doch einen generellen Exception-Handler einsetzen:
Delphi-Quellcode:
uses Forms;
type
...
procedure MyGlobalExptionHandler(Sender : TObject; E: Exception);
...
Forms.Application.OnException := MyGlobalExceptionHandler;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#23

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 6. Dez 2005, 11:07
Zitat von Union:
welchen Wert hat denn AName?
Der SQL Befehl ist schon in Ordnung...
select StringValue from Params where Varname = 'Path EMails Root'
Zitat von Union:
Delphi-Quellcode:
try
  open;
except
  on e : exception do
  begin
    ShowMessage(e.Message);
  end;
end;
Damit kommen wir dem Problem vielleicht schon näher und bestätigt meinen Verdacht... Als Message krieg ich
Code:
BDE error $000F
Keinen Schimmer, was das jetzt heisst. Werd mal bischen googeln. Auf jeden Fall scheint mir wirklich die BDE diese Kopfzerbrechen zu bereiten. Jetzt weiss ich auch was BDE heisst:
Blöde Datenbank Exceptions


EDIT: Sorry, hatte falschen Error Code gepostet.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#24

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 6. Dez 2005, 11:29
Hab jetzt mal hier was über den BDE Fehler gefunden:
Zitat von Borland:
BDE Error 000F usually indicates that the buffer manager ran out of memory, though there may be other causes for this error. Increasing the BDE SHAREDMEMSIZE parameter in BDE Admin may solve the problem, or just delay the error from occuring.
Aber das ist ja wirklich ne nützliche Hilfestellung von Borland

Jetzt hab ich ein echtes Problem, denn ich bin mit meinem Delphi 4 gezwungen über die BDE auf den SQL Server zuzugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#25

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 6. Dez 2005, 11:35
Zitat von Jelly:
Jetzt hab ich ein echtes Problem, denn ich bin mit meinem Delphi 4 gezwungen über die BDE auf den SQL Server zuzugreifen.
Gibt es wirklich keine andere Möglichkeit? Und wird das in der Produktion auch passieren? Du sagtest doch es tritt nur auf wenn Du gleichzeitig ausserhalb des Service auf der selben Maschine über BDE zugreifst. Ist das eine Vorgabe des Kunden dass eine so uralte Version eingesetzt werden muss?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#26

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 6. Dez 2005, 11:42
Ich hab den Service mal testweise auf dem Server angeschmissen, und da lief er auch nicht. Ich bin deshalb auf die BDE beschränkt, weil die Umstellung auf ADO oder noch besser direkt auf native MSSQL Komponenten (bsp. SDAC von Crlab) einfach zu aufwendig ist.

Ich hab mir jetzt mal die Params Tabelle genauer unter die Lupe genommen, und da hat ist die Spalte Stringvalue als varchar(300) definiert. Damit scheint die BDE Probleme zu haben. Ich hab die Länge jetzt auf 255 heruntergesetzt, und siehe da, es klappt. Zumindest was die ersten Tests angehen. Ist die Länge grösser als 255, so wird von der BDE ein Blob übertragen, das z.B. in einem Memofeld eingetragen werden kann.

Es ist aber trotzdem noch seltsam, dass ich genau die gleiche Routine im Programm an diversen anderen Stellen anwende, und noch nie Probleme hatte. Also die BDE hat nicht zu unrecht den Ruf, dass sie doch ganz schön in die Jahre gekommen ist.

Nun ja, ich befürchte früher oder später wird wohl doch auf ein anderes System umgesattelt werden müssen.

Danke für alle Bemühungen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 01:50 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