Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi blockade durch opendialog (https://www.delphipraxis.net/20796-blockade-durch-opendialog.html)

gwxxl 23. Apr 2004 11:12


blockade durch opendialog
 
Hallo,

ich versuche gerade mich nen bisle in Delphi einzuarbeiten und mache dazu einen Programm-Manager!
Eine Funktion dabei ist es, dem benutzer einen Button zu bieten, mit dem er eine *.Exe auswählen kann. Von der ausgewählten Datei wird aber nur der Pfad+Dateiname gebraucht, den ich dann in ein Edit lade und in einem Array Speichere.

Zum schluss, falls man auf 'Speichern' drückt, sollten dann alle Daten aus dem Array in eine StringListe geladen werden und wieder in die data.dat gespeichert werden.

Jetzt ist passiert, dass wenn man den OpenDialog benutzt, anstatt den Pfad manuell einzugeben, die betroffene Anwendung zwar in der StringListe gespeichert wird, aber eben nicht in der data.dat.

Hier noch ein paar Code-Schnipsel:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
begin
if OpenDialog1.Execute then
 Edit2.Text:=OpenDialog1.FileName; // hier schreibt er den pfad+datei in ein edit
end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var datafile:TStringList; m:integer;
begin
 datafile:=TStringList.create;
 for m:=0 to high(programme) do begin
  datafile.Add(programme[m].name+';'+programme[m].adresse); // hier holt er die ganzen Programme aus dem array und speichert sie in der stringlist, bis sie schließlich gespeichert werden
 end;
 datafile.SaveToFile(filename); //filename is ne globale konstante
end;
Er speichert wie gesagt alles super, nur wenn ich den OpenDialog benutzte, hört er auf.

Bitte helft mir! :mrgreen:

mfg gwxxl

Sharky 23. Apr 2004 11:22

Re: blockade durch opendialog
 
hai gwxxl,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXIS".

Zwei Fragen:

a) Wo gibst Du deinen Stringliste wieder frei? (try-finally)
b) Wie kommen der Inhalt aus deinem Edit2.Text in deinen Record programme?

gwxxl 23. Apr 2004 11:24

Re: blockade durch opendialog
 
a) *g*ar nicht :oops:
b)
Delphi-Quellcode:
// liste laden
daten:=TStringList.create;
  daten.LoadFromFile(filename);
  if daten.count > 0 then BEgin
   listbox1.Clear;
   setlength(programme,daten.Count);
   for i:=0 to (daten.count-1) do BEGin
    programme[i]:=teile(daten[i]);
    listbox1.items.add(programme[i].name);
   END;
  ENd;

//übergabe an programme
  programme[m].adresse:=Edit2.Text;
ich lad die datei erst in ne stringlist ein und speicher sie dann iner listbox und dem array

gwxxl 23. Apr 2004 11:28

Re: blockade durch opendialog
 
achso, programme is nen array of record mit 2 strings ;)

dann hier noch die treilenfunktion, da die daten so abgespeichert sind: "name;adresse\n name;adresse\n..."
Delphi-Quellcode:
function teile(s:string):TProgramm;
var
 j:integer;
 p:TProgramm;
begin
 j:=0;
 while (s[j]<>';') and (j<length(s)) do
  begin j:=j+1; p.name:=p.name+s[j]; end;
  setlength(p.name,j-1);

 while j<length(s) do
  begin j:=j+1; p.adresse:=p.adresse+s[j]; end;

 result:=p;
end;

gwxxl 23. Apr 2004 14:11

Re: blockade durch opendialog
 
*schieb* :twisted:

Matze 23. Apr 2004 14:22

Re: blockade durch opendialog
 
:warn: Nach so kurzer Zeit diesen Post nach oben zu schieben ist nicht gerade sehr höflich... :?

:dp:


Edit: Noch Herzlich willkommen in der DP! :)
Edit2: Ups, hat Sharky ja auch schon gesagt. :angle2:

gwxxl 23. Apr 2004 14:24

Re: blockade durch opendialog
 
bin halt nen ungeduldiger schüler :angle2:

Edit: DP-Rules gelesen :shock:

Hab nochn bisle rumexperimentiert:
Es funktioniert alles wunderbar bis ich den opendialog einmal ausführe, also eine datei auswähle. danach läd zwar alles noch in die stringlist rein, speichert aber nichts mehr.

gwxxl 24. Apr 2004 17:28

Re: blockade durch opendialog
 
Also nochmal folgendes Problem:

Ich speichere Daten aus einer TSTringList in eine Datei. Wenn ich aber im Programm den OpenDialog ausführe und eine Datei auswähle, dann funktioniert das Speichern auf einmal nicht mehr.

Bitte helft mir! ;)

mfg

Christian Seehase 24. Apr 2004 18:57

Re: blockade durch opendialog
 
Moin gwxxl,

also wenn ich mir Dein erstes Posting so anschaue, habe ich ein kleines Verständnisproblem:
Gespeichert wird danach an der Stelle, auf die der Inhalt der globlen Konstanten filename verweist, der aus dem OpenDialog gezogene Pfad wird nur in ein Edit geschrieben.
Wie kommt jetzt der Pfad in die Konstante?

Eine grundsätzliche Sache noch:
Einen Bezeichner zu deklarieren, den es auch schon als Eigenschaftsnamen gibt (in diesem Falle die Konstante Filename) kann u.U. zu Problemen im Programm führen, mal abgesehen davon, dass man selber durcheinander kommen kann.

gwxxl 25. Apr 2004 12:11

Re: blockade durch opendialog
 
Hallo,

ich hab die Konstante filename jetzt mal in datafilename umbenannt - es funktioniert trotzdem nicht.

Die Konstante datafilename hab ich im Hauptprogramm nach type definiert und ja - der filepath vom OpenDialog wird einfach nur in ein Edit geschrieben. Aus dem Edit wird nach einem weiteren Klick dieser Pfad in einen Array geschrieben und mit dem Speichern aus dem Array in eine StringListe, die dann per .savetofile(datafilename) gespeichert werden soll. Nach wie vor: Wenn ich den OpenDialog ausführe, geht das Speichern nicht mehr.

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.
Seite 1 von 2  1 2      

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