Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   ADOConnection Servernamen ermitteln... (https://www.delphipraxis.net/163416-adoconnection-servernamen-ermitteln.html)

DeddyH 28. Sep 2011 12:36

AW: ADOConnection Servernamen ermitteln...
 
Wie schon gesagt: such doch einfach im ConnectionString nach der Zeichenfolge (mit Pos/PosEx). Ab der Position kopierst Du dann.

p80286 28. Sep 2011 12:37

AW: ADOConnection Servernamen ermitteln...
 
Nein das mußt Du nicht.
suche einfach nach "Data Source=" und Du hast den Startpunkt für den gesuchten Namen.
Übrigens könnte der Servername ganz am Ende Deines ConnStrings stehen.

Gruß
K-H
edith:
zu spät!!

Panschi 28. Sep 2011 12:53

AW: ADOConnection Servernamen ermitteln...
 
Es klappt und es ist mit DeddyHs Idee sogar kürzer und einfacher :-D
Vielen dank :thumb:

Hier mein Quelltext:


Delphi-Quellcode:
procedure TFMain.ServerNamen(const Con: TADOConnection);
var Verbindung: string;
    i: Integer;
    Start: Integer;

begin
  ServerName := '';
  Verbindung := Con.ConnectionString;

  start := Pos('Data Source=', Verbindung);
  start := start+12;

  ServerName := '';

  for i := start to length(verbindung)-1 do
  begin
    if Verbindung[i] = ';' then
    begin
      Break;
    end
    else begin
      Servername := Servername + Verbindung[i];
    end;
  end;
end;

p80286 28. Sep 2011 13:10

AW: ADOConnection Servernamen ermitteln...
 
Delphi-Quellcode:
procedure TFMain.ServerNamen(const Con: TADOConnection);
var Verbindung: string;
    i: Integer;
    Start: Integer;

begin
  ServerName := '';
  Verbindung := Con.ConnectionString;

  start := Pos('Data Source=', Verbindung);
  start := start+12;

  ServerName := '';

  for i := start to length(verbindung) do {--auch das letzte Zeichen sollte mitgenommen werden!}
  begin
    if Verbindung[i] = ';' then
    begin
      Break;
    end
    else begin
      Servername := Servername + Verbindung[i];
    end;
  end;
end;
Gruß
K-H

Panschi 28. Sep 2011 13:18

AW: ADOConnection Servernamen ermitteln...
 
aber ein string ist doch nullterminiert, von daher wäre das letzte Zeichen eines 10-Zeichen langen strings das Zeichen mit dem Index 9!

DeddyH 28. Sep 2011 13:30

AW: ADOConnection Servernamen ermitteln...
 
Nein, Strings gehen von 1 bis Length. Ich habe da auch noch einen Vorschlag (getippt und nicht getestet):
Delphi-Quellcode:
procedure TFMain.ServerNamen(const Con: TADOConnection);
const
  SUCHSTRING = 'Data Source=';
var Verbindung: string;
    i: Integer;
    Start: Integer;

begin
  Verbindung := Con.ConnectionString;
  ServerName := '';
 
  Start := Pos(SUCHSTRING, Verbindung);
  if Start > 0 then
    begin
      Delete(Verbindung, 1, Start + Length(SUCHSTRING));
      Start := Pos(';', Verbindung);
      if Start > 0 then
        Delete(Verbindung, Start, Length(Verbindung));
      Servername := Verbindung;
    end;
end;

Panschi 28. Sep 2011 14:42

AW: ADOConnection Servernamen ermitteln...
 
Funktionert soweit einwandfrei, jedoch fängt er ein Zeichen weiter an als er soll!

DeddyH 28. Sep 2011 14:50

AW: ADOConnection Servernamen ermitteln...
 
Wie meinen? Zeig doch mal das Original und dann das Ergebnis, dann sieht man wohl eher, wo der Fehler liegt.

Panschi 28. Sep 2011 14:55

AW: ADOConnection Servernamen ermitteln...
 
das Orginal is "WS-200-02\SQLEXPRESS"
Bei meiner Methode erscheint:"WS-200-02\SQLEXPRESS"
Bei deiner Methode erscheint:"S-200-02\SQLEXPRESS"

DeddyH 28. Sep 2011 14:59

AW: ADOConnection Servernamen ermitteln...
 
Dann löschen wir ein Zeichen weniger:
Delphi-Quellcode:
Delete(Verbindung, 1, Start + Length(SUCHSTRING) - 1);


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
Seite 2 von 3     12 3      

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