| Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 04.09.09 13:56
Hi, Delpher,
der folgende renamefile-Befehl funzt nicht:
Delphi-Quelltext 1: 2:
| if renamefile(label30.Caption+ 'SchuelerA.dbf', label30.caption+ 'schueold.dbf') then showmessage('Datei wurde in schueold.dbf umbenannt'); |
Wer weiß, warum?
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 04.09.09 14:03
Moin!
AFAIR übergibt man als Zieldateinamen (2. Parameter) nur den Namen, ohne Pfad.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 04.09.09 14:05
Fehlende Rechte oder dergleichen? Ich denke, Du bekommst nähere Informationen, wenn Du statt RenameFile MoveFile verwendest. Geht das schief, kannst Du mit GetLastError ermitteln, woran es liegt.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 04.09.09 14:07
Danke, Narses !  !
--- Moderiert von Narses: Beiträge zusammengefasst---
OOPS! zu früh gefreut!
Ich habe jetzt sogar den ersten Pfad weggenommen, aber es geht immer noch nicht!
Bleibt noch DeddyH's Lösungsvorschlag - fehlende Rechte sind es in meinem Fall nicht.
Melde mich wieder, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 04.09.09 14:27
Moin!
D. Annies hat folgendes geschrieben : | | Ich habe jetzt sogar den ersten Pfad weggenommen, aber es geht immer noch nicht! |
Das ist natürlich unfug, die umzubenennende Datei sollte schon vollqualifiziert sein.
D. Annies hat folgendes geschrieben : | | OOPS! zu früh gefreut! |
Die Quelldatei darf nicht im (exklusiven) Zugriff sein und die Zieldatei darf nicht bereits vorhanden sein.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 04.09.09 14:42
Im Label30.Caption steht auch das \ mit drin?
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 04.09.09 14:47
Hi, Nersgatt, ja der / steht mit drin, aber ich glaube, die Zieldatei gibt's schon.
Dann aber doch den ganzen Pfad?
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Fr 04.09.09 14:55
nicht '/' sondern '\'. Ausserdem solltest du dann auch mit 'FileExists' ob die Datei schon existiert.
Zuletzt bearbeitet von Hobby-Programmierer am Fr 04.09.09 14:56, insgesamt 1-mal bearbeitet
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Fr 04.09.09 14:55
Ehm, wenn die Zieldate bereits existiert, dann muss die erst gelöscht werden...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Fr 04.09.09 14:58
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Fr 04.09.09 15:57
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 05.09.09 06:44
Tschuldigung, na klar '\', habe ich auch so.
So, jetzt habe ich die folgende "Version", die nicht klappt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if fileexists(label30.Caption+ 'schueold.dbf') then deletefile(label30.Caption+ 'schueold.dbf');
if movefile(PChar(label30.Caption+ 'SchuelerA.dbf'), 'schueold.dbf') then showmessage('Datei wurde in schueold.dbf umbenannt') else showmessage('Datei konnte nicht in schueold.dbf umbenannt werden'); |
Arrgh, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 05.09.09 07:06
Funktioniert denn an der Stelle im Programm (du kannst ja z.B. ein ShowMessage einbauen zum Anhalten) das Umbenennen bzw. Löschen im Windows Explorer? Ich vermute einmal nicht. Wenn es dort auch nicht geht, ist die Datei in Benutzung wie bereits vorher gesagt wurde. Und dann funktioniert auch das Löschen oder Umbenennen im Programm natürlich nicht.
Jedenfalls müssen soweit ich weiß grundsätzlich bei diesen Funktionen immer die kompletten Pfade angegeben werden und nicht nur der Dateiname. Etwas anderes sehe ich auch nicht in der Dokumentation.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 05.09.09 07:59
Hi, Sebastian, stimmt - das Umbenennen funktioniert auch nicht, aber sieh dir mal den Code an:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if fileexists(label30.Caption+ 'schueold.dbf') then begin if deletefile(label30.Caption+ 'schueold.dbf') then showmessage(label30.Caption+ 'schueold.dbf wurde gelöscht') else showmessage(label30.Caption+ 'schueold.dbf wurde nicht gelöscht'); end else showmessage(label30.Caption+ 'schueold.dbf existiert nicht');
if movefile(PChar(label30.Caption+ 'SchuelerA.dbf'), PChar(label30.caption+ 'schueold.dbf')) then showmessage('Datei wurde in schueold.dbf umbenannt') else showmessage('Datei konnte nicht in schueold.dbf umbenannt werden'); |
und : schueold.dbf existiert nicht! Also irgendetwas mit movefile?
_________________ ut vires desint, tamen est laudanda voluntas
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 05.09.09 09:12
D. Annies hat folgendes geschrieben : | | Hi, Sebastian, stimmt - das Umbenennen funktioniert auch nicht, aber sieh dir mal den Code an: |
Wenn das Umbenennen im Windows Explorer auch nicht geht, hat das doch rein gar nichts mit dem Code an der Stelle zu tun, sondern damit, dass die Datei (eine Datenbank nehme ich an) gerade geöffnet ist, die Datei also benutzt wird.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 05.09.09 11:58
DeddyH hat folgendes geschrieben : | | Geht das schief, kannst Du mit GetLastError ermitteln, woran es liegt. |
Delphi-Quelltext 1: 2:
| if not MoveFile(...) then ShowMessage(SysErrorMessage(GetLastError)); |
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 05.09.09 17:39
"Der Prozess kann nicht auf die Datei zugreifen, da die Datei von einem anderen Prozess in Gebrauch ist".
Also genau, wie du gedacht hast!
Ich habe inzwischen [nach einem ausgiebigen Tauchgang in der Ostsee bei Scharbeutz <--offtopic] die Funktion IsFileInUse(fname) gefunden und damit gearbeitet.
Das Problem ist jetzt also wohl, wie ich die Datei "gebrauchlos" mache.
Wie geht das?
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 05.09.09 17:44
Naja, irgendwo musst du damit ja etwas machen, vermutlich mit einer Datenbankkomponente. 
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 05.09.09 19:11
Hi, Sebastian,
nun, ich habe die folgende Proc, sie schließt aber die (vorige) Tabelle.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure Tform1.lade_schueler(sender:tobject); var n: integer; begin TbSchueler.active := false; TbSchueler.DatabaseName := listbox11.items[listbox11.itemindex]; TbSchueler.TableName := Ss_Tn; TbSchueler.active := true; showmessage('Schülertabelle '+ Ss_Tn+ ' ist geladen'); end; |
Detlef, 
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 05.09.09 19:20
Wenn ich das jetzt auf die Schnelle richig verstanden habe dann greifst du doch noch auf die Datenbank zu also kannst du sie auch nicht löschen oder umbenennen.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|