Autor |
Beitrag |
Jagg
Beiträge: 635
|
Verfasst: Mi 24.07.02 09:18
Hallo,Leute !
Ich habe eine ComboBox und daraus wähle ich den Namen einer Tabelle z.b. Test.dbf !
Ich will die Tabelle jetzt löschen !
Wie mache ich das ?
Jagg !
PS : Er soll genau den die Tabelle löschen,die ich ausgewählt habe
|
|
wwerner
Beiträge: 185
|
Verfasst: Mi 24.07.02 09:25
deletefile(combobox1.items[combobox.itemindex]);
_________________ Gruß
Wolfgang
----------
zu hause ist es doch am schönsten
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 24.07.02 09:39
Direkt nach dem Löschen würde ich natürlich auch noch den Eintrag in der ComboBox löschen.
Außerdem dem sollte man vor dem Löschen noch Prüfen ob ein Eintrag aus der ComboBox ausgewählt ist. Ansonsten bekommst bei dem Code-Beispiel von Werner einen kleinen Fehler.
Gruß
TINO
|
|
Jagg
Beiträge: 635
|
Verfasst: Mi 24.07.02 09:39
er löscht nicht,aber er sagt auch keine fehlermeldung !
|
|
wwerner
Beiträge: 185
|
Verfasst: Mi 24.07.02 09:46
wahrscheinlich muß noch der pfad dazu
_________________ Gruß
Wolfgang
----------
zu hause ist es doch am schönsten
|
|
Jagg
Beiträge: 635
|
Verfasst: Mi 24.07.02 09:52
Mein pfad ist : C:\Nguyen\Sonstige\Mailimg Service\Datenbank
Und wo tue ich das jetzt hin ????
Hab noch nie mit deletefile gearbeitet !
Jagg !
|
|
wwerner
Beiträge: 185
|
Verfasst: Mi 24.07.02 09:55
Auf diese Frage antworte ich: Lies einfach einmal in der Hilfe unter deletfile
_________________ Gruß
Wolfgang
----------
zu hause ist es doch am schönsten
|
|
Jagg
Beiträge: 635
|
Verfasst: Mi 24.07.02 10:12
Deletefile('C:\Nguyen\Sonstige\Mailing Service\Datenbank'[Combobox1.Itemindex]);
ist das so richtig ??? er löscht aber alles !
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 24.07.02 11:51
Nein.
Die Methode DeleteFile erwartet als Parameter einen Dateinamen. Wenn Du mal DeleteFile eingibst und F1 drückst bekommt Du Infomationen zu dieser Funktion. Unter anderem auch den Hinweis wie diese Funktion definiert ist und somit welche Parameter erwartet werden:
Delphi-Hilfe hat folgendes geschrieben: | function DeleteFile(const FileName: string): Boolean; |
Dadurch siehst Du jetzt das es sich bei der Methode DeleteFile um eine Funktion handelt die als Ergebnis ein Boolean-Wert zurückliefert und einen Paramter erwartet.
Das heißt jetzt das der folgende Aufruf z. B. die Datei z:\test.txt löscht:
Quelltext 1: 2: 3: 4:
| If DeleteFile ('z:\test.txt') { = True} Then { Datei gelöscht } Else { Fehler } | Das "Problem" ist nun das Du statt der Angabe z:\test.txt den Eintrag aus der ComboBox und zusätzlich die Pfadangabe benötigst. Wie Du den markierten oder auch engetragenen Text aus der ComboBox bekommst steht auch in der Online-Hilfe und in dem Beitrag von Werner.
Gruß
|
|
wwerner
Beiträge: 185
|
Verfasst: Mi 24.07.02 11:59
Nur noch ein Hinweis: Du solltest keine Pfadangabe hardcodieren. Was ist wenn das Programm auf d: läuft? Auserdem bekommst du die Zeile da oben gar nicht übersetzt. Kannst du inzwischen mit den Debugger umgehen?
_________________ Gruß
Wolfgang
----------
zu hause ist es doch am schönsten
|
|
Jagg
Beiträge: 635
|
Verfasst: Do 25.07.02 08:16
also,wenn ich das jetzt richtig verstehe !
Ich darf also nicht den pfad mit eingeben,weil der programm eventuell auch auf einem anderen pfad laufen kann !
Aber wie mache ich das denn wenn ohne pfad,also ich blick da gar nicht mehr durch !
Mit dem Debugger kann ich jetzt umgehen,also zeile für zeile analysieren !
Jagg !
|
|
Jagg
Beiträge: 635
|
Verfasst: Do 25.07.02 08:18
Ich habe bisjetzt so :
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm3.Button2Click(Sender: TObject); begin if ComboBox1.ItemIndex <> -1 then begin if DeleteFile ('ComboBox1.Items[ComboBox1.ItemIndex]') then begin end; end; end; |
Wie füge ich denn jetzt da ein ????
Was muss ich noch machen ???
Jagg !
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 25.07.02 09:25
Hallo Jagg,
bei Deinem Code versucht DeleteFile jetzt die Datei mit dem Name " ComboBox1.Items[ComboBox1.ItemIndex] zu löschen. Das ist natürlich falsch.
Hier mal 4 Beispiele die letztendlich alle das gleich machen. Nur halt mit dem Unterschied das mal dierekt eine Datei angegeben wurde und mal durch eine oder zwei Variablen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| // Löscht die Datei Test.txt auf Laufwerk C im Verzeichni Program DeleteFile ('c:\Program\test.txt');
// Löscht die Datei die durch die Variable Filename angegeben ist Filename := 'c:\Program\Test.txt'; DeleteFile (Filename);
// Löscht die Datei Filename im Verzeichnis Path Filename := 'Test.txt'; Path := 'c:\Program\'; DeleteFile (Path + Filename);
// Löscht die Datei Filename im Verzeichnis 'c:\Program' Filename := 'Test.txt'; DeleteFile ('c:\Program\' + Filename); |
Hast Du das soweit verstanden? Wenn nicht dann frag noch mal nach ansonsten bekommst Du das in Deinem Programm nicht hin.
Gruß
TINO
|
|
Jagg
Beiträge: 635
|
Verfasst: Do 25.07.02 09:30
Hey,das versteh ich schon aber eer soll den aushewählten namen aus der combobox löschen !
Wie mache ich das denn ?
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 25.07.02 09:37
Dann ist es doch relativ einfach. Nimm das 3. Beispiel von oben also den hier:
Quelltext 1: 2: 3: 4:
| // Löscht die Datei Filename im Verzeichnis Path Filename := 'Test.txt'; Path := 'c:\Program\'; DeleteFile (Path + Filename); |
Jetzt musst Du nur noch die Variable Filename den Wert aus der ComboBox zuweisen. Wie Du den Wert bekommst steht in dem ersten Posting von Werner. Die Varibale Path kannst Du erstmal zum Testen direkt das Verzeichnis das Du in Deinem 3. Posting gepostet hast zuweisen (aber zustätzlich mit einem abschließenden Backslash).
Fertig
|
|
Jagg
Beiträge: 635
|
Verfasst: Do 25.07.02 09:46
ich habe es so gemacht,aber es geht trotzdem nicht !
Was mache ich nur falsch !
Quelltext 1: 2: 3: 4: 5: 6:
| if ComboBox1.ItemIndex <> -1 then begin Filename := (ComboBox1.Items[ComboBox1.ItemIndex]); Path := 'C:\Nguyen\Sonstige\Mailing Service\Datenbank\'; DeleteFile (Path + Filename); end; |
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 25.07.02 09:53
Das sieht doch schon recht gut aus! Jetzt pack noch die Klammern bei der Zuweisung der Variable Filename weg und schon sollte es funktionieren!
Gruß
TINO
Zuletzt bearbeitet von Tino am Do 25.07.02 09:54, insgesamt 1-mal bearbeitet
|
|
wwerner
Beiträge: 185
|
Verfasst: Do 25.07.02 09:53
Hi,
Das mit dem Path war so gemeint, das du zur Laufzeit ermitteln sollst wo dein Programm läuft:
Quelltext 1:
| path := ExtractFilePath(application.ExeName); |
wenn jetzt deine Datenbanken z.B. in Verzeichnis Datenbanken liegen mußt du noch folgendes machen:
Quelltext 1:
| path := ExtractFilePath(application.ExeName)+'Datenbanken\' |
_________________ Gruß
Wolfgang
----------
zu hause ist es doch am schönsten
|
|
Jagg
Beiträge: 635
|
Verfasst: Do 25.07.02 09:57
Hey tino,es sollte gehen aber es geht nicht ich habe jetzt die klammern bei der Zuweisung für Filename weggelassen !
Jagg !
|
|
Tino
Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 25.07.02 10:02
Und wo klappt was nicht? Gibt es eine Fehlermeldung wenn ja welche wenn nicht dann setz doch mal einen Breakpoint auf Zeile DeleteFile und schaue Dir dann mal die Werte der Variablen (Filename & eventl. Path) an (einfach mit der Maus auf die Variable zeigen und schon siehste den Wert) und kontrolliere ob diese richtig sind.
Gruß
|
|