AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrzeiligen Text in Ini speichern

Ein Thema von citybreaker · begonnen am 10. Jan 2004 · letzter Beitrag vom 10. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
citybreaker
(Gast)

n/a Beiträge
 
#1

Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 14:33
Hallo,

wie kann man einen Mehrzeiligentext (aus einem TMemo Feld)
in eine Ini Datei speichern und anschließend wieder auslesen?
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 14:50
Speicher doch die Anzahl deiner Zeilen, und dann Zeile für Zeile ab:
Delphi-Quellcode:
ZeilenAnzahl := Memo1.Lines.Count
ErsteZeile := Memo1.Lines.Strings[0];
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 14:56
Zitat von MrKnogge:
Speicher doch die Anzahl deiner Zeilen, und dann Zeile für Zeile ab:
Zeile für Zeile ist ein guter Vorschlag. Die Anzahl der Zeilen ist es allerdings IMHO nicht. Wenn du das Einlesen von diesem Wert abhängig machst und jemand treibt Schabernack und verändert den Wert, dann liest du entweder zuwenig oder zuviel ein, bzw. es erscheint evtl. eine Fehlermeldung.

Ich würde für den Memo-Inhalt eine eigene Sektion anlegen und dort die einzelnen Zeilen speichern. Einlesen lässt es sich dann mit "ReadSection" (Anzahl und Namen der Einträge ermitteln), und damit ist man vor Schabernack zumindest technisch geschützt.
"zumindest technisch" heißt, natürlich kann jemand ganze Zeilen löschen. Allerdings ist man von einem Wert für die Anzahl unabhängig und liest damit nur die tatsächlich vorhandenen Einträge ein.
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#4

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 15:26
Zitat von MrKnogge:
Speicher doch die Anzahl deiner Zeilen, und dann Zeile für Zeile ab:
Delphi-Quellcode:
ZeilenAnzahl := Memo1.Lines.Count
ErsteZeile := Memo1.Lines.Strings[0];
Ich versteh nicht ganz wie ich das jetzt mit ner Ini machen soll.
@MathiasSimmack Danke, werde es mal ausprobieren.
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 16:05
So gehts mit einer Ini-Datei:

Delphi-Quellcode:
  files := tinifile.Create('C:\test.ini');

   files.Writeinteger('Text','lines',memo1.lines.count-1); // Anzahl Zeilen

  for i := 0 to (memo1.Lines.Count-1) do
     files.WriteString('Text','Zeile'+inttostr(i),memo1.Lines.Strings[i]);
  files.Free;

Beim Auslesen natürlich einfach das Memo mit einer Schleife füllen:

Delphi-Quellcode:
  memo1.Lines.Clear;
  files := tinifile.Create('C:\test.ini');

  for i := 0 to files.ReadInteger('Text','lines',-1) do // Memo füllen
   begin
    Memo1.Lines.Add( files.readstring('Text','Zeile'+inttostr(i),'-'));
   end;

  files.free;
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#6

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 16:30
Danke, es klappt.
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#7

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 16:51
Hallo alle zusammen,
so wäre es auch elegant gegangen ...

Lesen:
Memo1.Lines.CommaText := IniFile.ReadString('Memo', 'Commatext', ''); Schreiben:
IniFile.WriteString('Memo', 'Commatext', Memo1.Lines.CommaText); bye
Claus
Angehängte Dateien
Dateityp: zip beispiel_170.zip (204,9 KB, 15x aufgerufen)
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#8

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 17:14
Zitat von Duffy:
Hallo alle zusammen,
so wäre es auch elegant gegangen ...

Lesen:
Memo1.Lines.CommaText := IniFile.ReadString('Memo', 'Commatext', ''); Schreiben:
IniFile.WriteString('Memo', 'Commatext', Memo1.Lines.CommaText); bye
Claus
Huch, das ist ja ne schöne kurze Lösung, danke!
Werde dann das nehmen.

--- Edit ---
So kann man aber keinen vernüftigen text speichern.

Beispiel:

Hallo Citybreaker,
wie gehts.

Ausgabe nach dem öffnen:

Hallo
Citybreaker
,
wie gehts
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 17:23
Zitat von axelf98:
files.Writeinteger('Text','lines',memo1.lines.count-1); // Anzahl Zeilen [...]

for i := 0 to files.ReadInteger('Text','lines',-1) do // Memo füllen
Das ist genau das, was ich meinte und nicht benutzen würde. Ändert jetzt jemand den Wert in der INI-Datei, liest du entweder zuwenig Zeilen, bzw. es könnte eine Fehlermeldung auftauchen, wenn nicht genug Zeilen da sind.

Zitat von Duffy:
so wäre es auch elegant gegangen ...

Lesen:
Memo1.Lines.CommaText := IniFile.ReadString('Memo', 'Commatext', ''); Schreiben:
IniFile.WriteString('Memo', 'Commatext', Memo1.Lines.CommaText);
Davon würde ich persönlich abraten. Wenn ich mich recht erinnere, gab´s bei INI-Dateien ein Maximum. Sprich: die Anzahl der Zeichen, die man lesen bzw. schreiben kann. Die Idee, den kompletten Text zu schreiben, könnte u.U. bei einem sehr umfangreichen Dokument nicht funktionieren.

Dann würde ich doch empfehlen, die eingebaute Memo-Speicherfunktion "SaveToFile" und ihr Gegenstück "LoadToFile" zu benutzen. Das ist dann zwar keine INI-Datei, aber man könnte ja in die INI eine Referenz auf die vom Memo erzeugte Datei schreiben und diese dann auch im selben Ordner ablegen.
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#10

Re: Mehrzeiligen Text in Ini speichern

  Alt 10. Jan 2004, 17:25
Hallo citybreaker,
ich glaube, da hast Du Recht. Ich habe es auf die schnelle mit einfachen Texten (siehe Beispiel) probiert.
Also bleibt nur Methode 1.

bye
Claus

[Edit]habe nochmal nachgeschaut, für diese Zwecke ist ist CommaText ein Flop, SORRY[/Edit]
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:31 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