![]() |
Listbox Speichern, + Listbox und Shellexecute
moin
Also ich habe zwei Probleme: Wenn ich in eienr Listbox Items wie C:\Programme\test.exe d:\Docs\test.doc Stehen habe und die Listbox abspeichern möchte ist das nciht möglich. Weiss jemand, wieih das lösen könnte? Ob Listbox oder TMemo oder TRich is mir egal. Zweites Problem: Habe ich dann die Pfade in der Datei (durch manuelles reinschreiben) läd er die Dateien zwar in die Listbox, aber er führt es nciht aus. weil er Ein anderes Format braucht (als String).
Delphi-Quellcode:
Freue mich über jede hilfe
procedure TForm1.FormCreate(Sender: TObject);
begin if fileexists('conf.cfg') then Listbox1.Items.LoadFromFile('conf.cfg'); end; procedure TForm1.FormShow(Sender: TObject); var i:Integer; begin for i:=0 to Listbox1.Items.count-1 do begin Shellexecute(Handle, nil, Listbox1.Items.Strings[i], nil, nil, SW_SHOW); end; close; end; |
Re: Listbox Speichern, + Listbox und Shellexecute
Delphi-Quellcode:
Shellexecute(Handle, nil, PChar(Listbox1.Items.Strings[i]), nil, nil, SW_SHOW);
|
Re: Listbox Speichern, + Listbox und Shellexecute
Danke für zweitens..
Fehlt nur nch erstens |
Re: Listbox Speichern, + Listbox und Shellexecute
Hai killerkarl,
bitte nur eine Frage pro Thread ;-) bzgl. deines ShellExecute-Problemes -> Ändere es mal in diesen Aufruf:
Delphi-Quellcode:
Was mir aber noch nicht klar ist was das Programm machen soll. Es sieht so aus als wolltest Du damit einfach nur eine Reihe von Programmen starten bzw. Dateien öffnen und es dann automatisch wieder beenden lassen.
Shellexecute(Handle, nil,PAnsiChar(Listbox1.Items.Strings[i]), nil, nil, SW_SHOW);
Dafür brauchst Du aber doch keine solche Anwendung. |
Re: Listbox Speichern, + Listbox und Shellexecute
Also ich möchte ein Programm haben, das sich manuell starten lässt oder mit Windows und dann vorher festgelegte Programme öffnet, und sich dann wieder schlieest
|
Re: Listbox Speichern, + Listbox und Shellexecute
Wenn es einfach nur das tun muss, reicht folgendes:
Delphi-Quellcode:
program Project1;
uses Forms, ShellAPI, Windows; var i: Cardinal; Programme: Array[0..2] of String = ('notepad', 'calc', 'iexplore'); {$R *.res} begin Application.Initialize; Application.Run; for i := 0 to high (Programme) do Shellexecute(Application.Handle, nil, PChar(Programme[i]), nil, nil, SW_SHOW); end. |
Re: Listbox Speichern, + Listbox und Shellexecute
Ja, das wäre schon möglich, nur ich hätte halt gerne ein Config Programm, und ein Programm, das sich selber schliesst für den Autostart.
Ich muss halt nur die Pfade übergeben können. |
Re: Listbox Speichern, + Listbox und Shellexecute
Zitat:
Delphi-Quellcode:
[Edit]Die Konfigurationsdatei kannst Du ja mit einem zweiten Programm bearbeiten.
program Project1;
uses SysUtils, ShellApi, Windows, Classes; {$R *.res} var sl : TStringList; i : Integer; datei : String; begin datei := ExtractFilePath(ParamStr(0)) + 'test.cfg'; if FileExists (datei) then begin sl := TStringList.Create; try sl.LoadFromFile(datei); for i:=0 to Pred(sl.count) do begin Shellexecute(0, nil,PAnsiChar(sl.Strings[i]), nil, nil, SW_SHOW); end; finally sl.free; end; end; end. |
Re: Listbox Speichern, + Listbox und Shellexecute
Zitat:
Also in etwa so:
Delphi-Quellcode:
MfG
program Project1;
{$APPTYPE CONSOLE} uses ShellAPI, Windows; var i: Cardinal; Programme: Array[0..2] of String = ('notepad', 'calc', 'iexplore'); begin for i := 0 to high (Programme) do Shellexecute(0, nil, PChar(Programme[i]), nil, nil, SW_SHOW); end. Binärbaum |
Re: Listbox Speichern, + Listbox und Shellexecute
Ja, danke für die vielen antworten, aber das Problem ist die Bearbeitung der Config Datein...
Der rest ist kein problem.. Wenn man in dem Programm die Programme auswählt, die gestartet werden sollen, weiss ich cniht, wie ich die abspeichere. |
Re: Listbox Speichern, + Listbox und Shellexecute
Zitat:
MfG Binärbaum |
Re: Listbox Speichern, + Listbox und Shellexecute
nur, wie speichere ich eine String Liste?
Combobox ist ja ne String Liste z.B. |
Re: Listbox Speichern, + Listbox und Shellexecute
Steht im Prinzip schon oben im Beitrag von Sharky:
Delphi-Quellcode:
MfG
var sl: TStringlist;
... sl.LoadFromFile('C:\Ordner\test.cfg');//Laden sl.SaveToFile('C:\Ordner\test.cfg');//Speichern Binärbaum |
Re: Listbox Speichern, + Listbox und Shellexecute
So, ich glaube jetzt habe ich mein Problem gefunden..
Wenn ich am anfang die listbox aus einer Datei auslese kann ich sie abspeichern.. Nur sobal ich etwas verändere kann ich sie nciht mehr speichern. Weiss jemand da weiter? Ich könnte zur Not auch ma ldas Projekt verschicken. Egal ob ich vorher die Listbox in eine StringListe schreibe oder die Listbox speichere |
Re: Listbox Speichern, + Listbox und Shellexecute
Kannst du die ListBox nicht mit
Delphi-Quellcode:
abspeichern? Das müsste doch gehen (dann braucht man eigentlich auch keine zusätzliche StringList).
ListBox1.Items.SaveToFile('C:\Ordner\test.cfg');
//Edit: Rechtschreibung ausgebessert |
Re: Listbox Speichern, + Listbox und Shellexecute
Dachte ich auch.. auber aus irgendwelchen Gründen tut er das nicht..
|
Re: Listbox Speichern, + Listbox und Shellexecute
Was heißt, "tut er nicht"?
Kommt eine Exception (wenn ja: Welche)? Oder ist die Datei einfach leer, oder steht nur irgendwelches wirres Zeug in der Datei, oder... |
Re: Listbox Speichern, + Listbox und Shellexecute
er erstellt einfach keine Datei...
|
Re: Listbox Speichern, + Listbox und Shellexecute
Hmmmm, ...
Das könnte verschiedene Ursachen haben, z.B. das man keine Zugriffsberechtigung für die Datei (bzw. das Verzeichnis) hat, oder (was ich nicht glaube) dass der Datenträger voll ist und nicht mehr genug Speicher zur Verfügung steht. Es könnte aber auch "progammiertechnische" Ursachen haben: Wird das Speichern z.B. in einer if-Anweisung gekapselt, kann es sein, dass durch einen Logik-Fehler die Anweisung (d.h. Speichern) niemals ausgeführt wird. Oder die Ereignisprozedur, in der das Speichern geschehen soll wird nie aufgerufen, weil das zugehörige Ereignis nicht ausgelöst wird. Oder... Das ist wirklich schwierig zu sagen, woran es liegt. Ging es denn vorher? Falls ja: was hast du seitdem am Quelltext geändert? |
Re: Listbox Speichern, + Listbox und Shellexecute
Ich schließe alles aus, denn wenn ich nichts verändere in der Listbox speichert das Porgramm sie ab, wenn ich etwas veränder z.B. hinzufüge und wieder lösche, sodass die datei gleich aussieht speichert es es nicht.
|
Re: Listbox Speichern, + Listbox und Shellexecute
Tja, da wäre etwas Quellcode schon nützlich, um das Problem zu beheben. Sonst kann man da auch nur Vermutungen anstellen.
MfG Binärbaum |
Re: Listbox Speichern, + Listbox und Shellexecute
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin if fileexists('conf.cfg') then Listbox1.Items.LoadFromFile('conf.cfg'); end; procedure TForm1.HinzuClick(Sender: TObject); begin if opendialog1.execute then Listbox1.Items.Add(Opendialog1.FileName); end; procedure TForm1.loescheClick(Sender: TObject); begin Listbox1.Items.Delete(Listbox1.Itemindex); end; procedure TForm1.SaveClick(Sender: TObject); begin listbox1.Items.SaveToFile('t.cfg'); //Um zu testen ob er die Datei schreibt, wenn ich nichts verändere. end; procedure TForm1.ResetClick(Sender: TObject); begin if fileexists('conf.cfg') then Listbox1.Items.LoadFromFile('conf.cfg') else Listbox1.Clear; end; |
Re: Listbox Speichern, + Listbox und Shellexecute
Also ich kann da keinen Fehler entdecken. Das einzige Problem, das auftauchen könnte, ist in der Zeile
Delphi-Quellcode:
Dort könnte ItemIndex kleiner als null sein (was evtl. am Anfang der Fall sein kann, da der Vorgabewert -1 ist). Wenn man dann versucht diesen (nicht vorhandenen) Eintrag aus der ListBox zu löschen, könnte evtl. ein (interner) Fehler auftreten, der die ListBox dazu veranlasst, später nicht mehr richtig zu speichern.
Listbox1.Items.Delete(Listbox1.Itemindex);
Das ist aber auch nur eine Vermutung. Meines Erachtens enthält diese Stück Quelltext sonst keine Fehler. MfG Binärbaum |
Re: Listbox Speichern, + Listbox und Shellexecute
Naja, schade....
Das ist kein Fehler.. er löscht dann einfach nichts. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 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