AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Absturz bei OnKeyDown

Ein Thema von MasterDG · begonnen am 10. Mai 2006 · letzter Beitrag vom 12. Mai 2006
Antwort Antwort
MasterDG

Registriert seit: 29. Sep 2004
54 Beiträge
 
Delphi 2005 Personal
 
#1

Absturz bei OnKeyDown

  Alt 10. Mai 2006, 19:01
Hallo!

Ich habe ein Problem was mich zum verzweifeln bringt...

Ich habe in meinem Programm einen Button mit dem ich Dateien verschiebe.
Ich wollte diesen Button mit dem OnKeyDown-Ereigniss der Form bei einer bestimmten gedrückten Taste klicken. Die Datei die verschoben werden soll bekomme ich aus einem ShellListView.

Wenn ich nun zwei oder mehrmal auf die Taste drücke wird beim ersten Mal die Datei verschoben, beim zweiten mal jedoch wird nichts gemacht und das Programm ist ohne Fehlermeldung einfach abgestürzt obwohl doch eigendlich die nächtse Datei verschoben werden sollte. Wenn ich den Button direkt drücke klappt alles ohne Probleme!
Im Taskmanager steht keine Rückmeldung wenn das Prog abgestürzt ist. In Delphi bekomme ich keinen Fehler angezeigt.

Kann mir einer helfen. Ich bin momentan ratlos...

Gruß
MasterDG
Dominik
Grüße Dominik
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Absturz bei OnKeyDown

  Alt 11. Mai 2006, 06:18
Wir sind genauso ratlos, da wir deinen Code nicht kennen. Meine Glaskugel ist zur Zeit auch zur intensiv-Reinigung, so dass ich da auch nicht mehr weiss. Wie wäre es denn für den Anfang mal mit dem Code auf dem OnClick und dem OnKeyDown Ereignis des Buttons?
  Mit Zitat antworten Zitat
MasterDG

Registriert seit: 29. Sep 2004
54 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Absturz bei OnKeyDown

  Alt 11. Mai 2006, 16:02
Hallo!

Hier der Code den ich zur Zeit benutze:

Delphi-Quellcode:
function TForm1.RenameFileEx(const AOldName, ANewName: string;
   ARenameCheck: boolean = false): boolean;
var
  sh: TSHFileOpStruct;
begin
  sh.Wnd := Application.Handle;
  sh.wFunc := fo_Move;

  // String muss mit #0#0 Terminiert werden, um das Listenende zu setzen
  sh.pFrom := PChar(AOldName + #0);
  sh.pTo := PChar(ANewName + #0);
  sh.fFlags := fof_Silent or fof_MultiDestFiles;
  if ARenameCheck then
    sh.fFlags := sh.fFlags or fof_RenameOnCollision;
  Result:=ShFileOperation(sh)=0;
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
 if not fileexists('C:/OrdnerA/Beispieldatei.bmp') then
 begin
  ReNameFileEx('C:/OrdnerA/Beispieldatei.bmp','C:/OrdnerB/Beispieldatei.bmp');
 end else
  showmessage('Datei existiert schon!');
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if key = 'athen Button.Click;
end;
Es soll also nur eine Datei von Ornder A nach OrdnerB kopiert werden.
Wenn ich nun die Taste a mehrmals hintereinander drücke(natürlich ändert sich die zu kopierende Datei, habe das jetzt nur der Übersicht halber mit festen strings geschrieben), dann stürzt das Programm ohne Fehlermeldung ab.

Weiß jemand weiter denn wenn ich den Button mehrmals drücke funktioniert alles!

Gruß
MasterDG
Dominik
Grüße Dominik
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Absturz bei OnKeyDown

  Alt 11. Mai 2006, 16:20
Hallo,

Delphi-Quellcode:
if not fileexists('C:/OrdnerA/Beispieldatei.bmp') then
begin
  ReNameFileEx('C:/OrdnerA/Beispieldatei.bmp','C:/OrdnerB/Beispieldatei.bmp');
end else
  showmessage('Datei existiert schon!');
end;
dieses Konstrukt sieht für mich sehr widersprüchlich aus

Oder bin ich jetzt blind
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Absturz bei OnKeyDown

  Alt 11. Mai 2006, 18:17
Ich weiss nun nicht aus der Mütze wie die Click Methode vom Button implementiert ist, aber wenn diese nur eine Botschaft einreiht, dann kann ich mir vorstellen, dass dann die Verarbeitung hinterher hinkt. Mit anderen Worten: Du verarbeitest noch eine Datei während durch die Tastenwiederholung schon wieder ein neuer Aufruf angestoßen wurde.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Absturz bei OnKeyDown

  Alt 11. Mai 2006, 18:22
Hmm ins Blau -> Würde sagen ist ein Thread problem der API Function..

Warum nicht einfach

Assignfile(F,Datei1)
rename(F,Datei2);

Frank

PS.: Oder wolltest Du das verschieben in einen Thread auslagern?
  Mit Zitat antworten Zitat
MasterDG

Registriert seit: 29. Sep 2004
54 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Absturz bei OnKeyDown

  Alt 12. Mai 2006, 16:53
Hallo!

Danke für die Antworten. Ich hab mich bei Fileexists verschrieben es soll natürlich die Zieldatei getestet werden ob diese existiert.

An das Problem mit der Verarbeitungsgeschwindigtkeit habe ich auch schon gedacht. Aber ich kann den Button so oft und so schnell hintereinander wie ich will drücken, es wird alles ausgeführt...


Gruß
MasterDG
Dominik
Grüße Dominik
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.
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