Autor Beitrag
dragi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 25.06.03 15:51 
Hallo,

wahrscheinlich ist es so simpel das ich deshalb nichts finde.

Ich möchte das meine Programm, wenn das Edit1 Feld Leer ist ein Label anzeigt, ansonsten das Zeichen in edit umwandelt:

if

edit1.Text = '' (das soll Leer bedeuten)
then

Label4.Visible := true

else

Edit2.Text := IntToStr(ord(edit1.text[1]));

Wenn ich das Programm starte dann zeigt er immer das Label an, ob Zeichen da oder nicht und wandelt nichts mehr um. Was mache ich falsch?
Hoffe hab mich einigermassen verständlich ausgedrückt.

Für alle Antworten schon mal

Danke
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 25.06.03 16:49 
Hallo!

Zum einen solltest Du Delpi-Tags in Deinen Postings verwenden. Zum anderen fehlt die Information, wo der von Dir gepostete Code aufgerufen wird!

Wenn Du diesen Code (1) im OnCreate-Ereignis der Form und (2) im OnChange-Ereignis von Edit1 aufrufst, dann sollte es klappen.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
dragi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 25.06.03 17:05 
ähmm, bin noch dabei delphi zu verstehen, poste hier einfach mal den gesamten Code den ich bis jetzt habe:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Edit1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
//wandelt Zeichen in ASCII um
  if
  Edit2.Text = ''
  Then
  Label4.Visible := true
  Else
  Edit2.Text := IntToStr(ord(edit1.text[1]));
end;

procedure TForm1.Button2Click(Sender: TObject);
//wandelt ASCII in Zeichen um
begin
Edit1.Text := Chr(StrToInt(Edit2.Text));
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    if MessageDlg('Wirklich beenden?',
                mtConfirmation,
                [mbYes,mbNo],
                0)=mrNo then
    CanClose:=False

end;

procedure TForm1.Edit1Change(Sender: TObject);
begin

end;

end.
waldmeister
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 136

Win XP
D7 Enterp
BeitragVerfasst: Mi 25.06.03 17:14 
kann es sein, dass du die eigentschaft des labels im objektinspektor vorher nicht auf visible= false gesetzt hast??

_________________
der wald....der meister....der meister des waldes....der waldmeister
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 25.06.03 17:17 
hallo dragi!

ich weiss zwar nicht, wozu das gut soll, aber bítte! :)

entweder stellt du im OI des Labels4 'visible = false' ein
oder du erledigst das im TForm1.OnCreate Event.
ich stell solche änderungen lieber in OnCreate-Event ein, da springen sie mir schneller ins auge.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
{$UNTESTED}
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Label4.Visible:= (Edit2.Text = '');
  (*damit visible auch wieder false werden kann*) 
  if not Label4.Visible then 
    (* Edit2.Text:= IntToStr(ord(edit1.text[1])); ???? *)
    Edit2.Text:= Edit1.Text[1]
  else
    Edit2.Text.Clear
end;


ich hoffe, dass ich dein problem richtig verstanden hab.

mfg, stefan
dragi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 25.06.03 17:17 
doch das habe ich. Es ist ja auch erst nicht da das Label, nur wenn ich den Button drücke. Das soll passieren wenn das Edit Feld leer ist, passiert aber auch wenn ein Zeichen im Edit-Feld ist, dann soll er aber umwandeln in ASCII. Und dann soll das Label auch wieder verschwinden... aber das alles passiert irgendwie nicht:(
dragi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 25.06.03 18:00 
So funktioniert es jetzt:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
unit ascii;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
if
Edit1.Text = ''
then
Label4.Visible := true
else
Edit2.Text:= IntToStr(ord(edit1.text[1]));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if
Edit2.Text = ''
then
Label4.Visible:=true
else
Edit1.Text := Chr(StrToInt(Edit2.Text));
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    if MessageDlg('Wirklich beenden?',
                mtConfirmation,
                [mbYes,mbNo],
                0)=mrNo then
    CanClose:=False

end;


end.


Wie bekomme ich das Programm jetzt aber dazu, das wenn else eintrifft, vorher aber das Label aufgetaucht ist, es wieder verschwindet?

...und Danke für die Hilfe bis jetzt!
kat1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 40

Win XP
D6 EntPr
BeitragVerfasst: Mi 25.06.03 19:26 
Na indem Du einfach

ausblenden Delphi-Quelltext
1:
2:
label4.Hide;
//oder label4.Visible=False;


in der else Bedingung aufrufst, oder nicht?

_________________
Mfg Uwe
Es ist eine Unsitte der Menschen, sich an alles zu gewöhnen.
dragi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 25.06.03 19:33 
Habe ich auch schon probiert, doch wenn ich das dann dazu schreibe kommt immer "Operator oder Semikolon fehlt"! Habe es so gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button1Click(Sender: TObject);
begin
if
Edit1.Text = ''
then
Label4.Visible := true
else
Edit2.Text:= IntToStr(ord(edit1.text[1]))
Label4.Hide;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if
Edit2.Text = ''
then
Label4.Visible:=true
else
Edit1.Text := Chr(StrToInt(Edit2.Text))
Label4.Hide;
end;
kat1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 40

Win XP
D6 EntPr
BeitragVerfasst: Mi 25.06.03 19:40 
okay, also du vergisst, dass wenn du in der else-bedingung mehrere anweisungen hast, dass du das durch ein begin und end eingrenzen musst, weiterhin fehlt wirklich dann nach der ersten anweisung das semikolon, denn das darf man nur direkt vor end weglassen und direkt vor else ist es gar nicht erlaubt. Wenn Du meine Meinung hören willst, dann schreib in Zukunft auch besser vor end ein Semikolon, das erleichtert die Sache ungemein.

_________________
Mfg Uwe
Es ist eine Unsitte der Menschen, sich an alles zu gewöhnen.
dragi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mi 25.06.03 20:40 
Danke, das war mein fehler! Manchmal sieht man den Wald vpr lauter Bäumen nicht!
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mi 25.06.03 21:22 
Versuche mal deinen code überscihtlicher zu gestalten, in deinem Fall besonders das Einrücken von 2 Zeichen. Ich glaube dann hättest du das Problem auch gesehen...

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.