Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TabelleName aus einer ComboBox löschen !
Jagg - Mi 24.07.02 09:18
Titel: TabelleName aus einer ComboBox löschen !
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 - Mi 24.07.02 09:25
deletefile(combobox1.items[combobox.itemindex]);
Tino - 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 - Mi 24.07.02 09:39
er löscht nicht,aber er sagt auch keine fehlermeldung !
wwerner - Mi 24.07.02 09:46
wahrscheinlich muß noch der pfad dazu
Jagg - 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 - Mi 24.07.02 09:55
Auf diese Frage antworte ich: Lies einfach einmal in der Hilfe unter deletfile
Jagg - 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 - 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 - 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?
Jagg - 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 - 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 - 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 - 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 - 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 - 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 - 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
wwerner - 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\' |
Jagg - 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 - 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ß
wwerner - Do 25.07.02 10:06
Jetzt ist es zeit für den Debugger
Das ausführen und schrittweise durchgehen
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if ComboBox1.ItemIndex <> -1 then begin Filename := ComboBox1.Items[ComboBox1.ItemIndex]; Path := ExtractFilePath(application.ExeName)+'Datenbanken\'; if DeleteFile (Path + Filename) then Showmessage('gelöscht') else Showmessage('Fehler'); end; |
Jagg - Do 25.07.02 10:10
Hey tino bei deletefile muss das hin !
Quelltext
1:
| DeleteFile (Path + Filename + '.dbf'); |
trotzdem danke !
Jagg - Do 25.07.02 10:12
wie mache ich jetzt das er den namen aus der combobox löscht !
Mit combobox.clear geht das nicht,dann löcht er ja alle,aber ich will ja nur den gelöschten namen weghaben aus der comboBox !
Jagg !
wwerner - Do 25.07.02 10:21
Wie fügst du ein? Wahrscheinlich mit Combobox1.items.add....
Was hälst du zum löschen von Combobox1.items.delete?
Tino - Do 25.07.02 10:31
Jagg hat folgendes geschrieben: |
Hey tino bei deletefile muss das hin ! |
Da siehste wie viel Du doch selbst mit dem Debugger herausfinden kannst :-D
Gruß
Jagg - Do 25.07.02 10:46
ok,ich habe es jetzt alles
danke für eure hilfe und für eure feduld mit mir !
jagg !
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!