Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi entsprechender Delphi Code zu VB6? (https://www.delphipraxis.net/29361-entsprechender-delphi-code-zu-vb6.html)

jaegerschnitzel 8. Sep 2004 10:31


entsprechender Delphi Code zu VB6?
 
Ich suche einen Befehl in Delphi, nämlich:
Welcher Befehl entspricht dem "Select Case" Befehl in VB6?

Ich hoffe es kann mir jemand helfen!

Snoop007 8. Sep 2004 10:37

Re: entsprechender Delphi Code zu VB6?
 
wenn du die selektion meinst
Code:
case <value> of
  number : <anweisung>;
  .
  .
  .
  numbern : <anweisung>;
  else
    <anweisung>;
  end;

jaegerschnitzel 8. Sep 2004 11:16

Re: entsprechender Delphi Code zu VB6?
 
Ja sowas meinte ich.
Kann ich da auch mehrere Werte zusammenfassen, etwa so:

Code:
case <value> of
  number 1: <anweisung>;
  .
  .
  .
  numbern 3 to 10: <anweisung>;
  else
    <anweisung>;
  end;

Gollum 8. Sep 2004 11:22

Re: entsprechender Delphi Code zu VB6?
 
Hallo,

ja, kannst Du:

Delphi-Quellcode:
case <value> of
  1: <anweisung>;
  .
  .
  .
  3..10,
  25..46,
  'A'..'Z': <anweisung>;
  else
    <anweisung>;
  end;

ibp 8. Sep 2004 11:24

Re: entsprechender Delphi Code zu VB6?
 
ja
Delphi-Quellcode:
Die case-Anweisung

case I of
  1..5: Caption := 'Low';
  6..9: Caption := 'High';
  0, 10..99: Caption := 'Out of range';
else
  Caption := '';
end;

jaegerschnitzel 9. Sep 2004 17:17

Re: entsprechender Delphi Code zu VB6?
 
Kennt sich jemand mit VB besser aus?
Wenn ja wäre es nett, wenn mir jemand den folgenden VB-Code in Delphi "übersetzt", weil ich damit nicht klarkomme.

Code:
Option Explicit
Public Folgennummer As Byte


Private Sub mnu_01_Click()
Folgennummer = 1
PlayEpisodeNummer Folgennummer
End Sub

Private Sub mnu_02_Click()
Folgennummer = 2
PlayEpisodeNummer Folgennummer
End Sub


Private Sub PlayEpisodeNummer(index As Byte)
Select Case index
Case 1
Case 2
End Select
End Sub
Mit dem unteren Teil komm ich nicht klar. PlayEpisodeNummer ist eine Funktion die beim klicken auf ein Menü aufgerufen wird. Wie genau mache ich das in Delphi??

Sprint 9. Sep 2004 19:48

Re: entsprechender Delphi Code zu VB6?
 
Zitat:

Zitat von jaegerschnitzel
Mit dem unteren Teil komm ich nicht klar. PlayEpisodeNummer ist eine Funktion die beim klicken auf ein Menü aufgerufen wird. Wie genau mache ich das in Delphi??

In PlayEpisodeNummer wird ja nichts ausgeführt!!! Da Fehlen wohl einige Befehle. :)

Delphi-Quellcode:
var
  Folgennummer: Integer;

procedure PlayEpisodeNummer(Index: Integer);
begin

  case Index of
    1:;
    2:;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin

  Folgennummer := 1;
  PlayEpisodeNummer(Folgennummer);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin

  Folgennummer := 2;
  PlayEpisodeNummer(Folgennummer);

end;
Statt Menü's habe ich zwei Buttons genommen. Wird wohl als Hilfestellung reichen. Oder?

jaegerschnitzel 11. Sep 2004 21:21

Re: entsprechender Delphi Code zu VB6?
 
Nochmal erklärt.
Wenn man im Menu wo rauf klickt wird zuerst die Folgennummer gesetzt. Danach soll der Befehl PlayEpisodeNummer ausgeführt werden, mit der vorher gesetzten Variabel (Folgennummer). Je nach der Folgennummer trifft dann der bestimmte Case zu.

Es kommt immer folgende Fehlermeldung:

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin

  Folgennummer := 1;
  PlayEpisodeNummer(Folgennummer);

end;
Eigentlich sollte nun der Code PlayEpisodeNummer in Kraft treten, aber das tut er nicht: PlayEpisodeNummer Undefinierter Bezeichner.

dizzy 12. Sep 2004 00:33

Re: entsprechender Delphi Code zu VB6?
 
Keks... PlayEpisodeNummer muss natürlich auch vorher programmiert sein... Das ist ja keine Standard-Operation die mit Delphi mit kommt :roll:.
Wir nahmen jetzt mal alle an (nehme ich mal an ;)), dass die Funktion bereits existiert.
Es muss also irgendeine Funktion
Delphi-Quellcode:
procedure PlayEpisodeNumber(Nummer: Integer);
begin
  // Dein Code
end;
her, die das macht, was sie eben machen soll. :spin:

gruss,
dizzy

jaegerschnitzel 15. Okt 2004 19:19

Re: entsprechender Delphi Code zu VB6?
 
wie muss ich den Befehl PlayEpisodeNummer definieren, damit er global für den ganzen Code immer gilt?

ibp 15. Okt 2004 20:14

Re: entsprechender Delphi Code zu VB6?
 
erkundige dich mal überHier im Forum suchenprivate public !

jaegerschnitzel 20. Okt 2004 18:50

Re: entsprechender Delphi Code zu VB6?
 
Komme immer noch nicht damit klar.
Also nochmal erklärt. Zuerst mein kompletter Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Mask, ExtCtrls, ComCtrls, XPMan, CheckLst,
  Grids, ValEdit, Outline, DirOutln, Calendar, Spin, ColorGrd, OleCtrls,
  Chartfx3, OleCtnrs, jpeg, Buttons, AlignLabeledEdit, AlignEdit;

type
  TForm1 = class(TForm)
    Image: TImage;

    edit_Drehbuch: TLabeledEdit;
    edit_Regie: TLabeledEdit;
    RichEdit: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    MainMenu1: TMainMenu;
    edit_Folge: TAlignLabeledEdit;
    edit_ErstausstrahlungD: TAlignLabeledEdit;
    edit_ErstausstrahlungU: TAlignLabeledEdit;
    edit_Titel: TLabeledEdit;
    edit_OriginalTitel: TLabeledEdit;
    Staffel11: TMenuItem;
    N01NichtVonDieserWelt1: TMenuItem;
    N02HutungBeiVollmond1: TMenuItem;
    N03Feuerball1: TMenuItem;
    procedure N01NichtVonDieserWelt1Click(Sender: TObject);
    procedure N02HutungBeiVollmond1Click(Sender: TObject);

    procedure PlayEpisodeNummer(Folgennummer: Integer);


    private
    { Private-Deklarationen }
    Folgennummer: Integer;
   
    public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.N01NichtVonDieserWelt1Click(Sender: TObject);
begin
Folgennummer := 1;
PlayEpisodeNummer(Folgennummer);
end;

procedure TForm1.N02HutungBeiVollmond1Click(Sender: TObject);
begin
Folgennummer := 2;
PlayEpisodeNummer(Folgennummer);
end;

procedure PlayEpisodeNummer(Folgennummer: Integer);
begin
  case Folgennummer of
    1:;
    richedit.Lines.LoadFromFile('.\episodes\01.txt');
    Image.Picture.LoadFromFile('.\images\01.jpg');
    2:;
    richedit.Lines.LoadFromFile('.\episodes\02.txt');
    Image.Picture.LoadFromFile('.\images\02.jpg');
  end;
end;

end.
Wenn ich nun auf einen Menüpunkt klicke soll zuerst der Integer Folgennummer auf 1 bzw. 2 gesetzt werden. Nun soll der Befehl PlayEpisodeNummer(Folgennummer); ausgeführt werden. Je nachdem ob Folgennummer 1 oder 2 ist, soll der case 1 oder 2 ausgeführt werden.
Nur geht das nicht. Es kommt immer eine Fehlermeldung (ungeügende forward -oder external-deklarationen). An was kann das liegen?

FlorianK 20. Okt 2004 20:02

Re: entsprechender Delphi Code zu VB6?
 
Hi,

versuchs mal damit:

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Mask, ExtCtrls, ComCtrls, XPMan, CheckLst,
  Grids, ValEdit, Outline, DirOutln, Calendar, Spin, ColorGrd, OleCtrls,
  Chartfx3, OleCtnrs, jpeg, Buttons, AlignLabeledEdit, AlignEdit;

type
  TForm1 = class(TForm)
    Image: TImage;

    edit_Drehbuch: TLabeledEdit;
    edit_Regie: TLabeledEdit;
    RichEdit: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    MainMenu1: TMainMenu;
    edit_Folge: TAlignLabeledEdit;
    edit_ErstausstrahlungD: TAlignLabeledEdit;
    edit_ErstausstrahlungU: TAlignLabeledEdit;
    edit_Titel: TLabeledEdit;
    edit_OriginalTitel: TLabeledEdit;
    Staffel11: TMenuItem;
    N01NichtVonDieserWelt1: TMenuItem;
    N02HutungBeiVollmond1: TMenuItem;
    N03Feuerball1: TMenuItem;
    procedure N01NichtVonDieserWelt1Click(Sender: TObject);
    procedure N02HutungBeiVollmond1Click(Sender: TObject);

    procedure PlayEpisodeNummer(Folgennummer: Integer);


    private
    { Private-Deklarationen }
    Folgennummer: Integer;
   
    public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.N01NichtVonDieserWelt1Click(Sender: TObject);
begin
Folgennummer := 1;
PlayEpisodeNummer(Folgennummer);
end;

procedure TForm1.N02HutungBeiVollmond1Click(Sender: TObject);
begin
Folgennummer := 2;
PlayEpisodeNummer(Folgennummer);
end;

procedure PlayEpisodeNummer(Folgennummer: Integer);
begin
  case Folgennummer of
    1: begin // Hier musst du begin schreiben wenn was mehrzeiliges kommt!
      richedit.Lines.LoadFromFile('.\episodes\01.txt');
      Image.Picture.LoadFromFile('.\images\01.jpg');
    end;     // und hier end
    2: begin // hier genauso begin
      richedit.Lines.LoadFromFile('.\episodes\02.txt');
      Image.Picture.LoadFromFile('.\images\02.jpg');
    end;     // hier ebenfalls end
  end;
end;

end.

SirThornberry 20. Okt 2004 20:15

Re: entsprechender Delphi Code zu VB6?
 
PlayEpisodeNumber sollte außerhalb der TForm1-Klassendeclaration, declariert werden wenn es schon keine Methode davon ist (soll ja global vorhanden sein :freak: ).

jaegerschnitzel 20. Okt 2004 21:04

Re: entsprechender Delphi Code zu VB6?
 
@FlorianK
Es kommt wieder eine Fehlermeldung:
Undefinierter Bezeichner: 'richedit'
Undefinierter Bezeichner: 'Image'

FlorianK 20. Okt 2004 21:16

Re: entsprechender Delphi Code zu VB6?
 
Jetzt müsste es klappen!!!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Mask, ExtCtrls, ComCtrls, XPMan, CheckLst,
  Grids, ValEdit, Outline, DirOutln, Calendar, Spin, ColorGrd, OleCtrls,
  Chartfx3, OleCtnrs, jpeg, Buttons, AlignLabeledEdit, AlignEdit;

type
  TForm1 = class(TForm)
    Image: TImage;

    edit_Drehbuch: TLabeledEdit;
    edit_Regie: TLabeledEdit;
    RichEdit: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    MainMenu1: TMainMenu;
    edit_Folge: TAlignLabeledEdit;
    edit_ErstausstrahlungD: TAlignLabeledEdit;
    edit_ErstausstrahlungU: TAlignLabeledEdit;
    edit_Titel: TLabeledEdit;
    edit_OriginalTitel: TLabeledEdit;
    Staffel11: TMenuItem;
    N01NichtVonDieserWelt1: TMenuItem;
    N02HutungBeiVollmond1: TMenuItem;
    N03Feuerball1: TMenuItem;
    procedure N01NichtVonDieserWelt1Click(Sender: TObject);
    procedure N02HutungBeiVollmond1Click(Sender: TObject);

    private
    { Private-Deklarationen }
    Folgennummer: Integer;
   
    public
    { Public-Deklarationen }
  end;

procedure PlayEpisodeNummer(Folgennummer: Integer);
// Darf nicht in der Klasse TForm1 deklariert werden!

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.N01NichtVonDieserWelt1Click(Sender: TObject);
begin
Folgennummer := 1;
PlayEpisodeNummer(Folgennummer);
end;

procedure TForm1.N02HutungBeiVollmond1Click(Sender: TObject);
begin
Folgennummer := 2;
PlayEpisodeNummer(Folgennummer);
end;

procedure PlayEpisodeNummer(Folgennummer: Integer);
begin
  case Folgennummer of
    1: begin // Hier musst du 'begin' schreiben wenn was mehrzeiliges kommt!
      Form1.RichEdit.Lines.LoadFromFile('.\episodes\01.txt'); // Form1 muss ergänzt werden
      Form1.Image.Picture.LoadFromFile('.\images\01.jpg');
    end;     // und hier 'end'
    2: begin // hier genauso 'begin'
      Form1.richedit.Lines.LoadFromFile('.\episodes\02.txt');
      Form1.Image.Picture.LoadFromFile('.\images\02.jpg');
    end;     // hier ebenfalls 'end'
  end;
end;

end.

jaegerschnitzel 21. Okt 2004 15:33

Re: entsprechender Delphi Code zu VB6?
 
THX an alle für eure Geduld!
Jetzt gehts!

FlorianK 21. Okt 2004 20:45

Re: entsprechender Delphi Code zu VB6?
 
Kein Problem WIR / bzw. ich helfen / helfe gerne.

Florian K. ;-) :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.

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 by Thomas Breitkreuz