![]() |
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:
Hier noch ein Beispiel:
for i:=0 to sl.Count -1 do
Ini.WriteString('RecordSource', sl[i], '')
Code:
Und so sieht's in der INI aus:
SELECT
[Artikel-Nr], Artikelname, LieferantenNr, [Kategorie-Nr], Liefereinheit, Einzelpreis, Lagerbestand, BestellteEinheiten, Mindestbestand, Auslaufartikel FROM ArtNeu
Code:
Das geht dann ja nachher nciht beim Auslesen (ReadSection) und Benutzen des SQL-Statement (Record-Source) schief, da ja die Reihenfolge falsch ist...
[RecordSource]
SELECT= Artikelname,= LieferantenNr,= Liefereinheit,= Einzelpreis,= Lagerbestand,= BestellteEinheiten,= Mindestbestand,= Auslaufartikel= FROM ArtNeu= [Kategorie-Nr],= [Artikel-Nr],= Ich hoffe ihr könnt mir helfen... DANKE ...ein verzweifelnder Alexander... |
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. |
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: |
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]" |
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? |
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.
|
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:... |
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: |
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), '')); |
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 08:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz