Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Brauche dringend Hile funktion läuft net richtig (https://www.delphipraxis.net/56211-brauche-dringend-hile-funktion-laeuft-net-richtig.html)

kingflo 2. Nov 2005 13:23


Brauche dringend Hile funktion läuft net richtig
 
Hallo...
Ich brauche dringend etwas hilfe bei meiner Server -> Client lizenz vergabe.

Ich habe eine funktion die Prüfen soll, ob sich eine Lizenz in der _BlockList befindet und nur freie Lizenzen die zur Anwendung passen zurückgeben soll.

Vorweg:
_AllLicenseList enthält alle gefunden Lizenzen im Format:

lizenz1.ldf
lizenz2.ldf
usw..

_BlockedList enhält die geblockten Lizenzen für eine Anwendung z.B
Testapp\lizenz1.ldf

dann ist die lizenz datei lizenz1.ldf im ordner Testapp in gebrauch

so und meine funktion soll jetzt die nächste freie Lizenz für die Anwendung (welche sich dann im Unterordner mit Namen der Anwendung befindet z.B Testapp) zurückgeben, dabei muss die _AllLicenseList durchlaufen werden, geprüft werden ob sich die Lizenz in der _BlockList befindet und es muss geprüft werden ob die eventuell freie Lizenz sich auch im Unterordner (z.B testapp) befindet.

der name der Anwendung wird als ApplicationName übergeben dieses ist dann auch der unterordner auf dem Server der den Namen der Anwendung haben muss.

ich hoffe ich habe es einigermaßen verständlich geschildert...


meine Funktion (die leider nicht richtig funzt sieht so aus:


Delphi-Quellcode:
function TLicenseService.GetFreeLicenseFileName(const ApplicationName:string): String;
var
i,y:integer;
Lizenz:string;
begin
 //der name der Lizenzdatei name muss zurückgegeben werden z.B Testapp\Lizenz1.ldf
 // wenn keine Lizenz mehr frei ist muss noFreeLicenses zurückgegeben werden
i:=0;
 while i <= ServerForm._AllLicenses.Count-1 do
 begin
  y:=0;
  Lizenz:=ApplicationName+'\'+ServerForm._AllLicenses.Strings[i];
  while y <= ServerForm._BlockedLicenses.Count -1 do
  begin
    if Lizenz=ApplicationName+'\'+ServerForm._BlockedLicenses.Strings[y] then
    begin
      Lizenz:='noFreeLicenses';
      break;
    end;
    if (y >=ServerForm._BlockedLicenses.Count -1) and(fileexists(ApplicationName+'\'+ServerForm._BlockedLicenses.Strings[y])) then
    begin
      result:=lizenz;
      exit;
    end;

   y:=y+1;
  end;

  i:=i+1;
 end;

 result:=Lizenz;
end;

franktron 2. Nov 2005 13:31

Re: Brauche dringend Hile funktion läuft net richtig
 
Kann das sein das das garnicht gehen kann

Delphi-Quellcode:
while i <= ServerForm._AllLicenses.Count-1 do
begin
  y:=0;
  Lizenz:=ApplicationName+'\'+ServerForm._AllLicenses.Strings[i];
  while y <= ServerForm._BlockedLicenses.Count -1 do
  begin
    if Lizenz=ApplicationName+'\'+ServerForm._BlockedLicenses.Strings[y] then
    begin
Wenn in "Lizenz" der ganze Pfad der Lizenz drin ist und in ServerForm._BlockedLicenses.Strings[y] nicht wird er nie eine Geblock Lizenz finden oder

jim_raynor 2. Nov 2005 13:35

Re: Brauche dringend Hile funktion läuft net richtig
 
Benutz den Debugger und schau dir die verschiedenen Werte an, oder gib sie per ShowMessage aus.

Ich vermute, dass in irgendeiner Variablen nicht das steht, was du erwartest.

P.S. Hilfreich ist es auch, wenn du sagst, was nicht funktioniert.

kingflo 2. Nov 2005 13:36

Re: Brauche dringend Hile funktion läuft net richtig
 
in Lizenz ist nicht der Ganze Pfad sondern nur der Applikations Name + lizenzdatei und wie gesagt der Applikations Name ist auf dem Server das Verzeichnis:

lizenz ist also z.B

testapp\lizenz1.ldf



wen ich an dieser Stelle

Delphi-Quellcode:
    if (y >=ServerForm._BlockedLicenses.Count -1) and(fileexists(ApplicationName+'\'+ServerForm._BlockedLicenses.Strings[y])) then
    begin
das and (fileexists(ApplicationName+'\'+ServerForm._Blocke dLicenses.Strings[y]) weglasse funktioniert alles soweit, dass ich zwar nur freie Lizenzen als result zurückbekomme, diese aber nicht unbedingt für die Applikation sind also sich nicht auf dem Server im Unterordner mit Namen der Applikation befinden.

Wenn ich es so lasse wie es ist, gibt er immer die selbe lizenz zurück auch wenn sie geblockt ist.

kingflo 2. Nov 2005 14:54

Re: Brauche dringend Hile funktion läuft net richtig
 
Ich habs irgendwie doch hinbekommen der Code sieht jetzt so aus:


Delphi-Quellcode:
function TLicenseService.GetFreeLicenseFileName(const ApplicationName:string): String;
var
i,y:integer;
Lizenz:string;
begin
//der name der Lizenzdatei name muss zurückgegeben werden z.B Testapp\Lizenz1.ldf
// wenn keine Lizenz mehr frei ist muss noFreeLicenses zurückgegeben werden
    i:=0;
    while i <= ServerForm._AllLicenses.Count-1 do begin
      y:=0;
      if fileexists(extractfilepath(application.exename)+'Lizenzen\'+ApplicationName+'\'+ServerForm._AllLicenses.Strings[i]) then
      Lizenz:=ApplicationName+'\'+ServerForm._AllLicenses.Strings[i];
      while y <= ServerForm._BlockedLicenses.Count -1 do begin
        if (Lizenz=ServerForm._BlockedLicenses.Strings[y]) or
        (not fileexists(extractfilepath(application.exename)+'Lizenzen\'+Lizenz)) then begin
          Lizenz:='noFreeLicenses';
          break;
        end;
        if (y >=ServerForm._BlockedLicenses.Count -1) and
           (fileexists(extractfilepath(application.exename)+'Lizenzen\'+Lizenz)) then begin
          result:=lizenz;
          exit;
        end;

       y:=y+1;
      end;

      i:=i+1;
    end;

result:=Lizenz;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz