![]() |
speicherpfad als variable
hallo
ich möchte gerne den speicherpfad ('C:\\data.txt') in einer Form3 ändern und speichern. wie könnte ich das ungefähr machen? dass ich den Form3.Edit1.TExt in einem Form1.Label9.Caption speichere und der var x das Caption von Label9 zuweise? z.B so?
Delphi-Quellcode:
Form3:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,x: String; begin a:=Combobox1.Text; b:=Combobox2.Text; c:=Edit1.Text; d:=Edit2.Text; e:=Combobox3.Text; x:=Label9.Caption; if length(Combobox1.Text)+length(Combobox2.Text) + length(Edit1.Text) + length(Edit2.Text) + length(Combobox3.Text) < 39 then ShowMessage('Could not login!') else ListBox1.Items.Add(Combobox1.text); ListBox1.Items.Add(Combobox2.text); ListBox1.Items.Add(Edit1.text); ListBox1.Items.Add(Edit2.text); ListBox1.Items.Add(Combobox3.text); ListBox1.Items.SaveToFile(x); ShowMessage('User successfully logged in!'); Close; end; procedure TForm1.FormCreate(Sender: TObject); begin if fileexists(x) then ListBox1.Items.LoadFromFile(x);
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin Form1.Label9.Caption := Edit1.Text; Close; end; |
Re: speicherpfad als variable
Es dürfte reichen wenn du in der Unit1 eine globale Variable einsetzt. In der kannst du dir dann den Pfad merken.
|
Re: speicherpfad als variable
und wie macht man das? :lol: :gruebel:
ich schaffe jetzt, dass die datei 1mal unter dem neuen pfad gespeichert wird. ich möchte, dass die datei aber danach immer unter dem neuen pfad gespeichert wird, ausser der pfad wird geändert. mein qt jetzt: Form1:
Delphi-Quellcode:
Form3:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,x: String; begin a:=Combobox1.Text; b:=Combobox2.Text; c:=Edit1.Text; d:=Edit2.Text; e:=Combobox3.Text; if length(Combobox1.Text)+length(Combobox2.Text) + length(Edit1.Text) + length(Edit2.Text) + length(Combobox3.Text) < 39 then ShowMessage('Could not login!') else begin x:=Form3.Edit1.Text; ListBox1.Items.Add(Combobox1.text); ListBox1.Items.Add(Combobox2.text); ListBox1.Items.Add(Edit1.text); ListBox1.Items.Add(Edit2.text); ListBox1.Items.Add(Combobox3.text); ListBox1.Items.SaveToFile(x); ShowMessage('User successfully logged in!'); Close; end; end; procedure TForm1.FormCreate(Sender: TObject); var x: String; begin if fileexists(x) then ListBox1.Items.LoadFromFile(x); end;
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var x: String; begin x:= Edit1.Text; Close; end; procedure TForm3.FormCreate(Sender: TObject); begin x:=Form3.Edit1.Text; end; |
Re: speicherpfad als variable
Wie du eine globale Variable deklarierst?
Delphi-Quellcode:
in der Unit3 kannst du die dann verwenden. Um Konflikte zu vermeiden kannst du auch schreiben UNIT1.DIR
[...]
var form1:tform1; <-- Hier einfügen: Dir:string; [...] |
Re: speicherpfad als variable
das habe ich schon davor gemacht...
ich möchte , dass sich der pfad nicht bei jedem neuen programmstart auf 'C:\\data.txt' zurücksetzt. wie kann ich das machen? |
Re: speicherpfad als variable
Wenn du die Variable nicht explizit am Anfang einer procedure/function definierts, sondern am Anfang der Unit. Dann ist sie in jeder procedure/function lesbar und beschreibbar. Also:
Delphi-Quellcode:
Also, nun sollt's klappen.
unit Unit1;
interface uses Windows, Messages, SysUtils, ...; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Test: String; //<--- ENTWEDER hier deklarieren, dann ist sie global ... implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Test: String;//<--- ... ODER hier dann gilt sie nur innerhalb der procedure begin Test:= 'Hurra!'; end; |
Re: speicherpfad als variable
Du kannst den Pfad in einer Datei speichern,
oder aber immer auf den Pfad der Projekt-Dateien setzen.
Delphi-Quellcode:
OpenDialog1.InitialDir:= GetCurrentDir;
|
Re: speicherpfad als variable
geht das nicht auch ohne datei?
dass ich den pfad bei Form.Close einfach in ein Label(unsichtbar) speichere??? vielen dank |
Re: speicherpfad als variable
Nee, der Text des Labels bleibt doch nur zur Laufzeit bestehen, wie willst du dann bei einem neuen Programmstart den Text aus deinem (unsichtbaren ... ?) Label auslesen?
Den musst du schon irgendwie speichern, Datei oder Registry. Oder versteh ich dich nur nicht?? |
Re: speicherpfad als variable
Ohne Datei geht es diesbezüglich dass du den Wert in die Registry speicherst.
Delphi-Quellcode:
allerdings haben viele User was dagegen wenn irgendwelche Programme was in ihre Registry speichern, weil die Registry komplett in den RAM geladen ist und wenn sie vergrößert wird eben auch der RAM-Bedarf steigt bzw. die Performance sinkt. Aber dazu gibt es eine Unmenge an Diskussionen.
uses
..., registry, [...] ///speichern var R: TRegistry; begin R := TRegistry.Create(KEY_WRITE); try R.RootKey = HKEY_CURRENT_USER; R.OpenKey('Software\mr-unbekannt_software\programm1\', True); R.WriteString('Pfad',STRINGDENDUSPEICHERNWILLST); finally R.Free; end; end; ///laden var R: TRegistry; begin R := TRegistry.Create(KEY_READ); try R.RootKey = HKEY_CURRENT_USER; R.OpenKey('Software\mr-unbekannt_software\programm1\', False); STRINGVARIABLE:=R.ReadString('Pfad'); finally R.Free; end; end; Speichern in eine Datei:
Delphi-Quellcode:
//Speichern
var t:textfile; begin assignfile(t,changefileext(application.exename,'.ini')); rewrite(t); writeln(t,STRINGDENDUSPEICHERNWILLST); closefile(t); end; //Laden //Speichern var t:textfile; begin assignfile(t,changefileext(application.exename,'.ini')); if not fileexists(changefileext(application.exename,'.ini')) then exit; reset(t); readln(t,STRINGVARIABLE); closefile(t); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz