Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FreePascal [gelöst] Lazarus: SaveToFile geht nicht (https://www.delphipraxis.net/183976-%5Bgeloest%5D-lazarus-savetofile-geht-nicht.html)

DeddyH 17. Feb 2015 13:51

AW: Lazarus: SaveToFile geht nicht
 
Wo gibst Du die Liste wieder frei?

BadenPower 17. Feb 2015 13:53

AW: Lazarus: SaveToFile geht nicht
 
Schmeiss einmal den ganzen Code rüber.

Ich hab es beim mir unter Lazarus getestet und es funktioniert perfekt.

Wahrscheinlich löst noch etwas Anderes den Fehler aus.
Das ist nur eine Vermutung, denn auch Deine Diagnose der Fehlerstelle beim StringGrid.RowCount ist falsch gewesen.

Kralle 17. Feb 2015 13:56

AW: Lazarus: SaveToFile geht nicht
 
Moin,

Zitat:

Zitat von mjustin (Beitrag 1290202)
Wird der richtige Inhalt der StringList im Debugger angezeigt bevor der SaveToFile Aufruf stattfindet?

Hmm, gute Frage. Irgendwie bekomme ich es in Lazarus nicht hin, das mir der Inhalt von sl bei den Überwachten Ausdrücken angezeiigt wird.
Kannst Du helfen?

@DeddyH: Die Liste gebe ich hier wiedwer frei:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
    sl.free;
end;
Gruß Heiko

Kralle 17. Feb 2015 13:58

AW: Lazarus: SaveToFile geht nicht
 
Was mich verwirrt ist der Inhalt von
Delphi-Quellcode:
SaveDialog1.FileName
dem dem Schliessen des Dialoges.
Zitat:

<Error: A syntax error in expression, near 'FileNAme'.>
Heiko

DeddyH 17. Feb 2015 13:59

AW: Lazarus: SaveToFile geht nicht
 
FormCloseQuery ist die völlig falsche Stelle. Was man im FormCreate erzeugt, gibt man i.A. erst im FormDestroy wieder frei.

Kralle 17. Feb 2015 14:05

AW: Lazarus: SaveToFile geht nicht
 
Moin,

Zitat:

Zitat von BadenPower (Beitrag 1290208)
Schmeiss einmal den ganzen Code rüber.

Nicht mehr nötig.

Erst wurde die StringList in einer ButtonClick-Ereignis-Behamndlungsprocedure
Erzeugt und nach einem finally wieder freigegeben.

Leider habe ich nur einen Teil davon ausgelagert, so das die StringList doch vor dem Speichern ein Free bekam.

Fehler gefunden. Danke für Eure schnelle Hilfe.

Das Free habe ich ins Destroy verschoben.

Gruß HEiko

himitsu 17. Feb 2015 14:09

AW: [gelöst] Lazarus: SaveToFile geht nicht
 
Warum heißt das "sl"?

Und wieso ist das global?

BadenPower 17. Feb 2015 14:17

AW: [gelöst] Lazarus: SaveToFile geht nicht
 
Ausserdem solltest Du noch Deine Schleife aus dem anderen Post von:
Delphi-Quellcode:
   StringGrid1.RowCount:=sl.count+StringGrid1.FixedRows;
    for i := 0 to sl.count-1 do
        begin
         StringGrid1.Rows[i+1].StrictDelimiter := True;
         StringGrid1.Rows[i+1].CommaText:=sl.Strings[i];
   end;
auf:

Delphi-Quellcode:
   StringGrid1.RowCount := sl.count + StringGrid1.FixedRows;
    for i := 0 to sl.count-1 do
        begin
         StringGrid1.Rows[i+StringGrid1.FixedRows].StrictDelimiter := True;
         StringGrid1.Rows[i+StringGrid1.FixedRows].CommaText:=sl.Strings[i];
   end;
ändern.

Denn wenn Du im OI die Property FixedRows des Stringgrids änderst, dann würde es bei Deiner Variante wieder zum Fehler kommen.

Kralle 17. Feb 2015 14:51

AW: [gelöst] Lazarus: SaveToFile geht nicht
 
Zitat:

Zitat von BadenPower (Beitrag 1290216)

Delphi-Quellcode:
   StringGrid1.RowCount := sl.count + StringGrid1.FixedRows;
    for i := 0 to sl.count-1 do
        begin
         StringGrid1.Rows[i+StringGrid1.FixedRows].StrictDelimiter := True;
         StringGrid1.Rows[i+StringGrid1.FixedRows].CommaText:=sl.Strings[i];
   end;
ändern.

Denn wenn Du im OI die Property FixedRows des Stringgrids änderst, dann würde es bei Deiner Variante wieder zum Fehler kommen.

Okay, danke für den Hinweis. Habe das sofort umgesetzt.

Gruß Heiko

Kralle 17. Feb 2015 14:55

AW: [gelöst] Lazarus: SaveToFile geht nicht
 
Moin,

Zitat:

Zitat von himitsu (Beitrag 1290215)
Warum heißt das "sl"?

Weil
Delphi-Quellcode:
StringListen
irgendwie hier in den Beispielen immer "sl" heißen.

Zitat:

Zitat von himitsu (Beitrag 1290215)
Und wieso ist das global?

Weil ich mein StringListe nicht in einer Procedure/Funktion definiere sondern halt global.

Gruß Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Seite 2 von 3     12 3      

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