| Dotter hat folgendes geschrieben: |
Quelltext 1:
| deletefile(Combobox1.text); // Funktioniert NICHT obwohl im Watch 'makro1' steht. | |
Das stimmt nicht! Ich hab´s mal eben ausprobiert. Die Datei wird problemlos gelöscht -
solange ich das
Arbeitsverzeichnis nicht ändere, bzw. solange dieses Arbeitsverzeichnis zufällig der Ordner mit dem Delphi-Projekt ist! Ausprobieren:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TMakro.DeleteClick(Sender: TObject); begin SetCurrentDir('c:\');
deletefile(Combobox1.text); deletefile('makro1'); Combobox1.DeleteSelected; Combobox1.items.SaveToFile('Makros.dat'); end; |
Da ich davon ausgehe, dass sich deine Makro-Dateien nicht im Root der Festplatte C:\ befinden, wirst du diesmal auch mit
Quelltext
schlechte Karten haben.
Was dir alle anderen die ganze Zeit sagen wollen, und was du -trotz angeblich vorhandener Erfahrungen in der Programmierung!- nicht zu verstehen scheinst, ist: du
solltest den kompletten Pfad angeben! Wenn sich diese Makrodateien im selben Ordner wie dein Programm befinden, dann genügt
Quelltext
1:
| DeleteFile(ExtractFilePath(paramstr(0)) + Combobox1.Text); |
und es spielt absolut keine Rolle, welcher Ordner gerade als aktuelles Arbeitsverzeichnis eingestellt ist.
Und was bei vorhandener Programmiererfahrung auf keinen Fall passieren darf, ist die MISSACHTUNG von Funktionen und ihren Ergebnissen. Wenn ich mir den Beispielcode so ansehe, dann bemerke ich zwei grundsätzliche Fehler.
1. Man kann und sollte prüfen, ob die Combobox überhaupt Text enthält.
2. Es ist dir vollkommen egal, ob das Löschen der Datei geklappt hat oder nicht. Das ausgewählte Item wird in jedem Fall aus der Combobox entfernt, und die "makros.dat" wird dann auch neu gespeichert.
Ich persönlich hätte es so gemacht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| with ComboBox1 do if(Text <> '') and (DeleteFile(ExtractFilePath(paramstr(0)) + Text)) then begin Items.Delete(ItemIndex); ItemIndex := 0; Items.SaveToFile('makros.dat'); end else ShowMessage('Datei nicht gefunden'); |