Hi reli,
bei Google hab ich schon gesucht, die beiden Fehler, die du mir gelinkt hast sind die 0xc0000022 und nicht 0xc0000142, deswegen dachte ich nicht, dass das passt, werds aber mit dem Kunden mal durch spielen.
So, hier n bisl Quältext, aber ehrlich gesagt denke ich nicht, dass das einen weiter bringt *g*:
Delphi-Quellcode:
procedure TFrmServerConfig.FormCreate(Sender: TObject);
begin
if FileExists(GetDataPath+'System.fdb') then
begin
DMSystem.dbSystemZeos.Database := GetDataPath+'System.fdb';
try
DMSystem.dbSystemZeos.Connect;
except
Application.Terminate;
end;
end
else
Application.Terminate;
MPGetLanguage(); // Sprache aus System.fdb auslesen (füllt Array aSprache)
MPSetLanguage(Self); //Verpasst den Komponenten die richtigen Text/Caption Propertys
slPlugins := TStringList.Create;
bActivated := false;
sLicenseHolder := aSprache[1379];
iMaxUser := 0;
end;
Delphi-Quellcode:
procedure TFrmServerConfig.FormShow(Sender: TObject);
var
prgInfo: TmpllPrgInfo;
bridgeone: mybridge1;
tsplugin: IMPPluginInterface;
sMPServerINI : string;
ConfigINi : TIniFile;
sDatenPfad : string;
begin
TForm(Sender).Left:= (Screen.Width - TForm(Sender).Width)div 2;
TForm(Sender).Top:= ((Screen.Height -TForm(Sender).Height) div 2)-14;
bridgeone := mybridge1.Create;
mplicense := TMPLicense.Create(bridgeone, mybridge2.Create());
prginfo.prgtyp := cPrg_MPFEUER;
prginfo.prglite := 0;
if (bridgeone.getField4 <> '') and (StrToInt(bridgeone.getField4) > cUser_Einzel) and (StrtoInt(bridgeone.getField4) < cUser_Max) then
begin
prginfo.prguser := StrToInt(bridgeone.getField4);
end
else
prginfo.prguser := cUser_3;
sMPServerINI := GetDataPath+'MPServer.ini';
ConfigIni := TIniFile.Create(sMPServerINI);
sDatenpfad := ConfigIni.ReadString('UNC_PATH', 'Datapath', '');
if COPY(sDatenpfad, Length(sDatenpfad), 1) <> '\' then
sDatenpfad := sDatenpfad+'\';
tsplugin := MPPluginLoaderLib.LoadIt(sDatenPfad+'Plugins\');
prginfo.prgversion := cVers_30;
if tsplugin <> nil then
begin
if tsplugin.getPluginType = pTManufacturer then
begin
prginfo.prgPlugin := cPlugin_plugin;
slPlugins.Add(tsplugin.getPluginName+' (V '+tsplugin.getPluginVersion+')');
end
else
prgInfo.prgPlugin := cPlugin_no;
end
else
prgInfo.prgPlugin := cPlugin_no;
prginfo.prgAVL := false;
mplicense.setProgrammVersion(prginfo);
mplicense.setdefaultLicense(pDefaultLicense);
btnClients.Click;
btnUebersicht.Click;
end;
Delphi-Quellcode:
function GetDataPath(): string;
var
rRegisrty: TRegistry;
begin
rRegisrty := TRegistry.Create(KEY_READ);
rRegisrty.RootKey := HKEY_LOCAL_MACHINE;
if rRegisrty.KeyExists('SOFTWARE\MP-SOFT-4-U\' + pPrgname + '\Services') then
begin
rRegisrty.OpenKey('SOFTWARE\MP-SOFT-4-U\' + pPrgname + '\Services', false);
Result := rRegisrty.ReadString('AppDataPath');
end
else begin
Result := '';
end;
end;
Delphi-Quellcode:
procedure TFrmServerConfig.btnClientsClick(Sender: TObject);
type
PPInAddr = ^PInAddr;
var
ConfigIni : TIniFile;
sMPServerINI : string;
WSA : TWSAData;
PHEn : PHostEnt;
Addr : PPInAddr;
ConnectionStream: TMemoryStream;
sConnectionAnswer : string;
begin
lblBereich.Caption := '['+TJvNavPanelButton(Sender).Caption+']';
SetScrollBox(sbClients);
if not ServiceRunning(nil, PAnsiChar('MPService')) then
begin
lblClients.Caption := aSprache[1485];
lblAktClients.Visible := false;
exit;
end;
MPServerConnect;
GetConnections();
ConnectionThread := TConnectionThread.Create(True);
with ConnectionThread do
begin
Priority := tpNormal;
FreeOnTerminate := True;
ConnectionClient := MPServerTCPClient;
Resume;
end;
end;
Delphi-Quellcode:
procedure TFrmServerConfig.btnUebersichtClick(Sender: TObject);
begin
try
ConnectionThread.Suspend;
except
end;
lblBereich.Caption := '['+btnUebersicht.Caption+']';
SetScrollBox(sbStart);
if ServiceRunning(nil, PChar('MPService')) then
begin
lblServiceStatus.Caption := aSprache[1462];
btnServiceStatus.Caption := aSprache[1461];
pnlServerStatus.Color := $00A2D896;
MPServerConnect;
GetServerInformation;
lblStatusLizenznehmerWert.Caption := sLicenseHolder;
if bActivated then
lblStatusLizenzWert.Caption := aSprache[1492]+' - '+IntToStr(iMaxUser)+' '+aSprache[772]
else
lblStatusLizenzWert.Caption := aSprache[1495]+' ('+IntToStr(iDemoDays)+'/30) - '+IntToStr(iMaxUser)+' '+aSprache[772]
end
else
begin
lblServiceStatus.Caption := aSprache[1463];
btnServiceStatus.Caption := aSprache[1460];
pnlServerStatus.Color := $005E5DE3;
lblStatusLizenznehmerWert.Caption := '';
lblStatusLizenzWert.Caption := '';
end;
lbPlugins.Items.Clear;
if slPlugins.Count = 0 then
lbPlugins.Items.Add(aSprache[1516])
else
lbPlugins.Items := slPlugins;
try
ConnectionThread.Resume;
except
end;
end;
Und hier noch der Thread:
Delphi-Quellcode:
procedure TConnectionThread.Execute;
var
sReadLine: string;
begin
with ConnectionClient.IOHandler do
begin
while Connected do
begin
sReadLine := ReadLn;
if StringDecrypt(sReadLine) = 'ConnectionChange' then
begin
Synchronize(GetConnections);
end;
end;
end;
end;
procedure TConnectionThread.GetConnections;
begin
FrmServerConfig.GetConnections;
end;
Wenn noch was benötigt wird poste ich auch gerne die gesamte
pas, aber wie schon gesagt denke ich nicht, dass das was Hilft, da es ja bei all den anderen Kunden einwandfrei funktioniert.
Ich denke eigentlich eher, dass es was auch Windows-Seite ist, hab aber im Netz bisher nur was gefunden von wegen
DLL-Problem, bzw. Problem bei Scheduled Tasks oder der cdm.exe.
Das alles wurde dann immer mit dem nächsten SP o.ä. gelöst, also auch nicht wirklich befriedigend.