AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Aus Textdatei in ADOConnection.ConnectionString

Aus Textdatei in ADOConnection.ConnectionString

Ein Thema von Kratos · begonnen am 15. Okt 2019 · letzter Beitrag vom 12. Nov 2019
Antwort Antwort
Seite 1 von 2  1 2   
Kratos

Registriert seit: 15. Okt 2019
27 Beiträge
 
Delphi 10.3 Rio
 
#1

Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 10:27
Delphi-Version: 10.2 Tokyo
Hi Leute,

ich bin Delphi-Neuling und nutze Delphi 10.3. Das konnte ich aber leider hier im Forum nicht auswählen.
Ich hab das Forum schon durchsucht, aber nicht ganz das Richtige für mich gefunden. Ich hoffe es ist kein Problem, dass ich ein neues Thema erstellt habe. Vielleicht hat ja einer einen passenden Link parat, sodass dieser Thread schnell wieder geschlossen werden kann.

Mein Programmaufbau:
Code:
edtLaden(TEdit), btnLaden(TButton)
btnConnect(TButton)
ADOCOnnection
ListBox1
Meine Idee:
Ich klick auf btnLaden . TOpenDialog erscheint. Ich wähle eine txt-Datei aus. Der Pfad wird in edtLaden geladen. In der txt-Datei ist in einer einzigen Zeile ein ConnectionString gespeichert, den ich brauche um eine Verbindung zu einer Datenbank herzustellen.
--- Bis hier hin klappt alles.
Wenn ich jetzt auf btnConnect klicke, soll die erste Zeile/der Inhalt der txt-Datei in ADOConnection.ConnectionString geschrieben werden. Das klappt aber nicht. ich bekomme folgende Fehlermeldung:

 E2010 Inkompatible Typen: 'WideString' und 'procedure, untyped pointer or untyped parameter'

Der Inhalt der Datebank soll dann in ListBox1 angezeigt werden. Wenn ich den ConnectionString manuell in ADOConnection.ConnectionString eintrage, klappts.
Wenn ich den ConnectionString bereits bei FormCreate aufrufe, klappts auch.
Jedoch will ich später mit meinen Programm, mehrere Datenbanken einlesen, ohne das Programm schließen zu müssen und ohne den ConnectionString jedes Mal neu eintragen zu müssen.
Vielleicht kann mir ja jemand weiterhelfen

Mein Versuch:
Code:
procedure TForm.btnConnectClick(Sender: TObject);
begin
  ADOConnection.Connected := False;
  ADOConnection.ConnectionString := ListBox1.Items.LoadFromFile(edtLaden.Text);
  ADOConnection.Connected := True;
end;
Das klappt:
Code:
procedure TForm.FormCreate(Sender: TObject);
begin
  ADOConnection.ConnectionString := 'bliblablub';
end;
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
305 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 11:20
ListBox1.Items.LoadFromFile(edtLaden.Text) ist ja auch kein String.
Du willst ja das erste Item der Listbox haben.

Code:
 ADOConnection.ConnectionString := ListBox1.Items[Zeile des ConnectionString];
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (15. Okt 2019 um 11:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.449 Beiträge
 
Delphi 7 Personal
 
#3

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 11:24
Code:
  ADOConnection.ConnectionString := ListBox1.Items.LoadFromFile(edtLaden.Text);

  ADOConnection.ConnectionString := 'bliblablub';
Fällt Dir was auf?

Falls nicht
ADOConnection.ConnectionString := ListBox1.Items[a]; ist erfolgversprechender. (hab jetzt die genaue Syntax nicht parat, es muß auf jeden Fall ein String sein)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (15. Okt 2019 um 11:27 Uhr) Grund: Blödsinn kopiert
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
27 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 14:12
Dankeschön euch beiden für eure schnellen Antworten!
Das hat mich wieder ein Stück weitergebracht.


Wie würden die ersten Denkanstöße aussehen, wenn man den Zwischenschritt (Zwischenspeichern des Inhalts in der ListBox) weglassen möchte?
Meine neue Idee ist, dass der ConnectionString, der in der txt-Datei gespeichert ist, direkt aus der txt-Datei in ADOConnection.ConnectionString gelesen werden soll.
Ist das überhaupt möglich?
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
456 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 14:35
Also, eine von Delphi mitgelieferte Funktion, mit der du als "Einzeiler" den Inhalt der Datei an den ConnectionString zuweisen kannst, fällt mir zumindest auf Anhieb nicht ein. Die ganzen LoadFromFile und ähnliche sind alles Methoden, die eine Datei irgendwo in den Speicher laden und das kann man dann sauber weiterverarbeiten.

Aber es ist auf jeden Fall der absolut richtige Ansatz von dir, dass du das Laden der Datei nicht über den Umweg einer Visuellen Komponente wie der Listbox umsetzen willst! Ein möglicher und einfacher Ansatz, der dem bisherigen sehr nahe kommt, aber eben ohne diese visuelle Komponente, ist die Nutzung von TStringList:

Delphi-Quellcode:
procedure TForm.btnConnectClick(Sender: TObject);
var
  fileContent: TStringList;
begin
  fileContent:=TStringList.Create;
  fileContent.LoadFromFile(edtLaden.Text);
  ADOConnection.Connected := False;
  ADOConnection.ConnectionString := fileContent[0];
  ADOConnection.Connected := True;
  fileContent.Free;
end;
Um es sauber zu machen, sollte man das ganze noch mit try/except und/oder try/finally absichern, damit man reagieren kann, wenn beim Laden der Datei ein Problem auftritt. Aber das nur schon mal als Hinweis für den nächsten Schritt.
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
27 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 15:44
Vielen Dank für den Tipp!

Mit StringList hab ich noch nicht gearbeitet.
Das werde ich jetzt auf jeden Fall nachholen.

VG
Kratos
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
27 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 16:02
@Bbommel

Hat super geklappt dein Code. Danke dir!

Eine Frage hab ich dazu allerdings noch:
Was bedeutet die [0] bei
Code:
ADOConnection.ConnectionString := fileContent[0];
?
Bedeutet das, dass die erste Zeile, der in der Variablen fileContent gespeicherten Datei, dem ConnectionString zugewiesen wird, oder hat das eine andere Bedeutung?
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
456 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 16:14
Genau, so bekommst du den ersten Eintrag der Liste der Strings, die in der StringList "fileContent" gespeichert sind. Und das wiederum ist die erste Zeile deiner Datei.

Ausführlicher könnte man auch schreiben:
ADOConnection.ConnectionString := fileContent.Strings[0];
Aber weil "Strings" die Standardeigenschaft einer TStringList ist, kann man das auch weglassen.

Siehe hier: http://docwiki.embarcadero.com/Libra...trings.Strings

Ich hoffe, da waren noch ein paar hilfreiche Stichworte dabei, damit du dich weiter einlesen kannst.
  Mit Zitat antworten Zitat
Kratos

Registriert seit: 15. Okt 2019
27 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 15. Okt 2019, 16:29
@Bbommel
Alles klar, danke dir.
Zitat:
Ich hoffe, da waren noch ein paar hilfreiche Stichworte dabei, damit du dich weiter einlesen kannst.
Ja, auf jeden Fall.

Ich finde es gerade irgendwie super geil, wie hier der Austausch funktioniert!

Nochmal danke @alle.

VG
Kratos
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.256 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: Aus Textdatei in ADOConnection.ConnectionString

  Alt 16. Okt 2019, 08:31
Moin...
Unasbhängig von der Aufgabe...ich würde dir statt einer "normalen" Textdatei eine INI Datei empfehlen. Ist zwar auch nur eine Textdatei aber mit Struktur.
https://www.delphi-treff.de/tipps-tr...n/ini-dateien/
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf