Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ini-Problem (abspeichern..) (https://www.delphipraxis.net/10057-ini-problem-abspeichern.html)

Alexander 10. Okt 2003 15:01


Ini-Problem (abspeichern..)
 
HAllo Leute,
ich habe gerade ein ganz dummes Problem und zwar will ich einen Record-Source (SQL-Statement) für eine Access-DB mit Hilfe von den INI's abspeichern...
Eigentlich ganz easy, aber er baut irgendwie mist..
Also ´den gesamten Record-Source in einer Stringliste, dort auch in gewünschter Reihenfolge.
Nun speichere ich es in die INI-DAtei. Funktioniert alles super.
Doch wenn ein FEld in dem Record-Source (bzw. in der Stringliste) mit "[" anfängt, wird es einfach ans Ende geschrieben.
Es hängt definitiv nicht mit der Reihenfolge der Strings in der SL zusammen, sondern mit dem "[".
Ich kann auch danach noch was in die INI schreiben, die Felder mit dem "[" am Anfang bleiben denncoh im Ende stehen...
Ach so der RC wird auch als Key abgespeichert, nicht als Wert.
Delphi-Quellcode:
  for i:=0 to sl.Count -1 do
    Ini.WriteString('RecordSource', sl[i], '')
Hier noch ein Beispiel:
Code:
SELECT
[Artikel-Nr],
Artikelname,
LieferantenNr,
[Kategorie-Nr],
Liefereinheit,
Einzelpreis,
Lagerbestand,
BestellteEinheiten,
Mindestbestand,
Auslaufartikel
FROM ArtNeu
Und so sieht's in der INI aus:
Code:
[RecordSource]
SELECT=
Artikelname,=
LieferantenNr,=
Liefereinheit,=
Einzelpreis,=
Lagerbestand,=
BestellteEinheiten,=
Mindestbestand,=
Auslaufartikel=
FROM  ArtNeu=
[Kategorie-Nr],=
[Artikel-Nr],=
Das geht dann ja nachher nciht beim Auslesen (ReadSection) und Benutzen des SQL-Statement (Record-Source) schief, da ja die Reihenfolge falsch ist...
Ich hoffe ihr könnt mir helfen...
DANKE
...ein verzweifelnder Alexander...

Gollum 10. Okt 2003 15:07

Re: Ini-Problem (abspeichern..)
 
Hallo,

dass kann auch nicht gehen.
Alle Texte in eckigen Klammern werden ja als Sektion interpretiert.
[Kategorie-Nr] bedeutet somit, es gibt eine Sektion diesen Namens - analog zu [RecordSource].

In Deinem Fall musst Du das speichern selbst übernehmen, also ohne Ini-File.

Alexander 10. Okt 2003 15:09

Re: Ini-Problem (abspeichern..)
 
verdammt ist ja auch klar :oops:
Wie kann ich das denn gut machen? Mit FileStreams?
Oder aber ich hänge da noch ein Zeichen davor :wink:
Mal schauen... :mrgreen:

NicoDE 10. Okt 2003 15:09

Re: Ini-Problem (abspeichern..)
 
Wie wärs mit einer anderen Methode:
Code:
[RecordSource]
Count=12
Line0="SELECT"
Line1=" Artikelname,"
Line2=" LieferantenNr,"
Line3=" Liefereinheit,"
Line4=" Einzelpreis,"
Line5=" Lagerbestand,"
Line6=" BestellteEinheiten,"
Line7=" Mindestbestand,"
Line8=" Auslaufartikel"
Line9="FROM"
Line9=" ArtNeu"
Line10=" [Kategorie-Nr],"
Line11=" [Artikel-Nr]"

Alexander 10. Okt 2003 15:19

Re: Ini-Problem (abspeichern..)
 
Das ginge natürlich auch noch, aber dann müsste ich alles umschreiben und das ist mir irgendwie zu viel Arbeit :mrgreen:
Man kann nciht zufällig die Sektions-Klammern durch was weiß ich geschweifte Klammer ersetzen, oder?

Tanadirian 10. Okt 2003 15:25

Re: Ini-Problem (abspeichern..)
 
Nimm doch die "[]" raus aus den Strings, soweit mir bekannt ist sind die bei SQL nur notwendig wenn Bezeichnungen Leerzeichen enthalten, bzw. könntest du sie durch #91 und #93 ersetzen, da weis ich aber nicht genau wie er es dann in die Ini schreibt.

sakura 10. Okt 2003 15:28

Re: Ini-Problem (abspeichern..)
 
Alexander, wenn Du mit INI-Dateien arbeiten willst, dann musst Du Dich auch an das Dateiformat halten und dann kannst Du es nur so machen, wie Nico es Dir aufgezeigt hat.

...:cat:...

Alexander 10. Okt 2003 15:33

Re: Ini-Problem (abspeichern..)
 
Habe ich mir schon fast (eigentlich nicht nur fast) gedacht.
Ich gehe ich da im Moment irgendwie ziemlich Kopflos dran :oops: .
Ich lasse die "[" und "]" jetzt durch "`" ersetzen und funktioniert bisher :mrgreen:

Ich hoffe mal stark, dass das auch so ungefähr SQL-Standard ist :mrgreen:

NicoDE 10. Okt 2003 15:43

Re: Ini-Problem (abspeichern..)
 
Soviel anders ist das auch nicht...
(um bei Deinem Beispiel zu bleiben)
Code:
  // Speichern
  if Ini.SectionExists('RecordSource') then
    Ini.EraseSection('RecordSource');
  Ini.WriteInteger('RecordSource', 'Count', sl.Count);
  for i := 0 to sl.Count - 1 do
    Ini.WriteString('RecordSource', 'Line' + IntToStr(i), sl[i]);

  // Laden
  sl.Clear();
  for i := 0 to Ini.ReadInteger('RecordSource', 'Count', 0) - 1 do
    sl.Add(Ini.ReadString('RecordSource', 'Line' + IntToStr(i), ''));

Alexander 10. Okt 2003 16:08

Re: Ini-Problem (abspeichern..)
 
Du, das ist mir schon klar.
Das Problem ist nur, das ich das Laden an ziemlich vielen Stellen ändern müsste und mir das im Moment viel zu viel Arbeit ist.
Denn so wie ich das jetzt mache (mit ' statt [ oder ]) geht das nämlich wunderbar ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr.
Seite 1 von 2  1 2      

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