Autor Beitrag
Murmel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 08:32 
wie kann ich mit obiger compo fehlermeldungen abfangen, hab schon alles probiert auch mit try except etc... ich bekomme immer eine fehlermeldung... ;O/

gruß
fcg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 360

WinXP
D3 Prof, D6 Pers
BeitragVerfasst: Do 17.07.03 09:28 
Hallo

Wenn du dein programm aus der IDe getstartet hast, bekommst du zusätzlich immer noch eine Fehlermeldung des Compilers. Die fällt weg, wenn nur die .exe gestartet wird. Aber grundsätzlich treten mit (try..except) keine Fehler mer auf.

Fehlermeldungen abfangen:
www.delphi-treff.de/...ons/index.php4?kat=7

Kleines Beispiel
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 
try
  f := f div g;
 except
   on E: EConvertError do
    ShowMessage('Keine Divisoion durch 0 möglich');
  end;


Wenn g jetzt 0 seien solte, wir eine MessageBox angezeigt, mit deiner Fehlermeldung...


fcg

_________________
.: Wer für alles offen ist, kann nicht ganz dicht sein! :.
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 09:53 
Titel: trotzdem fehlermeldung
kriege auch wenn ich die exe so starte ne fehlermeldung
kann ich denn nicht sagen mit application events, beispielweise wenn fehlermeldung kommt setzte label1 auf visible oder so?

gruß
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 10:17 
Hi Murmel

was hältst du davon:

Bei OnException
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin
  Label1.Caption:=E.Message;
  ApplicationEvents1.CancelDispatch;
end;


Zuletzt bearbeitet von Simon Joker am Do 17.07.03 10:22, insgesamt 1-mal bearbeitet
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 10:19 
Titel: hilft leider auch net... ;O/
fehlermeldung kommt trotzdem...

gruß murmel
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 10:29 
ist nicht logisch. Wie heist die Fehlermeldung und durch was wird sie aufgerufen?
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 10:37 
Titel: hier die details...
das ist die funktion:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
 function ScanDirectory(var path: string): Boolean;
  var
    SRec: TSearchRec;
    pathlen: Integer;
    res: Integer;
  begin
    label4.Caption := path;
    pathlen := Length(path);
    res := FindFirst(path + filemask, faAnyfile, SRec);
    if res = 0 then
      try
        while res = 0 do
        begin
          hitlist.Add(path + SRec.Name);
          res := FindNext(SRec);
        end;
      finally
        FindClose(SRec)
      end;
    Application.ProcessMessages; 
    Result := not (FScanAborted or Application.Terminated);
    if not Result then Exit; 
    res := FindFirst(path +'*.*', faDirectory, SRec);
    if res = 0 then
      try 
        while (res = 0) and Result do
        begin
          if ((Srec.Attr and faDirectory) = faDirectory) and 
            (Srec.Name <> '.') and 
            (Srec.Name <> '..') then
          begin 
            path := path + SRec.Name + '\';
            Result := ScanDirectory(path);
            SetLength(path, pathlen); 
          end; 
          res := FindNext(SRec);
        end; 
      finally 
        FindClose(SRec)
      end; 
  end; 
begin
  FScanAborted := False; 
  Screen.Cursor := crHourglass;
  try
    Result := ScanDirectory(root); 
  finally 
    Screen.Cursor := crDefault
  end; 
end;

und das ist der code bei oncreate für das durchsuchen von wechselträgern nach einer bestimmten datei, wenn ich nur einen wechselträger habe ist das ganze kein problem, da ich aber fünf habe zeigt er mir fehler: es befindet sich kein datenträger im laufwerk ;O/

das ist also der code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var ch: Char;
  root: string;
  search: string;
begin
root := 'C:\';
for ch := 'B' to 'Z' do
begin
root[1] := ch;
case GetDriveType(PChar(root)) of
DRIVE_REMOVABLE:
if not ScanDrive(root, edit6.Text, Listbox1.Items) then
Break;

gruß murmel am verzweifeln

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 10:50 
Die Fehlermeldung wäre nicht schlecht und wo sie auftritt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 10:56 
Titel: Re: hier die details...
Dank fehlendem Delphi-Tag nicht leicht zu erkennen:
Murmel hat folgendes geschrieben:
wenn ich nur einen wechselträger habe ist das ganze kein problem, da ich aber fünf habe zeigt er mir fehler: es befindet sich kein datenträger im laufwerk ;O/

:wink:

@Murmel: Vielleicht solltest du vor dem Scannen einen Zugriff versuchen? Versuchsweise so:
ausblenden Delphi-Quelltext
1:
2:
if SetCurrentDir(root) then
  if not ScanDrive(...)
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 11:05 
Titel: noch nicht ganz ;O/
also vorher hab ich acht fehlermeldungen bekommen, jetzt nur noch vier ;O) aber wallum? ich habe wie gesagt folgendes eingesetzt:
ausblenden Delphi-Quelltext
1:
2:
if SetCurrentDir(root) then 
{.... bla bla blubba}

wie kriege ich die restlichen fehlermeldungen weg?

gruß murmel

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 11:47 
Dann wirst du wohl noch irgendwo diverse Fehler haben. Ich hab´s gerade mit CD-Laufwerken probiert, und ich habe nicht eine Fehlermeldung gesehen. Laufwerke ohne Medium wurden stillschweigend ignoriert. Auf Laufwerken mit eingelegten Medien wurde nach "filemask" gefahndet.

Und bitte benutze künftig beim Posten von Code folgende Syntax:
ausblenden Quelltext
1:
2:
3:
4:
[delphi]
{ Dein Quellcode }

[/delphi]

Dadurch wird Quellcode passend formatiert, was sich eindeutig besser liest. Richtig prima ist es, wenn du deine Beiträge selbst änderst; dann muss das kein Moderator für dich machen!
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 11:51 
Titel: oki doki...
aber wie kriege ich die restlichen fehlermeldungen denn weg?

gruß murmel
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 12:06 
Au weia, Murmel. :evil: Ich habe gerade mal was ausprobiert, von dem ich dachte: "Nein! Zu absurd. Er wird doch nicht ..." Darf ich mal raten? Deine vier Fehlermeldungen lauten der Reihe nach:
Zitat:
Undefinierter Bezeichner: 'Result'
Undefinierter Bezeichner: 'root'
'.' erwartet, aber ';' gefunden
verwendet Unit '...' kann nicht kompiliert werden

Richtig? In dem Fall empfehle ich dir ein gutes Grundlagenbuch zum Thema Delphi. Dein Fehler liegt hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function ScanDirectory(var path: string): Boolean;
var
SRec: TSearchRec;
pathlen: Integer;
res: Integer;
begin
  {...}
end; // <-- FUNKTIONSENDE!!! Und nun?? -->
begin
  FScanAborted := False;
  Screen.Cursor := crHourglass;
  try
    Result := ScanDirectory(root);
  finally
    Screen.Cursor := crDefault
  end;
end;

Dass ich deinen Fehler nicht nachvollziehen konnte, liegt daran, dass ich diesen Quark (ab dem zweiten begin) nach dem Kopieren und Formatieren des Codes gelöscht habe, weil er nicht zur Funktion gehört.

Schäm dich, Murmel!
Ab in die Ecke!

:)
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 13:11 
Titel: ?no comprendo?
kein plan was du meinst... wie soll ich den code denn jetzt ändern?

grüßchen murmel
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 13:25 
MathiasSimmack hat folgendes geschrieben:
Dass ich deinen Fehler nicht nachvollziehen konnte, liegt daran, dass ich diesen Quark (ab dem zweiten begin) nach dem Kopieren und Formatieren des Codes gelöscht habe, weil er nicht zur Funktion gehört.
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 13:56 
Titel: ahso...
also mein programmchen soll dabei alle wechseldatenträger nach ner datei durchsuchen, der name der datei steht in der editbox und wird dann in eine listbox eingetragen ;O)

gruß murmel
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 14:12 
Ja, und wenn du diese Zeilen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
  FScanAborted := False;
  Screen.Cursor := crHourglass;
  try
    Result := ScanDirectory(root);
  finally
    Screen.Cursor := crDefault
  end;
end;

aus deiner o.g. Funktion entfernst, dann macht es das auch! Bitte bitte, nimm dir ein Grundlagenbuch und versuche nicht Programme vollkommen ohne Kenntnisse zu schreiben. Diese Zeilen (s. Codeauszug) haben nichts mehr mit der Funktion "ScanDirectory" zu tun. Im Gegenteil: sie verursachen die vier Fehlermeldungen.

Und jetzt beweis mir bitte, dass du selbst auch denken kannst!
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Do 17.07.03 14:56 
Titel: ach wenn ich den code entferne...
dann geht überhaupt nichts mehr... den von dir bezeichneten quatsch brauche ich wohl auf jeden fall und die fehlermeldungen kommen auch trotzdem...

;O/
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 17.07.03 15:24 
Dann liegen die Fehler auf keinen Fall mehr in den von dir geposteten Routinen. Aber das ist das Schöne bei Delphi. Der Compiler zeigt dir in Klammern bei den Meldungen eine Ziffer an - die Zeilennummer. Diese muss nicht zwangsläufig die Stelle des Fehlers sein, aber hier kommt der Compiler nicht mehr mit.

Was deine Funktion angeht - ich weiß zwar auch nicht alles, aber in dieser Hinsicht darfst du mir ruhig vertrauen. Die Zeilen, die ich gepostet habe, sind überflüssig, denn sie stellen einen Beispielaufruf der Funktion dar. - Ich will dir nicht zu nahe treten, aber hier zeigt sich, dass du noch sehr wenig Wissen hast. Ansonsten hättest du bemerkt, dass folgendes passiert
  1. die Bool-Variable zum Abbrechen wird auf FALSE gesetzt
  2. der Mauszeiger wird auf die Sanduhr umgestellt
  3. die Funktion wird aufgerufen
  4. der Mauszeiger wird zurückgesetzt

All das hat mit der Funktion an sich nichts mehr zu tun. Ich habe die Zeilen entfernt, und mein Programm lief trotzdem. Ohne irgendwelche Meldungen.

Warum schreibst du nicht einfach mal, welche Fehler bei dir gemeldet werden - im genauen Wortlaut!. Ist das so schwer? Wie sollen wir dir helfen, wenn wir nicht wissen, was bemängelt wird.
Sorry, aber dein Wissen reicht offenbar nicht aus, die Fehlermeldungen zu verstehen. Sollen wir jetzt auch weiter raten? In dem Fall unterlasse ich jede weitere Wortmeldung, weil sie keinen Sinn hätte.

Da gibt´s andere Leute, denen man eher helfen kann, weil sie sich ein bisschen Mühe geben.

Sorry, dennoch.
Murmel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

xp
d6,d7
BeitragVerfasst: Fr 18.07.03 08:31 
Titel: ok...
also mit nur einen wechselträgerlaufwerk geht es, wenn ich einen usb-stick benutze... nun hab ich aber noch einen cardreader der mir mehrere zusätzlich laufwerke anzeigt und nun bekomme ich folgenden fehler dazu:

name.exe - kein datenträger

Es befindet sich kein datenträger im laufwerk. Legen Sie einen Datenträger im Laufwerk \Device\Harddisk 5\blablabla ein.

taja so eine meldung kommt dann vier mal...

grüßchen murmel