Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Fr 04.09.09 13:56 
Hi, Delpher,

der folgende renamefile-Befehl funzt nicht:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 04.09.09 14:03 
Moin!

AFAIR übergibt man als Zieldateinamen (2. Parameter) nur den Namen, ohne Pfad. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Fr 04.09.09 14:07 
Danke, Narses ! :idea: :shock: :idea: !

---Moderiert von user profile iconNarses: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 04.09.09 14:27 
Moin!

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
OOPS! zu früh gefreut!
Die Quelldatei darf nicht im (exklusiven) Zugriff sein und die Zieldatei darf nicht bereits vorhanden sein. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 238
Erhaltene Danke: 4

Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 238
Erhaltene Danke: 4

Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
BeitragVerfasst: Fr 04.09.09 14:58 
user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Ehm, wenn die Zieldate bereits existiert, dann muss die erst gelöscht werden...
.. oder vorher umbenennen :P
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Fr 04.09.09 15:57 
user profile iconHobby-Programmierer hat folgendes geschrieben Zum zitierten Posting springen:
nicht '/' sondern '\'. Ausserdem solltest du dann auch mit 'FileExists' ob die Datei schon existiert.


Sollte aber mit / genau so klappen. Im Zweifelsfall einfach IncludeTrailingPathDelimiter verwenden ;-)
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 05.09.09 06:44 
Tschuldigung, na klar '\', habe ich auch so.
So, jetzt habe ich die folgende "Version", die nicht klappt:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 05.09.09 07:59 
Hi, Sebastian, stimmt - das Umbenennen funktioniert auch nicht, aber sieh dir mal den Code an:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 05.09.09 09:12 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
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



BeitragVerfasst: Sa 05.09.09 11:58 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Geht das schief, kannst Du mit GetLastError ermitteln, woran es liegt.

ausblenden Delphi-Quelltext
1:
2:
if not MoveFile(...) then
  ShowMessage(SysErrorMessage(GetLastError));
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 05.09.09 17:44 
Naja, irgendwo musst du damit ja etwas machen, vermutlich mit einer Datenbankkomponente. :nixweiss:
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 05.09.09 19:11 
Hi, Sebastian,

nun, ich habe die folgende Proc, sie schließt aber die (vorige) Tabelle.

ausblenden 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;                 // z.B. schueler.dbf oder SchuelerA.dbf
  showmessage('Schülertabelle '+ Ss_Tn+ ' ist geladen');  
end;


Detlef, :?:

_________________
ut vires desint, tamen est laudanda voluntas
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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.