Autor |
Beitrag |
CrazyLuke
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: 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:
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 
Zuletzt bearbeitet von CrazyLuke am Fr 27.08.04 11:26, insgesamt 2-mal bearbeitet
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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
      
Beiträge: 526
WinXP Home & Professional
C, C++, Delphi
|
Verfasst: 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
      
Beiträge: 698
|
Verfasst: 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 
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: 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 
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: Do 26.08.04 19:19
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
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 
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: 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
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: 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 " . |
Delphi-Quelltext
_________________ "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 
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: 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:
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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Fr 27.08.04 11:40
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
rästelraten: zu welchem begin gehört welches end?
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 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; |
sähe doch schon ansprechender aus?
außerdem sind alle begin end im grunde genommen unnötig.
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 
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: 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!
|
|