AGB  ·  Datenschutz  ·  Impressum  







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

Array of Checkboxen : Zugrifsverletzung

Ein Thema von pokermaster2007 · begonnen am 23. Mär 2010 · letzter Beitrag vom 23. Mär 2010
Antwort Antwort
Seite 1 von 3  1 23      
pokermaster2007

Registriert seit: 23. Mär 2010
Ort: Duisburg
9 Beiträge
 
Delphi 2010 Professional
 
#1

Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 15:29
ich möchte mir einen installer schreiben, der die installation von meinem programmen automatisiert. dazu habe ich mit 30 checkboxen erstellt, welche sich in dem array checkbox befinden. wenn ich nun auswerten weill welche checkboxen angeklickt wurden bekommt ich immer nur eine fehlermeldung : Zugriffsverletzung.

hier ist der wuellcode, der die probleme macht -.-
Delphi-Quellcode:
var
i: integer;
j : integer;
begin

for i := 0 to 29 do

begin
if checkbox[i].Checked = True then ausgewählte_programme[j] := checkbox[i].Caption;
if ausgewählte_programme[j] <> 'then j := j +1;

end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 15:32
Irgendwann wirst du in der Schleife auf einen ungültigen Index des Arrays zugreifen.
Ich würde den Fehler hier:
if ausgewählte_programme[j] <> 'then j := j +1; vermuten.

Hast du denn den Code schon mal debuggt und dir die Werte der Variablen angeguckt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 15:32
Was ist denn ausgewählte_programme? Eine TStringlist? Ist diese auch groß genug?

P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 16:01
Dazu ist J nicht initialisiert

p.s. Boolsche Werte nie auf True oder False abfragen : http://www.delphi-treff.de/tutorials...oolean-werten/

p.p.s : Strings zu einer Stringlist fügt man mit Add dazu
Glückauf
  Mit Zitat antworten Zitat
pokermaster2007

Registriert seit: 23. Mär 2010
Ort: Duisburg
9 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 17:12
ausgewählte_programme ist eine string array von 0 bis 30

ich habe es auch schon versucht zu debuggen. delphi macht es einige male bis es die fehlermeldung ausspuckt. ich poste hier einfach mal den gesamten quell code

Delphi-Quellcode:
unit start;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls,ShellAPI, jpeg, GIFImg, tlhelp32,
  pngimage;

type
  Tfrm_start = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    bt_weiter: TImage;
    bt_ende: TImage;
    Image6: TImage;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;

    procedure FormCreate(Sender: TObject);
    procedure bt_weiterMouseEnter(Sender: TObject);
    procedure bt_weiterMouseLeave(Sender: TObject);
    procedure bt_endeMouseEnter(Sender: TObject);
    procedure bt_endeMouseLeave(Sender: TObject);
    procedure bt_endeClick(Sender: TObject);
    procedure bt_weiterClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frm_start: Tfrm_start;
  quelle : string;
  ziel : string;
  txt : textfile;
  currentdir: string;
  bat : string;
  programme: array [0 .. 30] of string;
  leerzeile : integer;
  zeile: string;
  checkbox : Array of TCheckBox;
  left: integer;
  top : integer;
  j : integer;
  filenames: Array[0 .. 30] of string;
  ausgewählte_programme : array[0..30] of string;

 implementation

uses progress;

{$R *.dfm}



procedure Tfrm_start.bt_weiterClick(Sender: TObject);
var
i: integer;
j : integer;
begin

for i := 0 to 29 do

begin
if checkbox[i].Checked = True then ausgewählte_programme[j] := checkbox[i].Caption;
if ausgewählte_programme[j] <> 'then j := j +1;

end;
form1.Show;
end;

procedure Tfrm_start.FormCreate(Sender: TObject);
var
i: integer;

begin


// die checkboxen erstellen

 SetLength(checkbox, 30);
 left := 16;
 top := 49;

for i := 0 to 29 do

begin
if i = 0 then else if i mod 10 = 0 then left := left + 240;

checkbox[i]:= Tcheckbox.Create(panel2);
checkbox[i].parent := panel2;
checkbox[i].Visible := False;
checkbox[i].Left := left;
checkbox[i].Top :=top + j*23;
checkbox[i].width := 200;

j := j+1;
if j = 10 then j :=0 ;
if j = 0 then top := 49;


end;

// verfügbare Programme auslesen
i := 0;
currentdir := GetCurrentDir;
begin
j := 0;
AssignFile(txt,currentdir + '\data.txt');
Reset(txt);
Readln(txt, zeile);
Readln(txt, zeile);

repeat

Readln(txt, zeile);
programme[i] := copy(zeile,15,length(zeile) - 15);

if programme[i] = 'then leerzeile := leerzeile + 1 else filenames[i] := programme[i] + '.txt';
if programme[i] <> 'then checkbox[j].Caption := programme[i];
if programme[i] <> 'then checkbox[j].Visible := True ;
i:=i+1;
if checkbox[j].caption = 'then else j := j + 1;

until (leerzeile = 3);
CloseFile(txt);

end;

end;
dazu : start is die erste userform, die standartmäßig aufgerufen wird und form 1 ist die zweite userform die anschliessend angezeigt werden soll.

Dank schoneinmal für die schnellen Antworten auch wenn diese mir nicht weitergeholfen haben.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 17:17
Kennst du schon die Komponente CheckListBox auf der Palettenseite "Zusätzlich"?
Ich glaube damit kannst du sehr viel Arbeit sparen.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 17:20
Tu Dir und uns einmal einen Gefallen und rücke ordentlich ein, dann kann man das auch lesen. Und wie guinnes schon sagte, j ist nicht initialisiert.
Delphi-Quellcode:
procedure Tfrm_start.bt_weiterClick(Sender: TObject);
var
  i: integer;
  j : integer;
begin
  j := Low(ausgewählte_programme);
  for i := 0 to 29 do
    begin
      if checkbox[i].Checked then
        ausgewählte_programme[j] := checkbox[i].Caption;
      if ausgewählte_programme[j] <> 'then
        j := j +1;
    end;
  form1.Show;
end;
Übrigens weisen die statischen Arrays 31 Elemente auf, aber das dynamische nur 30. Ist das Absicht?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 17:20
Wie gesagt:
- J ist nicht initialisiert und hat somit einen Zufallswert.
- Bitte nicht auf = True prüfen

Außerdem: in welcher Zeile hast du die AV?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
pokermaster2007

Registriert seit: 23. Mär 2010
Ort: Duisburg
9 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 17:40
ok das mit dem initialisieren is logisch. habe ich übernommen. Aber warum sollte man nicht auf = True prüfen?
Die AV hatte ich in dieser zeile :
if checkbox[i].Checked = True then ausgewählte_programme[j] := checkbox[i].Caption; Aber diese taucht nun nicht mehr auf.
Anstatt desen ist mein array ausgewählte_programme nun leer o.O
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Array of Checkboxen : Zugrifsverletzung

  Alt 23. Mär 2010, 17:47
Schau Dir doch mal Beitrag #6 an.
Eine (oder mehrere) CheckListBox(en) könnte deinen Aufwand radikal vereinfachen!
Bevor du nicht geprüft hast, ob CheckListBox für Dich in Frage kommt ist jede weitere Änderung an deinem Programm mehr oder weniger sinnlos.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01:45 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