AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Problem : Schreiben eines Memo1.Text in ein IniFile

Problem : Schreiben eines Memo1.Text in ein IniFile

Ein Thema von EccoBravo · begonnen am 10. Apr 2008 · letzter Beitrag vom 30. Apr 2008
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#11

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 11:26
Bitte nochmal nachsehen,
ich habe die Frage nach nochmaliger Testung überarbeitet

Danke

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 12:33
Steht in dem Moment, wo du GET aufrufst, überhaupt schon etwas in FNotiz drin???

Obwohl, wenn es leer wäre, dann wäre das Result ja auch leer ...

Dann, wie rufst du das ganze auf (?) wäre noch interessant zu wissen ...
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#13

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 13:38
Hallo,

in M_Notiz.OnExit wird der Memo Inhalt in FNotiz geschrieben.

Delphi-Quellcode:
procedure TForm1.MNotizOnExit(Sender:TObject);
begin
    // Hier wird der MemoInhalt in FNotiz geschrieben
    SatzList.Items[SatzNummer].Notiz:=M_Notiz.Text;
end;
Dannach wird beim Neustart des Programmes das IniFile wieder eingelesen

Delphi-Quellcode:
SatzList.Items[SatzNummer].Notiz:=PatIni.ReadString('Bild','Notiz',EmptyStr);
...
M_Notiz.Text := SatzList.Items[SatzNummer].Notiz;
Das ist mein ChaosCode, der mich konsterniert.

Danke

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#14

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 13:43
Ja, dann lies dir deinen "ChaosCode" im letzten Post nochmal durch, vor allem den 2. Teil. Fällt da nix auf?

Edit: vergiss es, Irrtum
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#15

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 14:06
Hallo Tomsel,

ich habe in meinem letzten Code etwas vergessen.
Schau doch mal auf meinem vorherigen Code nach.

Gruß

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#16

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 15:09
Ich habs,

das Problem ist komplizierter als gedacht:

An diesem Object SatzList.Items[SatzNummer].Notiz hängen noch ein paar mehr Aufrufe als vorhin geschildert, und jedesmal vertauscht er die Zeichen.

So laufen über eine Property Notiz der Traffic mit Form1 und mit den IniFiles:

Delphi-Quellcode:
M_Notiz.Text := SatzList.Items[SatzNummer].Notiz
...
SatzList.Items[SatzNummer].Notiz := M_Notiz.Text

...

SatzList.Items[SatzNummer].Notiz:=PatIni.ReadString('bla', 'bla', EmptyString);
...
PatIni.WriteString('bla', 'bla', SatzList.Items[SatzNummer].Notiz);

Die Lösung:
Alle Zugriffe vom Form1 laufen wie bisher über die Eigenschaft Notiz
also über

SatzList.Items[SatzNummer].Notiz Für das Speichern und Schreiben der Notiz in ein IniFile habe ich eine extra Property NotizIni geschaffen

SatzList.Items[SatzNummer].NotizIni die den ganzen Verkehr mit den IniFiles abwickelt.

So kommen sich Form1-Traffic und IniFile-Traffic nicht mehr ins Gehege.

Das sieht so aus:
im Form1:

Delphi-Quellcode:
M_Notiz.Text := SatzList.Items[SatzNummer].Notiz;
...
SatzList.Items[SatzNummer].Notiz := M_Notiz.Text;

...

SatzList.Items[SatzNummer].NotizIni:=PatIni.ReadString('bla', 'bla', EmptyString);
...
PatIni.WriteString('bla', 'bla', SatzList.Items[SatzNummer].NotizIni);
und in der Klasse TSatz ist es wie folgt hinterlegt:

Delphi-Quellcode:
type
    TSatz = class(TObject)
    private
        ...
        FNotiz: string;
        ...
        ...
        function GetNotiz: string;
        function GetNotizIni: string;
        ...
        procedure SetNotiz(const Value: string);
        procedure SetNotizIni(const Value: string);
        ...
    public
        ...
        property Notiz: string read GetNotiz write SetNotiz;
        property NotizIni: string read GetNotizIni write SetNotizIni;
        ...
    end;

implementation

uses EB_Pat_Foto_U, controls;

...

function TSatz.GetNotiz: string;
begin
    result := FNotiz;
end;

function TSatz.GetNotizIni: string;
begin
    result := FNotizIni;
end;

...

procedure TSatz.SetNotiz(const Value: string);
begin
    FNotiz := value;
    FNotizIni := StringReplace(Value, #13 + #10,'##', [rfReplaceAll]);
end;

procedure TSatz.SetNotizIni(const Value: string);
begin
    FNotizIni := value;
    FNotiz := StringReplace(Value, '##', #13 + #10, [rfReplaceAll]);
end;
...

end.
Also vielen Dank fürs Mitdenken!

Fazit ist:
hat man mit einer Property einer Klasse unterschiedlichen Traffic-Bereiche (unterschiedliche Aufgaben) zu versorgen (dann ist es wohl auch nicht mehr eine Property), dann wäre es besser, diese Property in verschiedene Properties aufzuspalten, also für jede Aufgabe eine Property bereitzulegen.
Sicherlich eine Binsenweisheit, aber ich bin stolz, selbst drauf gekommen zu sein.

Also nochmals Danke
E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.282 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Problem : Schreiben eines Memo1.Text in ein IniFile

  Alt 30. Apr 2008, 15:15
Viel einfacher (und sinnvoller) wäre es, wenn du das Speichern auch tatsächlich innerhalb der Klasse TSatz machst. Dass du ansonsten außerhalb der Klasse TSatz beide Varianten brauchst, ist ja klar.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:30 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