AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi .udl-Datei mit TQuery öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

.udl-Datei mit TQuery öffnen

Ein Thema von Klarabella · begonnen am 28. Dez 2004 · letzter Beitrag vom 29. Dez 2004
Antwort Antwort
Klarabella

Registriert seit: 28. Sep 2004
59 Beiträge
 
#1

.udl-Datei mit TQuery öffnen

  Alt 28. Dez 2004, 15:27
mit ADO ist das Ganze ja gar kein Problem -->
TADOQuery.ConnectionString = 'FILE NAME=...';
aber hab ich auch irgendeine Möglichkeit, eine UDL-Datei in einzulesen... Also halt so, dass ich dann die Connection weiß.

Mir würde schon weiterhelfen, zu wissen, wie ich es schaffen kann, die UDL-Datei so zu splitten, um an den "DatabaseName" zu kommen!

Gruß, Klarabella
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: .udl-Datei mit TQuery öffnen

  Alt 28. Dez 2004, 16:21
Hallo Klarabella,
Du kannst eine udl Datei wie eine ASCII Datei behandeln.
D.h. lade die Datei in ein TString´List Objekt und zerlege den
Text/String mit den üblichen Mitteln.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Klarabella

Registriert seit: 28. Sep 2004
59 Beiträge
 
#3

Re: .udl-Datei mit TQuery öffnen

  Alt 29. Dez 2004, 10:09
soweit so gut... Aber wirklich funktionieren tut das nicht, oder???

Delphi-Quellcode:
var Datei: string;
    list: TStringList;
    str: string;
begin
  list := TStringList.Create;
  Datei := ExtractFilePath('Garantie_Abfrage.exe') + 'Datenbank-Connection.udl';
  if (FileExists(Datei)) then
  begin
    try
      list.LoadFromFile(Datei);
      str := list.Strings[0];
    finally
      list.Free;
    end;
  end;
wenn ich das so mache, also über loadfromFile ist die Variable "list" angeblich leer, str zeigt mir folgendes an: 'ÿþ['
Obwohl doch eigentlich im string 0 [oledb] stehen sollte, oder???
Wenn ich mir die udl-datei im editor anzeigen lasse, steht das dort als erstes/ in der ersten Zeile.

Also, was mache ich falsch????
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#4

Re: .udl-Datei mit TQuery öffnen

  Alt 29. Dez 2004, 10:17
Der Code ist soweit richtig, habs getestet.
Es könnte an der Zeile
  Datei := ExtractFilePath('Garantie_Abfrage.exe') + 'Datenbank-Connection.udl'; liegen.

Und ist das try ... finally eigentl. an der richtigen Stelle? Die Stringlist wird nämlcih nur freigegeben wenn es die Datei gibt
  Mit Zitat antworten Zitat
Klarabella

Registriert seit: 28. Sep 2004
59 Beiträge
 
#5

Re: .udl-Datei mit TQuery öffnen

  Alt 29. Dez 2004, 10:20
@StefanDP: hast du das auch mit einer udl-Datei oder nur mit ner Text-Datei getestet?
Das ExtractToFilePath etc. ist korrekt... Ohne funktionierts genausowenig...
Bin ein wenig ratlos

//edit: achso mit dem try-finally hast du natürlich völlig recht... Hatte vorher was anderes ausprobiert, deswegen stand es da noch so
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: .udl-Datei mit TQuery öffnen

  Alt 29. Dez 2004, 10:38
Hallo Klarabella,
man lernt nie aus. Wenn man sich eine UDL Datei mit dem Notepad ansieht, scheint
es sich um eine ganz normale Textdatei zu handeln. Ist es aber nicht. Ein Blick mit
einem Hex-Editor zeigt, dass die ersten beiden Bytes FF und FE sind. Dann ist jedes
2. Byte ein #0. Diese Zeichen müssen erst herausgefiltert werden, bevor man den
Inhalt der Datei in ein TStringList-Objekt schiebt
Delphi-Quellcode:
procedure TFormUDL.Button1Click(Sender: TObject);
{Hier wird mit UDLFileStream eine UDL Datei in einen Stream gelesen.
Da in einer UDL Datei ab dem 3. Byte jedes zweite Zeichen #0 ist,
wird der UDLFileStream byteweise in UDLMemStream kopiert. Dabei wird
das Zeichen #0 unterdrückt. Anschließend. kann TStringList.LoadFromStream
aufgerufen werden}

var
    Datei : string;
    list : TStringList;
    UDLFileStream : TFileStream;
    UDLMemStream : TMemoryStream;
    UDLByte : Byte;
    str: string;
begin
  Datei := ExtractFilePath(Application.Exename) + 'db1.udl';
  list := TStringList.Create;
  UDLMemStream:=TMemoryStream.Create;
  UDLFileStream:=TFileStream.Create(Datei,fmOpenRead);
  Try
    // Die ersten beiden Bytes in der UDL Datei sind FF und FE
    // Die können übersprungen werden.
    UDLFileStream.Seek(2,soFromBeginning);

    // Kopieren des Stream
    While UDLFileStream.Position<UDLFileStream.Size do
      begin
      UDLFileStream.Read(UDLByte,SizeOf(Byte));
      If UDLByte<>0 then // unterdrücken von #0
        UDLMemStream.Write(UDLByte,SizeOf(Byte));
      end;
    UDLMemStream.Seek(0,soFromBeginning);
    list.LoadFromStream(UDLMemStream);
    str := list.Strings[0]; // enthält jetzt [oledb]
  finally
   UDLFileStream.Free;
   UDLMemStream.Free;
   list.Free;
   end;
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Klarabella

Registriert seit: 28. Sep 2004
59 Beiträge
 
#7

Re: .udl-Datei mit TQuery öffnen

  Alt 29. Dez 2004, 10:53
Oh Super!!!!

Bin ja schon fast dran verzweifelt

DANKE! Das klappt prima!

und gleich wieder was neues gelernt...
  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 18:24 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