Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Warum wird das Memo nicht komplett aus der INI geladen? (https://www.delphipraxis.net/25548-warum-wird-das-memo-nicht-komplett-aus-der-ini-geladen.html)

Dragon27 8. Jul 2004 10:49


Warum wird das Memo nicht komplett aus der INI geladen?
 
Hall zusammen,

ich habe heute folgenden Code geschrieben:


Code:
memo1.Lines[0]:=ini.ReadString('Data','Adresszeile0','');
memo1.Lines[1]:=ini.ReadString('Data','Adresszeile1','');
memo1.Lines[2]:=ini.ReadString('Data','Adresszeile2','');
memo1.Lines[3]:=ini.ReadString('Data','Adresszeile3','');
memo1.Lines[4]:=ini.ReadString('Data','Adresszeile4','');
memo1.Lines[5]:=ini.ReadString('Data','Adresszeile5','');
memo1.Lines[6]:=ini.ReadString('Data','Adresszeile6','');
memo1.Lines[7]:=ini.ReadString('Data','Adresszeile7','');
memo1.Lines[8]:=ini.ReadString('Data','Adresszeile8','');
memo1.Lines[9]:=ini.ReadString('Data','Adresszeile9','');
Doch irgendwie liest er nur die erste Zeile aus!
Die Saveroutine sieht so aus:

Code:

ini.WriteString('Data','Adresszeile0',memo1.Lines[0]);
ini.WriteString('Data','Adresszeile1',memo1.Lines[1]);
ini.WriteString('Data','Adresszeile2',memo1.Lines[2]);
ini.WriteString('Data','Adresszeile3',memo1.Lines[3]);
ini.WriteString('Data','Adresszeile4',memo1.Lines[4]);
ini.WriteString('Data','Adresszeile5',memo1.Lines[5]);
ini.WriteString('Data','Adresszeile6',memo1.Lines[6]);
ini.WriteString('Data','Adresszeile7',memo1.Lines[7]);
ini.WriteString('Data','Adresszeile8',memo1.Lines[8]);
ini.WriteString('Data','Adresszeile9',memo1.Lines[9]);
Warum funktioniert das nicht?
Habe ich nen Fehler gemacht?

Danke

Alexander 8. Jul 2004 10:53

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
Die Zeilen gibt es vermutlich noch nicht, daher kannst du auf sie nicht so einfach zu greifen. VErsuch es mal Memo1.Lines.Add('test');

Stevie 8. Jul 2004 10:53

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
Mach mal folgendes:
Delphi-Quellcode:
memo1.lines.add(ini.ReadString('Data','Adresszeile0',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile1',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile2',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile3',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile4',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile5',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile6',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile7',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile8',''));
memo1.lines.add(ini.ReadString('Data','Adresszeile9',''));
Das Problem ist, dass es die Zeilen noch garnicht gibt, die du setzen willst!

[edit]Schon wieder einer mit nem Speed-Hack!!! :mrgreen:[/edit]

Dragon27 8. Jul 2004 10:55

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
Hallo,

Danke für die Antworten :oops:. Währe da jetzt echt nicht draufgekommen *schäm*

Danke!

Steve 8. Jul 2004 10:56

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
PS: Das schreit ja schon nach ner Schleife :mrgreen:

Gruß
Stephan

Dani 8. Jul 2004 11:02

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
Hi,

Eine frisch initialisierte Memo-Komponente hat nur ein Element in TMemo.Lines. Daher:

Delphi-Quellcode:
memo1.Lines.Clear;
memo1.Lines.add( ini.ReadString('Data','Adresszeile0',''));
{...}
Noch besser:
Delphi-Quellcode:
memo1.Lines.Clear;
for i:=0 to 9 do
 memo1.Lines.add( ini.ReadString('Data','Adresszeile'+IntToStr(i),''));
Einfacher:
Delphi-Quellcode:
Memo1.Lines.SaveToFile('C:\Adressdaten.txt');
Memo1.Lines.LoadFromFile('C:\Adressdaten.txt');
{Achtung: beides in try...except Blöcke setzen, da eine Exception auftreten kann, wenn die Datei beim Schreibzugriff bereits verwendet wird oder beim Lesezugriff nicht existiert}
Gruß,
Dani

Edit: Bin zuuu langsaaaam :|

Delphi_Fanatic 8. Jul 2004 11:10

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
Warum liest Du Deine Zeilen nicht einfach so ein :

Code:
ini.ReadSection ('Data',memo1.Lines);

Dragon27 8. Jul 2004 11:29

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
hallo dani,

sicherlich währe das Lodfromfile und savetofile einfacher aber es muss ja eine Datei sein ;-)

meine ganze Routine sieht ja so aus:
Delphi-Quellcode:

procedure Tform7.loadrechnung(filename:String);
var x, y, i:Integer;
begin
ini:=Tinifile.Create(filename);
memo1.clear;
memo2.Clear;
edit1.text:=ini.ReadString('Data','Rechnungsnummer','');
datetimepicker1.date:=strtodate(ini.ReadString('Data','Rechnungsdatum',datetostr(now)));
edit2.Text:=ini.ReadString('Data','Auftragsnummer','');
memo1.Lines.Add(ini.ReadString('Data','Adresszeile0',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile1',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile2',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile3',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile4',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile5',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile6',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile7',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile8',''));
memo1.Lines.Add(ini.ReadString('Data','Adresszeile9',''));
memo2.Lines.Add(ini.ReadString('Data','Text1',''));
memo2.Lines.Add(ini.ReadString('Data','Text2',''));
memo2.Lines.Add(ini.ReadString('Data','Text3',''));
memo2.Lines.Add(ini.ReadString('Data','Text4',''));
memo2.Lines.Add(ini.ReadString('Data','Text5',''));
memo2.Lines.Add(ini.ReadString('Data','Text6',''));
memo2.Lines.Add(ini.ReadString('Data','Text7',''));
memo2.Lines.Add(ini.ReadString('Data','Text8',''));
x:=0;
Repeat
x:=x+1;
Y:=-1;
repeat
y:=y+1;
stringgrid1.Cells[x,y]:=ini.ReadString('Rechnung',inttostr(x)+'_'+inttostr(y),'');
until
Y>=21;
until
x>=5;
end;



procedure Tform7.saverechnung(filename, Rechnungsname:String);
var x, y, i:Integer;
begin
ini:=Tinifile.Create(filename+Rechnungsname+'.MFR');
ini.WriteString('Data','Rechnungsnummer',edit1.Text);
ini.WriteString('Data','Rechnungsdatum',datetostr(Datetimepicker1.Date));
ini.WriteString('Data','Auftragsnummer',edit2.Text);
ini.WriteString('Data','Adresszeile0',memo1.Lines[0]);
ini.WriteString('Data','Adresszeile1',memo1.Lines[1]);
ini.WriteString('Data','Adresszeile2',memo1.Lines[2]);
ini.WriteString('Data','Adresszeile3',memo1.Lines[3]);
ini.WriteString('Data','Adresszeile4',memo1.Lines[4]);
ini.WriteString('Data','Adresszeile5',memo1.Lines[5]);
ini.WriteString('Data','Adresszeile6',memo1.Lines[6]);
ini.WriteString('Data','Adresszeile7',memo1.Lines[7]);
ini.WriteString('Data','Adresszeile8',memo1.Lines[8]);
ini.WriteString('Data','Adresszeile9',memo1.Lines[9]);
ini.WriteString('Data','Text1',memo2.Lines[0]);
ini.WriteString('Data','Text2',memo2.Lines[1]);
ini.WriteString('Data','Text3',memo2.Lines[2]);
ini.WriteString('Data','Text4',memo2.Lines[3]);
ini.WriteString('Data','Text5',memo2.Lines[4]);
ini.WriteString('Data','Text6',memo2.Lines[5]);
ini.WriteString('Data','Text7',memo2.Lines[6]);
ini.WriteString('Data','Text8',memo2.Lines[7]);
x:=0;
Repeat
x:=x+1;
Y:=-1;
repeat
y:=y+1;
ini.WriteString('Rechnung',inttostr(x)+'_'+inttostr(y),stringgrid1.Cells[x,y]);
until
Y>=21;
until
x>=5;
end;
Also praktisch jede Rechnung in EINE Datei ;-)

Gruß

Andy

Dragon27 8. Jul 2004 11:33

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
Hallo Delphi_fanatic,

was macht readsection genau?

Würde das dann nicht auch die Sachen von Memo2 miteinlesen?

Danke

Stevie 8. Jul 2004 11:38

Re: Warum wird das Memo nicht komplett aus der INI geladen?
 
ReadSection liest alle Werte, die in diesem Bereich stehen.
Aber um Abhilfe zu schaffen, kannst du's doch in unterschiedliche Bereiche schreiben...
Delphi-Quellcode:
ini.WriteSection('Adresse',memo1.Lines);
ini.WriteSection('Text',memo1.Lines);
Edit: Mist, das war ne Funktion, die ich mir mal selber geschrieben habe... :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 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