Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zugriff auf TStrings (https://www.delphipraxis.net/37409-zugriff-auf-tstrings.html)

blue_RP 5. Jan 2005 15:49


Zugriff auf TStrings
 
Hallo,

ich möchte den Text eines RichEdit in eine Datei schreiben (zusammen mit noch weiteren Daten). Der Text aus dem RichEdit wird in meinem Formular einem Feld des Objekts AktuelleSiFkt der Klasse SicherheitsFunktion zugewiesen:
Code:
ereignisse := AusloesendeEreignisseRichEdit.Lines;
SetAusloesendeEreignisse(ereignisse);
Variable ereignisse und auch das Feld AusloesendeEreignisse des Objekts sind vom Typ TStrings.

Dann in der Klasse SicherheitsFunktionFatei erfolgt das Schreiben in die Datei, dabei wird das Objekt der Klasse SicherheitsFunktion als Parameter übergeben. Der Text aus dem Feld des Objekts wird dann der Variable tempLines zugewiesen. Beim Ermitteln der Anzahl der Zeilen gibts zur Laufzeit einen Zugriffsfehler.

Code:
procedure SicherheitsFunktionDatei.Write(persSiFkt: SicherheitsFunktion);
var
  tempLines: TStrings;
  tempLine: String;
  i, anzahlStrings, anzahlBloeckeKanal1, anzahlBloeckeKanal2: integer;
begin
  try
    //Stream := TFileStream.Create(DateiName, fmOpenWrite);
    Stream := TFileStream.Create(DateiName, fmCreate);
  except
    Stream := TFileStream.Create(DateiName, fmCreate);
  end;
 
  try
    writer := TWriter.Create(Stream,100);
   
    //Freitext zu Auslösende Ereignisse speichern (zeilenweise)
    tempLines := persSiFkt.GetAusloesendeEreignisse;
    anzahlStrings := tempLines.Count; //hier hängt's
    writer.WriteInteger(anzahlStrings);

    for i := 0 to anzahlStrings - 1 do
    begin
      tempLine := tempLines.Strings[i];
      writer.WriteString(tempLine);
    end;
  ...
Wäre schön, wenn mir jemand sagen kann, warum das nicht so funktionieren soll.

omata 5. Jan 2005 19:54

Re: Zugriff auf TStrings
 
Moin,

von TStrings wird nur abgeleitet. Die Funktion Count ist dort nur als abstract deklariert und muss in den abgeleiteten Klassen angegeben werden.
TStringList ist von TStrings abgeleitet und stellt alle Methoden zur Verfügung. Nimm also nicht TStrings sondern TStringList (TStrings kann als Typ bei den Übergabeparametern verwendet werden).

ich weiss nicht wie GetAusloesendeEreignisse aussieht, aber dort muss ein TStringlist-Object erzeugt werden.

MfG
Thorsten

blue_RP 6. Jan 2005 09:49

Re: Zugriff auf TStrings
 
Vielen Dank für den Tip. Funktioniert bestens. :spin2:

MfG blue_RP


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