AGB  ·  Datenschutz  ·  Impressum  







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

memo in ini speichern

Ein Thema von Nemesis333 · begonnen am 8. Mai 2004 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#21

Re: memo in ini speichern

  Alt 26. Apr 2005, 21:26
Ganz simple Lösung:
Datei sieht so aus:
Code:
11
12
Hallo
WeltIch bin da !
Also
Code:
Länge Memo1
Länge Memo2
<Inhalt Memo1><Inhalt Memo2>
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#22

Re: memo in ini speichern

  Alt 26. Apr 2005, 21:36
und falls man doch die memos in die ini packen will:
Hilfsfunktion
Delphi-Quellcode:
function ConvStrToHex(AStr: String): String;
var LGiveback, LStr: String;
    LCount: Integer;
begin
  setlength(LGiveback, length(AStr) * 2);
  for LCount := 1 to length(AStr) do
  begin
    LStr := IntToHex(Byte(AStr[LCount]), 2);
    move(LStr[1], LGiveback[(LCount - 1) * 2 + 1], 2);
  end;
  result := LGiveback;
end;

function ConvHexToStr(AHex: String): String;
var LGiveback: String;
    LCount: Integer;
begin
  setlength(LGiveback, Trunc(length(AHex) / 2));
  for LCount := 0 to length(LGiveback) - 1 do
    LGiveback[LCount + 1] := Char(StrToInt('$' + AHex[LCount * 2 + 1] + AHex[LCount * 2 + 2]));
  result := LGiveback;
end;
so wird in die Ini-Datei gespeichert
ini.WriteString('Section', 'MemoInhalt', ConvStrToHex(Memo1.Text)); und so wirds wieder ausgelesen
Memo1.Text := ConvHexToStr(ini.ReadString('Section', 'MemoInhalt', ''));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#23

Re: memo in ini speichern

  Alt 26. Apr 2005, 21:38
Zitat von SirThornberry:
Die kannst auch den Inhalt des memos in Hex-Zeichen wandeln und dann in die Ini speichern.
TStrings.CommaText dürfte noch einfacher sein...
Delphi-Quellcode:
uses
  IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
    try
      WriteString('Test', 'Memo1', Memo1.Lines.CommaText);
      UpdateFile;
    finally
      Free;
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with TMemIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
    try
      Memo1.Lines.CommaText := ReadString('Test', 'Memo1', EmptyStr);
    finally
      Free;
    end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#24

Re: memo in ini speichern

  Alt 26. Apr 2005, 21:40
@NicoDE: Da muss ich dich leider enttäuschen. Zum Beispiel sind in einer Ini führende Leerzeischen nicht erlaubt und auch einige Sonderzeischen nicht. Wenn ich mich recht entsinne werden auch mehrere Leerzeischen hintereinander zu einem Leerzeichen.
Wenn du also den Inhalt des Memos speicherst wo 2 Leerzeischen hintereinander auftreten kannst du dann beim laden das pech haben das nur noch eines der beiden leerzeischen vorhanden ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#25

Re: memo in ini speichern

  Alt 26. Apr 2005, 21:48
Zitat von SirThornberry:
@NicoDE: Da muss ich dich leider enttäuschen. Zum Beispiel sind in einer Ini führende Leerzeischen nicht erlaubt und auch einige Sonderzeischen nicht. Wenn ich mich recht entsinne werden auch mehrere Leerzeischen hintereinander zu einem Leerzeichen.
Wenn du also den Inhalt des Memos speicherst wo 2 Leerzeischen hintereinander auftreten kannst du dann beim laden das pech haben das nur noch eines der beiden leerzeischen vorhanden ist.
Bei Leerzeichen setzt CommaText die betreffen Zeilen in Hochkommata...
Code:
Memo1="  foo","bar  "
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#26

Re: memo in ini speichern

  Alt 26. Apr 2005, 21:57
probiere mal
Delphi-Quellcode:
  LIni.WriteString('Section', 'memotext', Memo1.Lines.CommaText);
  Memo1.Lines.CommaText := LIni.ReadString('Section', 'memotext', '');
wenn in Memo1 folgendes steht
Code:
textteil1   textteil nach 3 leerzeichen
danach steht in Memo1 bischen was anderes, und zwar genau dieser Text aber jedes wort auf einer neuen zeile
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#27

Re: memo in ini speichern

  Alt 26. Apr 2005, 22:02
Nö, mein Code funktioniert mit dem Text (Delphi 6 PE, Delphi 9 PE).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#28

Re: memo in ini speichern

  Alt 26. Apr 2005, 22:05
stimmt, da ist in meinem Testprojekt wohl irgendwas schief gegangen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#29

Re: memo in ini speichern

  Alt 26. Apr 2005, 22:08
So sollte es auf jeden Fall gehen:
Delphi-Quellcode:
//zum speichern:
//ini.writestring('Name','Schlüssel',MemoToHexString(memo1);
//und zum laden:
//Memo1.lines.commatext := HexStringToMemo(ini.readstring('Name', 'Schlüssel', 'Fehler'))
function MemoToHexString(MEMO: TMemo): string;
function StrToHexString(const s : string):string;
begin
   if s = 'then
      Result := ''
   else
   begin
      SetLength(Result, Length(s)*2);
      BinToHex(PChar(s), PChar(Result), Length(s));
   end;
end;
begin
Result := StrToHexString(MEMO.Lines.CommaText);
end;

function HexStringToMemo(HS: String):string;
function HexStringToStr(s : string):string;
begin
   if s = 'then
      Result := ''
   else
   begin
      if Odd(length(s)) then
         s := '0'+s;
      SetLength(Result, Length(s) div 2);
      HexToBin(Pchar(s), PChar(Result), Length(Result));
   end;
end;
begin
result := hexstringtostr(hs);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 03:45 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