Thema: Delphi Abstrakter Fehler

Einzelnen Beitrag anzeigen

MiChiJong

Registriert seit: 27. Okt 2006
20 Beiträge
 
#14

Re: Abstrakter Fehler

  Alt 13. Nov 2006, 23:51
Ok dann ist dieser Fehler nicht reproduzierbar.
Nachfolgend der von mir bereits entspeckte Quelltext.

Delphi-Quellcode:
unit ssumain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Menus, IdExplicitTLSClientServerBase, IdFTP,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  OleCtrls, SHDocVw_TLB, ExtCtrls;

type
  TNamenArray = Array [0..12] of String;

  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    createTeilnehmerleiste: TButton;
    sendListe: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    IdHTTP1: TIdHTTP;
    IdFTP1: TIdFTP;
    Datei1: TMenuItem;
    Beenden1: TMenuItem;
    TabSheet2: TTabSheet;
    WebBrowser1: TWebBrowser;
    Timer1: TTimer;
    procedure createTeilnehmerleisteClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure sendListeClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
 //Eigene Funktionen
    procedure generateTextfeld(left : Integer; name: String; width:Integer);
    procedure generateTeilnehmerfelder();
    procedure generateUeberschriften();
    procedure generateAuswahl(left : Integer; name: String);
    procedure generateCombobox(left : Integer; name: String; top:integer; width:integer);
    function datensatzRueckgabe(): String;
    function setArrays():TNamenArray;
    procedure loadCombobox(datname:String;cbox:String);
    function changeToID(temp:String): String;
    procedure dateiUpload();
    procedure Beenden1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure generateButton();
    procedure LoeschenClick(Sender: TObject);
    procedure loeschenTeilnehmer(tempzahl:String);
    procedure verschiebeTeilnehmer(tempzahl:String);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zaehler: Integer;
  teilnehmer,tempdat : TextFile;

implementation
uses ssu;

{$R *.dfm}

procedure TForm1.createTeilnehmerleisteClick(Sender: TObject);
begin
if zaehler=0 then
begin
  generateUeberschriften();
end;
generateTeilnehmerfelder();

end;

procedure TForm1.generateTeilnehmerfelder();
var
x:Integer;
left: Array[0 .. 12] of Integer;
name: TNamenArray;
tempname: String;
width: Array[0 .. 12] of Integer;
begin

left[0]:=8;
left[1]:=72;
left[2]:=136;
left[3]:=208;
left[4]:=248;
left[5]:=296;
left[6]:=360;
left[7]:=432;
left[8]:=496;
left[9]:=536;
left[10]:=600;
left[11]:=656;
left[12]:=744;


width[0]:=64;
width[1]:=62;
width[2]:=72;
width[3]:=40;
width[4]:=48;
width[5]:=64;
width[6]:=72;
width[7]:=64;
width[8]:=40;
width[9]:=64;
width[10]:=56;
width[11]:=88;
width[12]:=70;

name:=setArrays();

for x := 0 to 12 do
  begin
     generateTextfeld(left[x],name[x],width[x]);
  end;
     tempname:='kurs' + IntToStr(zaehler);
     generateCombobox(830,tempname,-1,135);
     loadCombobox('kurs.txt',tempname);
     tempname:='sportart' + IntToStr(zaehler);
     generateCombobox(965,tempname,-1,50);
     loadCombobox('sportarten.txt',tempname);
     generateAuswahl(814,'mitglied');
     generateButton();

  zaehler:=zaehler+1;

end;

procedure TForm1.generateButton();
var
 Button: TButton;
 tname: String;
 tleft, ttop,tempzaehler : Integer;
begin
 //Vordekleration der Variablen
 tname:='loeschen' + IntToStr(zaehler);
 tleft:=0;
 tempzaehler:=zaehler-1;
 ttop:=50+zaehler*20;

 Button:=TButton.Create(Self);

 with Button do
 begin
     Name:=tname;
     Parent:=TabSheet1;
     Left:=tleft;
     Top:=ttop;
     Width:=8;
     Height:=8;
     OnClick:=LoeschenClick;
     Caption:='X';
 end;

end;

procedure TForm1.LoeschenClick(Sender: TObject);
var
tempzahl: String;
begin
 if Sender is TButton then
   tempzahl:=TButton(Sender).Name;
   Delete(tempzahl,0,8);
   tempzahl:=Copy(tempzahl,9,2);
   loeschenTeilnehmer(tempzahl);
   zaehler:=zaehler-1;
end;
procedure TForm1.loeschenTeilnehmer(tempzahl:String);
var
name: TNamenArray;
x,tempx: Integer;
temp: String;
begin
name:=setArrays();
ShowMessage('Loeschen T.');
for x := 0 to 12 do
  begin
     TEdit(FindComponent(name[x] + tempzahl)).Free;
  end;
ShowMessage('Loeschen T.');
  //Löschen des Mitglied und Kursfeldes
  TCheckBox(FindComponent('mitglied' + tempzahl)).Free;
  TComboBox(FindComponent('kurs' + tempzahl)).Free;
  TComboBox(FindComponent('sportart' + tempzahl)).Free;
  TButton(FindComponent('loeschen' + tempzahl)).Free;
  tempx:=strtoint(tempzahl)+1;

for x := tempx to zaehler-1 do
  begin
    verschiebeTeilnehmer(inttostr(x));
  end;

end;

procedure TForm1.verschiebeTeilnehmer(tempzahl:String);
var
name: TNamenArray;
x: Integer;
temp: String;
begin
ShowMessage('Verschiebe T.');

//erniedrige Tempzahl um 1 (neuer Wert)
temp:=InttoStr(Strtoint(tempzahl)-1);
//Einlesen des Arrays mit den Editfeldnamen
name:=setArrays();
for x := 0 to 12 do
  begin
     TEdit(FindComponent(name[x] + tempzahl)).Top:=TEdit(FindComponent(name[x] + tempzahl)).Top-20;
     TEdit(FindComponent(name[x] + tempzahl)).Name:=name[x] + temp;
  end;
  //Positionsänderung der Checkboxen, Comboboxen und des Löschbuttons
  TCheckBox(FindComponent('mitglied' + tempzahl)).Top:=TCheckBox(FindComponent('mitglied' + tempzahl)).Top-20;
  TComboBox(FindComponent('kurs' + tempzahl)).Top:=TComboBox(FindComponent('kurs' + tempzahl)).Top-20;
  TComboBox(FindComponent('sportart' + tempzahl)).Top:=TComboBox(FindComponent('sportart' + tempzahl)).Top-20;
  TButton(FindComponent('loeschen' + tempzahl)).Top:=TButton(FindComponent('loeschen' + tempzahl)).Top-20;
  //Umbennen der Checkboxen, Comboboxen und des Löschbuttons
  TCheckBox(FindComponent('mitglied' + tempzahl)).Name:='mitglied' + temp;
  TComboBox(FindComponent('kurs' + tempzahl)).Name:='kurs' + temp;
  TComboBox(FindComponent('sportart' + tempzahl)).Name:='sportart' + temp;
  TButton(FindComponent('loeschen' + tempzahl)).Name:='loeschen' + temp;
end;


procedure TForm1.generateAuswahl(left : Integer; name: String);
var
 Auswahlfeld: TCheckBox;
 tname: String;
 tbool: Boolean;
 tleft, tempzaehler : Integer;
begin
 //Vordekleration der Variablen
 tname:=name + IntToStr(zaehler);
 tleft:=left;
 tempzaehler:=zaehler-1;
 if zaehler>0 then begin
 tbool:=TCheckBox(FindComponent(name + IntToStr(tempzaehler))).Checked;
 end;

 Auswahlfeld:=TCheckBox.Create(Self);
 with Auswahlfeld do
 begin
     if zaehler=0 then begin
      Checked:=False;
      end
      else begin
      Checked:=tbool;
      end;
     Name:=tname;
     Parent:=TabSheet1;
     Left:=tleft;
     Caption:=' ';

     width:=15;
     Top:=50+zaehler*20;
 end;

end;

procedure TForm1.generateCombobox(left : Integer; name: String; top:Integer; width:integer);
var
 Auswahlfeld: TComboBox;
 tname: String;
 twidth, tleft, ttop,tempzaehler : Integer;
begin
 //Vordekleration der Variablen
 twidth:=width;
 tname:=name;
 tleft:=left;
 tempzaehler:=zaehler-1;
 ttop:=top;
 if ttop=-1 then ttop:=50+zaehler*20;

 Auswahlfeld:=TComboBox.Create(Self);

 with Auswahlfeld do
 begin
     Name:=tname;
     Parent:=TabSheet1;
     Left:=tleft;
     Top:=ttop;
     Width:=twidth;
     Text:='Bitte waehlen';
 end;
end;

procedure TForm1.loadCombobox(datname:String;cbox:String);
var
temp,tcbox:String;
combobox: TComboBox;
begin
    tcbox:=cbox;
    assignfile(tempdat,datname);
    reset(tempdat);

    combobox:=TComboBox(FindComponent(tcbox));


    while not eof(tempdat) do
      begin
          readln(tempdat, temp);
          with combobox do Items.Add(temp);
      end;
    closefile(tempdat);



end;

procedure TForm1.generateTextfeld(left : Integer; name: String; width:Integer);
var
 Textfeld: TEdit;
 tname,ttext: String;
 tleft, twidth,tempzaehler : Integer;
begin
 //Vordekleration der Variablen
 tname:=name + IntToStr(zaehler);
 twidth:=width;
 tleft:=left;
 tempzaehler:=zaehler-1;

 if zaehler>0 then begin
 ttext:=TEdit(FindComponent(name + IntToStr(tempzaehler))).Text;
 end;

 //Ab hier wird das Textfeld erzeugt;

 Textfeld:=TEdit.Create(Self);
 with Textfeld do
 begin
     if zaehler=0 then begin
      Text:=' ';
      end
      else begin
      Text:=ttext;
      end;
     Name:=tname;
     Parent:=TabSheet1;
     Left:=tleft;
     Width:=twidth;
     Top:=50+zaehler*20;
 end;

end;

procedure TForm1.generateUeberschriften();
var
x : Integer;
begin
for x := 1 to 16 do
  begin
    (FindComponent('label' + IntToStr(x)) as Tlabel).Visible:=True;
  end;

end;


procedure TForm1.FormCreate(Sender: TObject);
var
x : Integer;
begin
// Macht die Überschriften Labels unsichtbar
for x := 1 to 16 do
  begin
    (FindComponent('label' + IntToStr(x)) as Tlabel).Visible:=False;
  end;
// Erzeugt die Ausfahrtliste
 generateCombobox(250,'ausfahrt',0,300);
 WebBrowser1.Visible;
 randomize;
end;

function TForm1.setArrays():TNamenArray;
var name : TNamenArray;
begin

name[0]:='name';
name[1]:='vorname';
name[2]:='strasse';
name[3]:='plz';
name[4]:='ort';
name[5]:='gebdatum';
name[6]:='email';
name[7]:='telefon';
name[8]:='preis';
name[9]:='bank';
name[10]:='blz';
name[11]:='kontoinhaber';
name[12]:='kontonr';
result := name;
end;

procedure TForm1.sendListeClick(Sender: TObject);
begin
  
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Close;
end;

procedure TForm1.dateiUpload();
begin

end;


function TForm1.changeToID(temp:String): String;
begin
end;

function TForm1.datensatzRueckgabe(): String;
begin

end;



procedure TForm1.Beenden1Click(Sender: TObject);
begin
Form2.Close;
Close;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
end;

end.
  Mit Zitat antworten Zitat