Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Exeption - Woher? (https://www.delphipraxis.net/118859-exeption-woher.html)

mkinzler 18. Aug 2008 22:07

Re: Exeption - Woher?
 
Was steht den in ID?

omata 18. Aug 2008 22:11

Re: Exeption - Woher?
 
Der Fehler kann ja nur in Buchliste[x] sein. Was für einen Wert hat x, wenn der Fehlerauftritt?

grenzgaenger 18. Aug 2008 22:33

Re: Exeption - Woher?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier mal 'n kleines testprogramm:
Delphi-Quellcode:
UNIT Unit1;

INTERFACE

USES
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, csv;

TYPE
  TForm1 = CLASS(TForm)
    sg: TStringGrid;
    PROCEDURE FormCreate(Sender: TObject);
    PROCEDURE FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    sl: TStringList;
  public
    { Public-Deklarationen }
  END;

VAR
  Form1: TForm1;

IMPLEMENTATION

{$R *.dfm}

PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR
  csv: tCSV;
  i:  integer;
  j:  integer;
BEGIN
  sl := TStringList.Create;
  sl.LoadFromFile('Buecher.txt');
  csv := tCSV.Create;
  TRY
    sg.ColCount := 8;
    sg.RowCount := sl.Count + 1;
    FOR i := 0 TO sl.Count - 1 DO
    BEGIN
      csv.Analyze(sl.Strings[i]);
      sg.Cells[0, i + 1] := IntToStr(i + 1);
      FOR j := 0 TO csv.Count - 1 DO
        sg.Cells[j + 1, i + 1] := csv.Columns[j];
    END;
  FINALLY
    csv.Free;
  END;
END;

PROCEDURE TForm1.FormDestroy(Sender: TObject);
BEGIN
  sl.Free;
END;

END.
Edit://Code umformatiert, da die codedarststellung in der DP recht eigensinnig ist und macht was sie will ... hoffe so ist es besser lesbar

Edit2: Kommentar von vorhin noch mal hinzugefügt, da der Editor diese vorloren hat...:

Wenn Du dir die zeilen ansiehst, sollte dir etwas bei auffallen...

omata 18. Aug 2008 22:39

Re: Exeption - Woher?
 
Warum muss die StringList global sein?

grenzgaenger 18. Aug 2008 22:42

Re: Exeption - Woher?
 
muss nicht, nur schnell reingehackt...

so, besser?

Delphi-Quellcode:
UNIT Unit1;

INTERFACE

USES
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, csv;

TYPE
  TForm1 = CLASS(TForm)
    sg: TStringGrid;
    PROCEDURE FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  END;

VAR
  Form1: TForm1;

IMPLEMENTATION

{$R *.dfm}

PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR
  csv: tCSV;
  i:  integer;
  j:  integer;
  sl: TStringList;
BEGIN
  sl := TStringList.Create;
  TRY
    sl.LoadFromFile('Buecher.txt');
    csv := tCSV.Create;
    TRY
      sg.ColCount := 8;
      sg.RowCount := sl.Count + 1;
      FOR i := 0 TO sl.Count - 1 DO
      BEGIN
        csv.Analyze(sl.Strings[i]);
        sg.Cells[0, i + 1] := IntToStr(i + 1);
        FOR j := 0 TO csv.Count - 1 DO
          sg.Cells[j + 1, i + 1] := csv.Columns[j];
      END;
    FINALLY
      csv.Free;
    END;
  FINALLY
    sl.Free;
  END;
END;

END.

omata 18. Aug 2008 23:01

Re: Exeption - Woher?
 
Wenn du schon fragst: Warum zwei Try-Finally-Blöcke?

Aber was ich viel spannender finde: wo kommt die csv-Unit her?
Bei Delphi7 hab ich die irgendwie nicht. Oder bin ich blind?

grenzgaenger 18. Aug 2008 23:14

Re: Exeption - Woher?
 
die zwei try finally kommen daher, weil bei jeden create etwas schiefgehen kann und da das objekt noch nicht initialisiert wäre... ein abprüfen auf NIL scheidet aus, da die objekte auf den stack angelegt sind und somit vor dem initialisieren irgendeinen wert aufweisen. deswegen der verschachtelte try finally...

die CSV unit ist selbst gebastelt, hatte keine lust die stringzerlegung mit der hand nachzuvollziehen, obgleich fortuneNext im ersten post etwas entsprechendes hatte. alzheimer hatte auch mal eine CSV unit in der opensource sparte gepostet...
aber die stringzerlegung war ja hier auch nicht das problem... deswegen erlaubte ich mir die erleichterung ..., ausserrdem will ich ihm ja auch nicht die ganze arbeit abnehmen ... ;-)

schöne grüsse und noch 'n schönen abend
GG

grenzgaenger 18. Aug 2008 23:19

Re: Exeption - Woher?
 
Zitat:

Zitat von fortuneNext
2. Jetzt möchten wir die Sachen sortieren, nach den div. Datentypen (also z.B. nach ID, nach Autor etc). Das wollten wir auslösen, indem man auf die "Fixed-Cols" drückt (oben wo die Beschriftung ist). Ein OnCellSelect geht leider nicht, da sich die Dinger nicht anklicken lassen. Gibt es da irgendeine Lösung oder werden wir eigene Buttons einbauen müssen? Also die Frage ist, lassen sich die Fixed Einträge zu Buttons umfunktionieren?.

kannst du das OnClick ereignis nicht verwenden? hier könntest doch abbprüfen ob in der ersten spalte/zeile oder auf etwas spezifisches gedrückt wurde und entsprechend darauf reagieren...

omata 18. Aug 2008 23:26

Re: Exeption - Woher?
 
Zitat:

Zitat von grenzgaenger
die CSV unit ist selbst gebastelt ... aber die stringzerlegung war ja hier auch nicht das problem...

Dann ist das aber kein sinnvolles Beispiel, weil es nicht nachvollziehbar ist bzw. der, dem es eigentlich helfen soll mit Fehlern zu gemüllt werden, die gar nichts mit dem eigentlichen Problem zu tun haben.

Ein Hinweis wäre da das Mindeste gewesen.

fortuneNext 19. Aug 2008 17:10

Re: Exeption - Woher?
 
Also ich muss sagen, das Beispiel verstehe ich wirklich nicht. Ich sehe zwar die Logik des Codes so einigermaßen ein (auch wenn ich die Unit nicht kenne), aber das hilft mir bei der Suche nach meinem Fehler überhaupt nicht.
x ist wie gesagt 1598...
und was ich auch schon schrieb (siehe post 1):
Delphi-Quellcode:
type
   TBuch = class(TObject)
   private
   {}
   public
   ID: integer;
        Thema: string;
        Autor: string;
        Titel: string;
        Ort: string;
        Erscheinungsjahr: integer;
        Verlag: string;
   end;
Weiss einer wo das Problem liegt?
Manchmal wünscht ich, in diesem Fach könnte einem der Lehrer zumindest manchmal weiterhelfen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz