Autor Beitrag
CrazyLuke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Do 26.08.04 18:23 
Hallo.

Ich habe schon einige Kombinationen durch, aber immer wen ich den Code ausführen möchte, mstürzt das Programm ab ("Access violation at address 00485452 im mudule 'Project1.exe'. Read of address 00000008.").

Hier der Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button11Click(Sender: TObject);
begin
if FileExists('F:\AlphaAudio\AlphaPlayer.exe'then begin
  ListView1.Items.Item[0].SubItems.Add('VORHANDEN!');
  end
  else
  ListView1.Items.Item[0].SubItems.Add('nicht vorhanden');
end;

Lasse ich die Else-Fuinktion weg, klappt es...

Ich weiß nicht worans liegt :evil:


Zuletzt bearbeitet von CrazyLuke am Fr 27.08.04 11:26, insgesamt 2-mal bearbeitet
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 26.08.04 18:55 
Hallo

gibt es das 0.item in der Listview überhaupt?

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Do 26.08.04 18:57 
Typischer Fall von "ListViewX.Items[Y]" existiert nicht - Keldorn hat Recht!!!

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Do 26.08.04 18:57 
Das Item 0 fehlt. Das ist es. Zum test kannst du NOT vor FileExists setzten und bekommst die Fehlermeldung schon früher.

_________________
Gruß
Martin
CrazyLuke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Do 26.08.04 19:16 
Also er fängt ja mit 0 an zu zäheln. Und im Items Editor lautet der erste Eintrag "AlphaAudio M" (Cption) mit Image Index 0 und State Index -1.

Allerdings ist mir aufgefallen, dass beim Ausführen des Programmes die Liste leer ist. Hab extra nochmal ne neue Liste errstellt, da ich dachte, dass vielleicht ne Einstellung im Object Inspector geändert wurde (obwohl ich keine gefunden hab).

Naja, werd nochmal den Code absuchen, ob sich da was falsches eingeschlichen hat. Obwohl ich den Befehl zum Löschen der Liste an den Anfang gesetzt hab (eigentlich für die SubItems, damit bei einer erneuten Suche die alten Ergebnisse zu Beginn direkt weg sind - aber leider hats damit nicht geklappt).

Naja, werd mich gleich nochmal melden...
CrazyLuke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Do 26.08.04 19:19 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.FormCreate(Sender: TObject);
begin
with ListView1 do
begin
Items.BeginUpdate;
    try
      ViewStyle := vsReport;
      Items.Clear;
    finally
      Items.EndUpdate;
  end;
  if ParamCount>0 then begin
    if ParamStr(1)='/p' then begin
      PageControl1.ActivePage:=TabSheet3
    end;
    if ParamStr(1)='/p1' then begin
      PageControl1.ActivePage:=TabSheet3;
      ComboBox1.ItemIndex := 1;
    end;
  end;
end;
end;

Da isses drin :!: Danke 8)
Weiß aber im Mom nicht, wie das dorthin kommt...

Muss ich denn nur Items.Clear; löschen oder was ist mit dem restlichen Code?


EDIT: Nachfrage:
Was muss ich machen, damit ich die obere Liste von ListView ("vsReport") verschieben, also die Breite der einzelnen Spalten ändern kann? Vorhin gings noch. Jetzt gehts nur nach dem Start, möchte die Spalten aber auch schon von Anfang an korrekt (und nicht abgeschnitten) haben...
CrazyLuke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Fr 27.08.04 10:57 
Hallo.

Ich habs jetzt über den Object Inspector (Angabe der Spaltenbreite) gelöst.

Aber wie kann ich über "ShowMessage" das '-Zeichen im Text einbringen? Ich möchte weder ´ noch ` oder " .
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Fr 27.08.04 11:06 
CrazyLuke hat folgendes geschrieben:
Aber wie kann ich über "ShowMessage" das '-Zeichen im Text einbringen? Ich möchte weder ´ noch ` oder " .


ausblenden Delphi-Quelltext
1:
''''					

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
CrazyLuke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Fr 27.08.04 11:22 
Danke, es klappt:
eMail-Adresse in der Rubrik ''Über''.
= eMail-Adresse in der Rubrik 'Über'.

Tja, manchmal isses wirklich zu einfach...

Allerdings habe ich ein anderes Problem:
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:
procedure TForm1.Button11Click(Sender: TObject);
begin
Label33.Caption:='Status:  Suche gestartet - bitte warten!';
begin
if FileExists('f:\AlphaAudio\AlphaPlayer.exe'then
begin
  ListView1.Items.Item[0].SubItems.Add('VORHANDEN!')
  end
  else
  begin
  ListView1.Items.Item[0].SubItems.Add('nicht gefunden');
  end;
begin
if FileExists('f:\CACTUSPJ.EXE'then
begin
  ListView1.Items.Item[1].SubItems.Add('VORHANDEN!')
  end
  else
  begin
  ListView1.Items.Item[1].SubItems.Add('nicht gefunden');
  end;
end;
begin
if FileExists('f:\PLAYER\YUCCA.CDS'then
begin
  ListView1.Items.Item[2].SubItems.Add('VORHANDEN!')
  end
  else
  begin
  ListView1.Items.Item[2].SubItems.Add('nicht gefunden');
  end
end;
begin
Label33.Caption:='Status:  Suche beendet.';
end;
end;
end;

"Status: Suche gestartet - bitte warten!" wird gar nicht angezeigt. Er wartet, bis Windows die CD geladen hat und meldet dann direkt "Suche beendet" (denn die Suche ist dann ja auch schnell beendet, da direkte Dateinamen und -pfade vorliegen).

Kann er auch erst den Text ändern und dann auf die CD zugreifen?
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 27.08.04 11:40 
ausblenden Delphi-Quelltext
1:
2:
Label33.Caption:='Status:  Suche gestartet - bitte warten!'
application.processmessages;

obwohl ich bezweifle, das du den status sehen wirst, da die nachfolgenden Codes sehr schnell ausgeführt werden sollten.

außerdem hast du eine grausamme Art, deinen code zu formatieren
Zitat:

end;
end;
end;

rästelraten: zu welchem begin gehört welches end?
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:
procedure TForm1.Button11Click(Sender: TObject);
begin
  Label33.Caption:='Status:  Suche gestartet - bitte warten!';
  begin //ist absolut unnötig
    if FileExists('f:\AlphaAudio\AlphaPlayer.exe'then
      begin
        ListView1.Items.Item[0].SubItems.Add('VORHANDEN!')
      end
     else
      begin
        ListView1.Items.Item[0].SubItems.Add('nicht gefunden');
      end;

    begin //ist absolut unnötig
      if FileExists('f:\CACTUSPJ.EXE'then
        begin
          ListView1.Items.Item[1].SubItems.Add('VORHANDEN!')
        end
       else
        begin
          ListView1.Items.Item[1].SubItems.Add('nicht gefunden');
        end;
    end;

    begin //ist absolut unnötig
      if FileExists('f:\PLAYER\YUCCA.CDS'then
        begin
          ListView1.Items.Item[2].SubItems.Add('VORHANDEN!')
        end
       else
        begin
          ListView1.Items.Item[2].SubItems.Add('nicht gefunden');
        end
    end;

    begin //ist absolut unnötig
      Label33.Caption:='Status:  Suche beendet.';
    end;
  end;
end;

sähe doch schon ansprechender aus?

außerdem sind alle begin end im grunde genommen unnötig.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button11Click(Sender: TObject);
begin
  Label33.Caption:='Status:  Suche gestartet - bitte warten!';

  if FileExists('f:\AlphaAudio\AlphaPlayer.exe'then
    ListView1.Items.Item[0].SubItems.Add('VORHANDEN!')
   else
    ListView1.Items.Item[0].SubItems.Add('nicht gefunden');

  if FileExists('f:\CACTUSPJ.EXE'then
    ListView1.Items.Item[1].SubItems.Add('VORHANDEN!')
   else
    ListView1.Items.Item[1].SubItems.Add('nicht gefunden');

  if FileExists('f:\PLAYER\YUCCA.CDS'then
    ListView1.Items.Item[2].SubItems.Add('VORHANDEN!')
   else
    ListView1.Items.Item[2].SubItems.Add('nicht gefunden');

  Label33.Caption:='Status:  Suche beendet.';
end;

führt zum gleichem

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
CrazyLuke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Fr 27.08.04 12:15 
Okay, werds umsetzen.

Und das mit dem Label klappt auch: Ist die CD unter Windows noch nicht fertig geladen, erscheint erst die Meldung "Suche gestartet ...".

Danke!