Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Unknown Error Hilfe?! (https://www.delphipraxis.net/165800-unknown-error-hilfe.html)

St0rmhunter 16. Jan 2012 22:05

Delphi-Version: 5

Unknown Error Hilfe?!
 
Hallo Leute,

ich habe hier ein Problem immer wenn ich mein Programm starte kommt ein "Unknown Error". Vielleicht könnt ihr mir helfen indem ich hier mal den code poste. Ich bedanke mich schonmal im voraus :-D Wenn ihr mehr Infos braucht sagts :)

Unit1:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i,z: Integer;
    e: boolean;
begin
  bank1:=TBank.create;
  //Zufallskonten
  randomize;
  e:=true;
  i:=0;
  bank1.kerstellen(memo1.lines[z],random(10000));
  listbox1.Items[i]:=inttostr(bank1.konten[i].knummer);
  listbox2.Items[i]:=bank1.konten[i].kinhaber;
  listbox3.Items[i]:=inttostr(bank1.konten[i].kstand);
  i:=i+1;
  while i<100 do
  begin
    z:=random(memo1.lines.Count);
    if bank1.konten[i].kinhaber = memo1.Lines[z] then
    begin
      e:=false;
    end;
    if e=true then
    begin
      bank1.kerstellen(memo1.lines[z],random(10000));
      listbox1.Items[i]:=inttostr(bank1.konten[i].knummer);
      listbox2.Items[i]:=bank1.konten[i].kinhaber;
      listbox3.Items[i]:=inttostr(bank1.konten[i].kstand);
      i:=i+1;
    end;
  end;
  label7.caption:='Konten: ' + inttostr(length(bank1.konten));
end;
bank (Unit2):
Delphi-Quellcode:
type
  TBank = class
       konten: array of TKonto;
       constructor create;
       procedure Kerstellen(inhaber:string;kstand:integer);
  end;

implementation

constructor TBank.create;
begin
  setlength(konten,0);
end;

procedure TBank.Kerstellen(inhaber:string;kstand:Integer);
begin
  setlength(konten,(length(konten)+1));
  konten[high(konten)] := TKonto.create(inhaber,length(konten),kstand);
end;
konto (Unit3):
Delphi-Quellcode:
type
  TKonto = class
         kstand,knummer: Integer;
         kinhaber: String;
         constructor create(i:string;n,s:integer);
         procedure abheben(betrag:Integer);
         procedure einzahlen(betrag:Integer);
  end;

implementation

constructor TKonto.create(i:string;n,s:integer);
begin
  kinhaber:=i;
  kstand:=s;
  knummer:=n;
end;
Nochmals danke im voraus =)

Furtbichler 16. Jan 2012 22:13

AW: Unknown Error Hilfe?!
 
Den Listboxen würde ich auch mal Items spendieren. So mit Add z.B.

St0rmhunter 16. Jan 2012 22:43

AW: Unknown Error Hilfe?!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ach mann bin ich blöd ^^ ... danke das wars =)

Dann noch grad eine Frage: Wie kann ich es in listboxen machen, dass die Scrollbars wenn ich auf ein item klicke immer die gleiche Position haben und es nicht so aussieht wie hier (siehe Anhang)

mkinzler 16. Jan 2012 22:46

AW: Unknown Error Hilfe?!
 
Warum nimmst du kein Grid?

himitsu 16. Jan 2012 23:24

AW: Unknown Error Hilfe?!
 
Welche Delphiversion nutzt du und der Fehler heißt wirklich "Unknown Error"?

Zitat:

Zitat von Furtbichler (Beitrag 1146248)
Den Listboxen würde ich auch mal Items spendieren. So mit Add z.B.

Die Bank könnte auch mehr Konten benötigen.

Du hast nur 1 Konto erstellt, willst aber auf 100 Konten zugreifen.

Es kann auch nicht schaden, wenn man auf den Compiler hört.
Zitat:

[DCC Warnung] ...: W1036 Variable '...' ist möglicherweise nicht initialisiert worden
Und den Fehler, mit den fehlenden Konten, würde man bemerken, wenn man die Bereichsprüfung in den Projektoptionen aktiviert.


PS: Es gibt schon Themen ala "Memos/Listboxen synchron scrollen" ... man muß sie nur suchen. :angle2:
Außerdem: Nur eine Frage pro Thread.

DeddyH 17. Jan 2012 07:03

AW: Unknown Error Hilfe?!
 
Außerdem:
Zitat:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i,z: Integer;
    e: boolean;
begin
  ...
  bank1.kerstellen(memo1.lines[z],random(10000)); //Welchen Wert hat z hier?


St0rmhunter 17. Jan 2012 21:00

AW: Unknown Error Hilfe?!
 
@mkinzler Mit Grids kenne ich mich nicht aus :(

@himitsu 1.
Zitat:

Du hast nur 1 Konto erstellt, willst aber auf 100 Konten zugreifen.
Das stimmt nicht ich habe eine while schleife eingebaut die 100 mal durchläuft und die Prozedur
Delphi-Quellcode:
bank1.kerstellen(memo1.lines[z],random(10000));
ausführt, welche immer wieder ein neues Konto erstellt.

2. Was ist die Bereichspfüfung?

3. ok dann such ich mal, dachte nur ich könnte das gerade in einem erledigen :wink:

@DeddyH z wird jedesmal neu definiert (per Zufall, ein Wert zwischen 0 und der Linesanzahl des memo1)

mkinzler 17. Jan 2012 21:13

AW: Unknown Error Hilfe?!
 
Zitat:

@mkinzler Mit Grids kenne ich mich nicht aus
Das kann man ändern

himitsu 17. Jan 2012 22:23

AW: Unknown Error Hilfe?!
 
Zitat:

Zitat von St0rmhunter (Beitrag 1146378)
Das stimmt nicht ich habe eine while schleife eingebaut die 100 mal durchläuft und die Prozedur
Delphi-Quellcode:
bank1.kerstellen(memo1.lines[z],random(10000));
ausführt, welche immer wieder ein neues Konto erstellt.

Dein Code in Beitrag #1 sagt da aber was Anderes.

Zitat:

Zitat von St0rmhunter (Beitrag 1146378)
@DeddyH z wird jedesmal neu definiert (per Zufall, ein Wert zwischen 0 und der Linesanzahl des memo1)

Hier sagt ebenfalls das in Beitrag #1 Gezeigte was Anderes.
Mein Compiler würde zu dem Z Folgendes sagen.
Zitat:

Zitat von himitsu (Beitrag 1146255)
Zitat:

[DCC Warnung] ...: W1036 Variable '...' ist möglicherweise nicht initialisiert worden

Zitat:

Zitat von himitsu (Beitrag 1146255)
Welche Delphiversion nutzt du und der Fehler heißt wirklich "Unknown Error"?

?

Zitat:

Zitat von St0rmhunter (Beitrag 1146378)
2. Was ist die Bereichspfüfung?

Projektoptionen > Compiler > Laufzeitfehler > Bereichsprüfung und Überlaufprüfung
(ich bin mir aber sicher, daß F1 dort nicht stumm bleibt)

Diese Optionen sagen dem Compiler, daß er zusätzlichen Prüfcode generieren soll.
- Bereichsprüfung > schaut ob Überläufe in Berechnungen auftreten (z.B. der Wert einer Berechnung zu groß wird un nicht mehr in die Variable paßt)
- Überlaufprfung > prüft den Index, bei Array-Zugriffen, also daß nicht außerhalb des Arrays zugegriffen wird (auf Index 5 zugreifen, aber nur 3 Elemente im Array vorhanden)

Delphi-Quellcode:
var
  A: array of Integer;

SetLength(A, 3);
A[5] := 666;
Und jetzt mal mit und ohne aktivierter Bereichsprüfung ausprobieren.

Oder
Delphi-Quellcode:
var
  A: array of Integer;
  i: Integer;

SetLength(A, 3);
for i := 0 to Length(A) do // ein oft auftretender Fehler >  for i := 0 to 3 do
  A[i] := 666;

St0rmhunter 19. Jan 2012 16:45

AW: Unknown Error Hilfe?!
 
1. Delphi 7 und ja bei mir steht unknown error

2.Danke für eure Hilfe, der Fehler kam dadurch zustande das ein Konto mehr als einmal erstellt wurde. Habe die Erstellung aus der Schleife genommen und jetzt klappts ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 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