Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Record, Objekt oder Klassentyp erforderlich (https://www.delphipraxis.net/79804-record-objekt-oder-klassentyp-erforderlich.html)

Tumor666m 29. Okt 2006 23:14

Re: Record, Objekt oder Klassentyp erforderlich
 
Delphi-Quellcode:
unit Sprechstunde;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Panel1: TPanel;
    ScrollBar1: TScrollBar;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Oeffnen1: TMenuItem;
    Speichern1: TMenuItem;
    Drucken1: TMenuItem;
    Ende1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
    procedure Oeffnen1Click(Sender: TObject);
    procedure Speichern1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
const
  Max = 10;
var
  Form1: TForm1;
  Diagnose: Array[1..Max] of String;
  Nr: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
  Diagnose[1] := 'Him...';
  Diagnose[2] := 'Das ist ein Ding!';
  Diagnose[3] := 'Siehmal an!';
  Diagnose[4] := 'Was soll ich sagen?';
  Diagnose[5] := 'Tatsächlich?';
  Diagnose[6] := 'So geht es dir aso.';
  Diagnose[7] := 'Du hast Probleme.';
  Diagnose[8] := 'Das kann ich verstehen.';
  Diagnose[9] := 'Ich bin Sprachlos';
  Diagnose[10]:= 'Na Ja...';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Nr := random (Max) + 1;
  Panel1.Caption := Diagnose[Nr];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Caption := '';
  Edit1.Text    := '';
  Edit1.SetFocus;
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  Panel1.Caption := Diagnose[ScrollBar1.Position];
  ScrollBar1.Min := 1;
  ScrollBar1.Max := Max;
end;

procedure TForm1.Oeffnen1Click(Sender: TObject);
begin
  try
    if OpenDialog1.Execute then
      Diagnose.LoadFromFile(OpenDialog1.FileName);
    ScrollBar1.Max = Diagnose.Count - 1;
   except
      ShowMessage ('Fehler beim Öffnen der Datei!');
  end;
end;

procedure TForm1.Speichern1Click(Sender: TObject);
begin
  try
    if SaveDialog1.Execute then
      Psycho.SaveToFile (SaveDialog1.FileName);
   except
      ShowMessage ('Fehler beim Speichern der Datei!');
end;

end.

Fehlermeldungen:
[Fehler]Sprechstunde.pas[88]Record, Objekt oder Klassentyp erforderlich
[Fehler]Sprechstunde.pas[89]':=' erwartet aber '=' gefunden
[Fehler]Sprechstunde.pas[89]Operator oder Semikolon fehlt
[Fehler]Sprechstunde.pas[104] ";" erwartet aber "." gefunden
[Fehler]Sprechstunde.pas[106]Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler]Project2.dpr[5] Verwendete Unit 'Sprechstunde.pas`kann nicht compiliert werden


Das ist alles was da steht . :(

Für Hilfe bedanke ich mich schon im voraus

3_of_8 29. Okt 2006 23:28

Re: Record, Objekt oder Klassentyp erforderlich
 
Kein Wunder: Diagnose ist auch ein array of String. Das kannst du nicht aus einer Datei laden. Jedenfalls nicht so, wie du denkst.

Mache es einfach zu einer TStringList und füge ins OnCreate der Form ein:

Delphi-Quellcode:
Diagnose:=TStringList.Create;
Und ins OnDestroy:

Delphi-Quellcode:
Diagnose.Free;
EDIT: Achja, und eine StringList ist dann auch nullbasiert, das heißt das erste Element hat den Index 0. Was ist das denn eigentlich für ein komisches Buch, in dem so ein (entschuldigung) Mist steht?

Tumor666m 29. Okt 2006 23:35

Re: Record, Objekt oder Klassentyp erforderlich
 
Danke dir

Nur wo schreibe ich das hin ? <<< Blöde is *denk

3_of_8 29. Okt 2006 23:36

Re: Record, Objekt oder Klassentyp erforderlich
 
Aaalso...

Auf die Form klicken, im Objektinspektor auf "Ereignisse", "OnCreate", den Code einfügen, "OnDestroy" klicken, den anderen Code einfügen, fertig.

Tumor666m 29. Okt 2006 23:47

Re: Record, Objekt oder Klassentyp erforderlich
 
Habe ich bei beiden gemacht nur kommt wenn ich nach dem eintragen das nächste auswählen möchte nen fehler der Lautet Diagnose:=TStringList.Create; ist kein gültiger bezeichner. Das gleiche wenn ich auf OnDestroy geh

3_of_8 29. Okt 2006 23:49

Re: Record, Objekt oder Klassentyp erforderlich
 
Hast du die Deklaration von Diagnose von array of String auf TStringList geändert?

Tumor666m 29. Okt 2006 23:51

Re: Record, Objekt oder Klassentyp erforderlich
 
nein :oops:

Also schreib ich da jetzt Diagnose: Array[1..Max] TStringList; hin ?

3_of_8 29. Okt 2006 23:58

Re: Record, Objekt oder Klassentyp erforderlich
 
Nein.

Du schreibst hin:
Delphi-Quellcode:
Diagnose: TStringList;
EDIT: Nicht böse gemeint, aber am besten wäre es wohl, du schaust dir nochmal die Grundlagen von Delphi an. Ich habe stark das Gefühl, dass du in der Mitte anfängst, und nicht am Anfang. Ich spreche aus Erfahrung, ich habe den gleichen Fehler gemacht.

xaromz 29. Okt 2006 23:58

Re: Record, Objekt oder Klassentyp erforderlich
 
Hallo,
Zitat:

Zitat von Tumor666m
Also schreib ich da jetzt Diagnose: Array[1..Max] TStringList; hin ?

Nein, TStringList ist eine Klasse, die intern eine Liste verwaltet. Du musst also nur noch
Delphi-Quellcode:
Diagnose: TStringList;
schreiben.

Bei der Gelegenheit solltest Du auch gleich mal in der Hilfe nachsehen und Dir die ganzen Methoden dieser Klasse ansehen. Da kannst Du sicher was lernen. Überhaupt ist die Hilfe eine unschätzbare... nun ja, Hilfe :wink: .

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 Uhr.
Seite 2 von 2     12   

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