Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi copyfile geht nicht (https://www.delphipraxis.net/164941-copyfile-geht-nicht.html)

Dr. Jack 6. Dez 2011 21:34

copyfile geht nicht
 
hi, ich beiße mir gerade die zähne aus, warum geht dieser quelltext nicht, er bringt immer die
showmessage, weil er es nicht kopiert. was mache ich falsch?

if not copyfile(PChar('F:\KS\EV\ev.ini'), PChar('F:\KS\EV\EVSAVE\ev.ini'), true)
then ShowMessage('Fehler beim Erstellen der Kopie!');

Bummi 6. Dez 2011 21:43

AW: copyfile geht nicht
 
Stimmt die Quelle, gibt es den Zielpfad, gibt es die Zieldatei noch nicht (failisexists) , hast Du die benötigten Rechte, ist die Quelldatei gesperrt .....

himitsu 6. Dez 2011 21:53

AW: copyfile geht nicht
 
Wie wäre es mit einer aussagefähigeren Fehlermeldung?
Delphi-Quellcode:
if not CopyFile(PChar('F:\KS\EV\ev.ini'), PChar('F:\KS\EV\EVSAVE\ev.ini'), true) then
  RaiseLastOSError;

if not CopyFile(PChar('F:\KS\EV\ev.ini'), PChar('F:\KS\EV\EVSAVE\ev.ini'), true) then
  ShowMessage('Fehler beim Erstellen der Kopie!'#13#10 + SysErrorMessage(GetLastError));

Dr. Jack 6. Dez 2011 22:00

AW: copyfile geht nicht
 
der will mich gerade verarschen: "das system kann den angegebenen pfad nicht finden!"
ich bin hier gerade im explorer drin-der pfad ist definitiv da.

Luckie 6. Dez 2011 22:03

AW: copyfile geht nicht
 
Kontrollire ihn mal im Debugger oder lass ihn dir vorher mit Showmessage ausgeben.

himitsu 6. Dez 2011 22:04

AW: copyfile geht nicht
 
Delphi-Quellcode:
if not DirectoryExists('F:\') then
  ShowMessage('er verarscht dich nicht (root)');

if not DirectoryExists('F:\KS') then
  ShowMessage('er verarscht dich nicht (KS)');

if not DirectoryExists('F:\KS\EV') then
  ShowMessage('er verarscht dich nicht (EV)');

if not FileExists('F:\KS\EV\ev.ini') then
  ShowMessage('er verarscht dich nicht (file)');

Dr. Jack 6. Dez 2011 22:23

AW: copyfile geht nicht
 
wie kontrolliert man das im debugger? *anfänger* :(

Sir Rufo 6. Dez 2011 22:28

AW: copyfile geht nicht
 
Zitat:

Zitat von Dr. Jack (Beitrag 1139886)
wie kontrolliert man das im debugger? *anfänger* :(

Google ist dein Freund Bei Google suchendelphi debugger tutorial und liefert als erstes Tutorial Debugging

Luckie 6. Dez 2011 22:29

AW: copyfile geht nicht
 
Haltepunkt setzten mit F5 und dann laufen lassen. Dann kanst du mit der Maus über die Variable fahren und dir den Inhalt angucken.

Dr. Jack 6. Dez 2011 22:44

AW: copyfile geht nicht
 
ich haba das mal reinkopiert

if DirectoryExists('F:\') then
ShowMessage('er verarscht dich (root)');

if DirectoryExists('F:\KS') then
ShowMessage('er verarscht dich (KS)');

if DirectoryExists('F:\KS\EV') then
ShowMessage('er verarscht dich (EV)');

if FileExists('F:\KS\EV\ev.ini') then
ShowMessage('er verarscht dich (file)');

die showmessages kamen :)
mit dem debugger--> keine ahnung wie das geht und wo ma da was sieht

himitsu 6. Dez 2011 22:51

AW: copyfile geht nicht
 
F: ist aber kein Netzlaufwerk, bzw. ein SUBST-Laufwerk oder ein ähnliches virtuelles Laufwerk?

Und du hast Delphi nicht etwa auch noch mit Adminrechten gestartet?

Dr. Jack 6. Dez 2011 23:00

AW: copyfile geht nicht
 
F ist kein netzlaufwerk, nur eine 2-geteilte platte.
und delphi starte ich ohne adminrechte.

himitsu 6. Dez 2011 23:18

AW: copyfile geht nicht
 
"schade", ein unterschiedlicher Benutzerkontext wäre eine Erklärung gewesen.

Welches Bettriebssystem?

Screenschot vom Explorer?

Und ganz sicher daß der Pfad stimmt?
Verzeichnisse können einen anderen Displaynamen haben, als der, welchen man dort sieht.
Ich sag dazu nur "C:\Benutzer" im Windows 7, welcher eigentlich C:\Users heißt. (ein Klick in die Adressleiste sollte sowas aber oftmals auslösen)

In der Tool-Palette gibt es so uralte Komponenten, ala TDriveComboBox, TDirectoryListBox und TFileListBox (Reiter Win 3.1)
Was sagt denn vorallem die Erste davon?

Bjoerk 6. Dez 2011 23:28

AW: copyfile geht nicht
 
Gibt es vielleicht ein Verzeichnis 'F:\KS\EV\EVSAVE\ev.ini' ?

himitsu 6. Dez 2011 23:33

AW: copyfile geht nicht
 
Zitat:

Zitat von Bjoerk (Beitrag 1139912)
Gibt es vielleicht ein Verzeichnis 'F:\KS\EV\EVSAVE\ev.ini' ?

Stimmt, jetzt wo du es sagst ...

Existiert das Zielverzeichnis F:\KS\EV\EVSAVE ?

Luckie 7. Dez 2011 08:17

AW: copyfile geht nicht
 
Klick in die Zeile vor dem Kopierbefehl. Dann drückst du F5. Dann startest du das Programm. Der Debugger hält an dem gesetzten Haltepunkt an. Dann kannst du dir den Inhalt der Variablen angucken, in dem du mit dem Mauscursor über die Variablen fährst. Des weiteren wurde dir schon ein entsprechendes Tutorial verlinkt. Warum hast du dir das noch nicht angeguckt?

Dr. Jack 7. Dez 2011 14:54

AW: copyfile geht nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
so das wäre der besagte screenshot... vielleicht sollte ich mal in richtung windows-benutzerrechte ermitteln...

DeddyH 7. Dez 2011 14:57

AW: copyfile geht nicht
 
Den letzten Parameter von CopyFile hast Du aber zwischenzeitlich auf false gesetzt?

Dr. Jack 7. Dez 2011 15:05

AW: copyfile geht nicht
 
habs mit false und true probiert, jetzt steht er auf true, weil er eigentlich eine meldung herauswerfen soll, wenn die zeildatei schon existiert.

Bjoerk 7. Dez 2011 15:12

AW: copyfile geht nicht
 
Benenne die Datei mal in ev.txt um und probiies's dann nochmal.

Luckie 7. Dez 2011 15:15

AW: copyfile geht nicht
 
Und lösche die Dateien im Zielverzeichnis.

PAB 7. Dez 2011 15:16

AW: copyfile geht nicht
 
//Edit: Hat sich erledigt

DeddyH 7. Dez 2011 15:17

AW: copyfile geht nicht
 
Welche Fehlermeldung wird denn ausgegeben? Immer noch "Das System kann den angegebenen Pfad nicht finden"?

Dr. Jack 7. Dez 2011 15:26

AW: copyfile geht nicht
 
die datei ist umbenannt, zielverzeichnis nochmal neu erstellt,

aber leider alles beim alten... hier mal der ganze quellcoder der procedure, vielleicht hab ich was übersehen.

procedure TEinkaufsliste.BitBtn1Click(Sender: TObject);
begin
Case MessageDlg ('Soll diese Einkaufsliste gespeichert werden?', mtConfirmation, [ mbYes, mbNo], 0) of
mrYes:

if not CopyFile(PChar('C:\KS\EV\ev.txt'), PChar('D:\KS\EV\EVSAVE\ev.txt'), false) then
ShowMessage('Fehler beim Erstellen der Kopie!'#13#10 + SysErrorMessage(GetLastError));

mrNo: ;

End;

einkaufsliste.close;
end;

Dr. Jack 7. Dez 2011 15:29

AW: copyfile geht nicht
 
achso laufwerk c und d sind nur übrig geblieben aus meinen versuchen gerade eben --> muss f:\ sein

Luckie 7. Dez 2011 15:31

AW: copyfile geht nicht
 
Äh, wird die Datei auch vorher im Programm geschlossen? Also wird der Stream oder die StringListe, je nach dem, was du benutzt, auch vorher freigegeben?

DeddyH 7. Dez 2011 15:33

AW: copyfile geht nicht
 
Was geschieht, wenn Du auf der Konsole
Code:
copy F:\KS\EV\ev.txt F:\KS\EV\EVSAVE\ev.txt
ausführst?

Luckie 7. Dez 2011 15:35

AW: copyfile geht nicht
 
Und das bitte bei geöffneten Programm und geladener Datei, so wie es auch im Programm der Fall wäre. dann das ganze mit geschlossenem Programm.

Dr. Jack 7. Dez 2011 15:37

AW: copyfile geht nicht
 
das system kann den angegebenen pfad nciht finden- aber auf dem screenshot kann man das doch sehen??

Bjoerk 7. Dez 2011 15:41

AW: copyfile geht nicht
 
Führ' das bitte mal aus und poste uns die Meldungen.

Delphi-Quellcode:
function TryResetFile(FileName: string): boolean;
var
  F: textFile;
  IO: integer;
begin
  AssignFile(F, FileName);
  {$I-} Reset(F); {$I+}
  IO:= IOResult;
  Result:= IO = 0;
  if not Result then
    MessageDlg(FileName+' ['+SysErrorMessage(IO)+'].', mtError, [mbOK], 0)
  else
    CloseFile(F);
end;

function TryRewriteFile(FileName: string): boolean;
var
  F: textFile;
  IO: integer;
begin
  AssignFile(F, FileName);
  {$I-} Rewrite(F); {$I+}
  IO:= IOResult;
  Result:= IO = 0;
  if not Result then
    MessageDlg(FileName+' ['+SysErrorMessage(IO)+'].', mtError, [mbOK], 0)
  else
    CloseFile(F);
end;

procedure TEinkaufsliste.BitBtn1Click(Sender: TObject);
begin
  TryResetFile('F:\KS\EV\ev.ini');
  TryRewriteFile('F:\KS\EV\EVSAVE\ev.ini')
  // Dein Code ..
end;

DeddyH 7. Dez 2011 15:42

AW: copyfile geht nicht
 
Dann hol Dir die Pfadnamen doch mal direkt aus dem Explorer (rechts neben den Pfad klicken).

Dr. Jack 7. Dez 2011 15:58

AW: copyfile geht nicht
 
"der vorgang kann nicht erzeugt werden..."

[208F50F0]{dbkdebugide100.bpl} Debug.TDebugger.DBKError + $58
[208F5134]{dbkdebugide100.bpl} Debug.TDebugger.DBKError + $9C
[208C2DB1]{dbkdebugide100.bpl} DbkHelper.CheckRetVal + $4D
[208C2D31]{dbkdebugide100.bpl} DbkHelper.ErrCode + $5
[208E7A3A]{dbkdebugide100.bpl} Debug.TDebugKernel.CreateProcess + $FA
[208F2E15]{dbkdebugide100.bpl} Debug.TDebugger.DoCreateProcess + $1CD
[208F2F28]{dbkdebugide100.bpl} Debug.TDebugger.CreateProcess + $54
[208F3A5E]{dbkdebugide100.bpl} Debug.TDebugger.Run + $282
[208F41E6]{dbkdebugide100.bpl} Debug.TDebugger.Run + $372
[208EF10E]{dbkdebugide100.bpl} Debug.TDebugger.Run + $2
[20A7300D]{coreide100.bpl} DebuggerMgr.TDebuggerMgr.Run + $49
[00415C73]{bds.exe } AppMain.TAppBuilder.RunRun (Line 2977, "ui\AppMain.pas" + 0) + $7
[20040123]{rtl100.bpl } Classes.TBasicAction.Execute + $F
[2014FE05]{vcl100.bpl } ActnList.TContainedAction.Execute + $31
[20150B68]{vcl100.bpl } ActnList.TCustomAction.Execute + $50
[2003FFEF]{rtl100.bpl } Classes.TBasicActionLink.Execute + $13
[2013FB95]{vcl100.bpl } Controls.TControl.Click + $4D
[2019A3DC]{vcl100.bpl } ComCtrls.TToolButton.Click + $0
[20140027]{vcl100.bpl } Controls.TControl.WMLButtonUp + $6B
[2013F6A7]{vcl100.bpl } Controls.TControl.WndProc + $2BB
[2013F334]{vcl100.bpl } Controls.TControl.Perform + $24
[20142F56]{vcl100.bpl } Controls.GetControlAtPos + $AA
[2014301E]{vcl100.bpl } Controls.TWinControl.ControlAtPos + $A6
[2013F334]{vcl100.bpl } Controls.TControl.Perform + $24
[20143229]{vcl100.bpl } Controls.TWinControl.IsControlMouseMsg + $A1
[201435F0]{vcl100.bpl } Controls.TWinControl.WndProc + $3B4
[2019C41D]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonState + $51
[2019C45E]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonStates + $36
[2019ED91]{vcl100.bpl } ComCtrls.TToolBar.WndProc + $241
[20142E60]{vcl100.bpl } Controls.TWinControl.MainWndProc + $2C
[20040DE4]{rtl100.bpl } Classes.StdWndProc + $14
[20160EF8]{vcl100.bpl } Forms.TApplication.ProcessMessage + $FC
[20160F32]{vcl100.bpl } Forms.TApplication.HandleMessage + $A
[20161188]{vcl100.bpl } Forms.TApplication.Run + $CC
[00422971]{bds.exe } bds.bds (Line 196, "" + 7) + $2

DeddyH 7. Dez 2011 15:59

AW: copyfile geht nicht
 
Und wobei jetzt?

Dr. Jack 7. Dez 2011 16:02

AW: copyfile geht nicht
 
wenn ich die functions einfüge, aber mittlerweile geht hier gar nix mehr, mal neu booten... moment....

Dr. Jack 7. Dez 2011 16:12

AW: copyfile geht nicht
 
wenn ich auf play zu starten der anwendung drücke kommt: "der vorgang kann nicht erzeugt werden..."

und wenn ich die functions wieder entferne bleibts dabei :(

Luckie 7. Dez 2011 16:14

AW: copyfile geht nicht
 
Mach mal ein neues leeres Projekt und nutze den geposteten Code.

Dr. Jack 7. Dez 2011 16:19

AW: copyfile geht nicht
 
das system kann den pfad nicht finden.... sorry ich bin raus...brauch ne pause

Luckie 7. Dez 2011 16:37

AW: copyfile geht nicht
 
Überprüfe die Pfadangaben!!!

Bummi 7. Dez 2011 17:27

AW: copyfile geht nicht
 
<°))))< ?

Dr. Jack 8. Dez 2011 17:19

AW: copyfile geht nicht
 
ha es geht, aber ich hab von gestern zu heute nix geändert, lediglich für platte f: jeden benutzer im windows auf vollzugriff gesetzt.... *kriese*

trotzdem danke für euren großartigen job!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz