Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStrings Probleme (https://www.delphipraxis.net/18961-tstrings-probleme.html)

Taladan 26. Mär 2004 17:13


TStrings Probleme
 
Hallo. Ich habe ein Memofeld per Stream abgespeichert und in einen Stream abgespeichert. Das auslesen klappt auch wunderbar über das Memofeld. Jedoch möchte ich nun an die Stringliste auch OHNE MemoFeld heran kommen. Wie geht das? Hier meine Idee.

Delphi-Quellcode:
procedure TFormDateneingabeBuecher.TabelleMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var ACol, ARow: longint;
    Hint : String;
    StringList : TStrings;
    MemoryList : TMemoryStream;
begin
     Tabelle.MouseToCell(X, Y, ACol, ARow);
     if (ACol = 3) then
     begin
          Hint := Tabelle.Cells[0, ARow];
          Buecher[Tabelle.Row].Langbeschreibung.Position := 0;
          MemoryList := TMemoryStream.Create;
          MemoryList.LoadFromStream(Buecher[Tabelle.Row].Langbeschreibung);

          StringList := TStrings.Create; //Mit und ohne diese Zeile gibt es eine Fehlermeldung
          MemoryList.Position := 0;
          StringList.LoadFromStream(MemoryList);

          Tabelle.Hint:=Hint;
          if (ACol<>LastCol) or (ARow<>LastRow) then
          begin
               Application.CancelHint;
               LastCol:=ACol;
               LastRow:=ARow;
          end;
          MemoryList.Free;
          StringList.Free;
     end;
end;

Bernhard Geyer 26. Mär 2004 17:18

Re: TStrings Probleme
 
Wieso der umweg über MemoryStream?
Und statt TStrings.Create einfach TStringsList.Create; - TStrings ist eine abstrakte Klasse!

Code:
procedure TFormDateneingabeBuecher.TabelleMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var ACol, ARow: longint;
    Hint : String;
    StringList : TStrings;
begin
     Tabelle.MouseToCell(X, Y, ACol, ARow);
     if (ACol = 3) then
     begin
          Hint := Tabelle.Cells[0, ARow];
          Buecher[Tabelle.Row].Langbeschreibung.Position := 0;

          StringList := TStringsList.Create;
          StringList.LoadFromFile(Buecher[Tabelle.Row].Langbeschreibung);

          Tabelle.Hint:=Hint;
          if (ACol<>LastCol) or (ARow<>LastRow) then
          begin
               Application.CancelHint;
               LastCol:=ACol;
               LastRow:=ARow;
          end;
          StringList.Free;
     end;
end;


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