Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   dateinamen merken zum speichern (https://www.delphipraxis.net/57812-dateinamen-merken-zum-speichern.html)

Andreas L. 27. Nov 2005 08:57


dateinamen merken zum speichern
 
Hi,
in meiner Anwendung werden zur Laufzeit Tabsheets auf einen Pagecontrol erzeugt. Auf den Tabsheets befinden sich jeweils ein SynEdit. Jetzt möchte ich eine Funktion einbauen die es ermöglicht ein SynEdit welches bereits abgespeichert wurde oder aus einer vorhandenen Datei geöffnet wurde direkt zu speichern ohne den Speichern-Dialog zu öffnen. Wie ich speichere ist klar:
Delphi-Quellcode:
(PageControl1.ActivePage.Controls[0] as TSynEdit).Lines.SavetoFile(path);
Aber ich muss ja irgendwie erst mal den Pfad rausfinden. Also muss der Pfad beim "Öffnen/Speichern unter" irgendwo gespeichert werden. Und beim direkten Speichern muss dieser Pfad dann benutzt werden. Also dachte ich mir ich nehme eine Listbox und speichere da die Pfade. Listbox-Itemindex entspricht dann pagecontrol-pageindex. Das hat aber zu einer menge Fehlern geführt. Z. B. dieser. Außerdem ist die Lösung nicht wirklich professionell. Klar hätte ich auch eine StringList benutzen können, ändert aber auch nichts and der Sachlage...

Hoffe das man es verstehen kann ;-)

Ich habe auch schon gesucht aber anscheinend verwende ich nicht die korrekten Suchbegriffe!

Weiß jemand wie dieses Problem professionell und einfach gelöst werden kann.

Vielen Dank!

tigerman33 27. Nov 2005 09:30

Re: dateinamen merken zum speichern
 
In der Tag-property des Pagecontrols könntest du einen Zeiger auf den entsprechenden Dateinamen-String speichern:

Delphi-Quellcode:
PageControl1.Tag := @TheFilename;

Andreas L. 27. Nov 2005 09:40

Re: dateinamen merken zum speichern
 
Zitat:

Zitat von tigerman33
In der Tag-property des Pagecontrols könntest du einen Zeiger auf den entsprechenden Dateinamen-String speichern:

Delphi-Quellcode:
PageControl1.Tag := @TheFilename;

Wie genau geht das?

tigerman33 27. Nov 2005 09:58

Re: dateinamen merken zum speichern
 
Genau so wie es da steht. :wink:

TheFilename ist ein String, in dem du den Dateinamen gespeichert hast. Aufpassen: Das darf keine lokale Variable sein, denn deren Speicher würde nach Verlassen der Prozedur/Funktion wieder freigegeben werden. Mit dem @-Operator greifst du auf die Speicheradresse dieses Strings zu. Da das ein 4-Byte cardinal ist, kannst du den ohne Probleme der Tag-property des Tabpage zuweisen. Fällt mir gerade auf: Oben hab ich einen Fehler gemacht. Darf natürlich nicht PageControl1.Tag sein, sonder Tabpage1.Tag (oder wie die pages auch immer heißen).

Zuweisen:
Delphi-Quellcode:
Tabpage1.Tag := @TheFilename;
Auslesen:
Delphi-Quellcode:
type TPString = ^string;
var s: string;
begin
...
if Tabpage1.Tag <> 0 then // entspricht nil
  s := TPString(Tabpage1.Tag)^;
...
end;


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