Avatar billede phylox2 Nybegynder
15. marts 2000 - 16:49 Der er 6 kommentarer og
1 løsning

Variabler efter combobox ?

Sådan ser min kode ud:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, TeeProcs, TeEngine, Chart, ComCtrls, ToolWin, HTTPApp,
  OleCtrls, NMHTML;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    ControlBar1: TControlBar;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    RadioButton2: TRadioButton;
    RadioButton1: TRadioButton;
    GroupBox3: TGroupBox;
    ComboBox1: TComboBox;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

Type
  TInputPort = Record
  InputPort: String;
end;

Type
  TOutputPort = Record
  OutputPort: String;
end;

var
  Form1: TForm1;
  InputPort: TInputPort;
  OutputPort: TOutputPort;

implementation

{$R *.DFM}

procedure udport(Ad:smallint;Value:smallint);
var
  ByteValue:Byte;
begin
    ByteValue:=Byte(Value);
    asm
        push dx
        mov dx,Ad
        mov al, ByteValue
        out dx,al
        pop dx
    end;
end;

function indport(Ad:smallint):smallint;
var
  ByteValue:byte;
begin
  asm
        push dx
        mov dx, Ad
        in al,dx
        mov ByteValue,al
        pop dx
    end;
    indport:=smallint(ByteValue) and $00FF;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if edit2.text = 'LPT1 (Standard)' Then begin
OutputPort := $378;
InputPort := $379;
end;
if edit2.text = 'LPT2' Then begin
OutputPort := $278;
InputPort := $279;
end;
if edit2.text = 'LPT3' Then begin
OutputPort := $3BC;
InputPort := $3BD;
  if checkbox1.checked then
  if edit1.text = '1' then begin
    udport(OutputPort,StrToInt('$08'));
  end
  else if edit1.text = '2' then begin
    udport(OutputPort,StrToInt('$01'));
  end
  else if edit1.text = '3' then begin
    udport(OutputPort,StrToInt('$09'));
  end
  else if edit1.text = '4' then begin
  udport(OutputPort,StrToInt('$02'));
  end
  else if edit1.text = '5' then begin
  udport(OutputPort,StrToInt('$0a'));
  end
  else if edit1.text = '6' then begin
  udport(OutputPort,StrToInt('$03'));
  end
  else if edit1.text = '7' then begin
  udport(OutputPort,StrToInt('$0b'));
  end
  else if edit1.text = '8' then begin
  udport(OutputPort,StrToInt('$04'));
  end
  else if edit1.text = '9' then begin
  udport(OutputPort,StrToInt('$0c'));
  end
  else if edit1.text = '10' then begin
  udport(OutputPort,StrToInt('$80'));
  end
  else if edit1.text = '11' then begin
  udport(OutputPort,StrToInt('$88'));
  end
  else if edit1.text = '12' then begin
  udport(OutputPort,StrToInt('$81'));
  end
  else if edit1.text = '13' then begin
  udport(OutputPort,StrToInt('$89'));
  end
  else if edit1.text = '14' then begin
  udport(OutputPort,StrToInt('$82'));
  end
  else if edit1.text = '15' then begin
  udport(OutputPort,StrToInt('$8a'));
  end
  else if edit1.text = '16' then begin
  udport(OutputPort,StrToInt('$83'));
  end
  else if edit1.text = '17' then begin
  udport(OutputPort,StrToInt('$8b'));
  end
  else if edit1.text = '18' then begin
  udport(OutputPort,StrToInt('$84'));
  end
  else if edit1.text = '19' then begin
  udport(OutputPort,StrToInt('$8c'));
  end
  else if edit1.text = '20' then begin
  udport(OutputPort,StrToInt('$10'));
  end
  else if edit1.text = '21' then begin
  udport(OutputPort,StrToInt('$18'));
  end
  else if edit1.text = '22' then begin
  udport(OutputPort,StrToInt('$11'));
  end
  else if edit1.text = '23' then begin
  udport(OutputPort,StrToInt('$19'));
  end
  else if edit1.text = '24' then begin
  udport(OutputPort,StrToInt('$12'));
  end
  else if edit1.text = '25' then begin
  udport(OutputPort,StrToInt('$1a'));
  end
  else if edit1.text = '26' then begin
  udport(OutputPort,StrToInt('$13'));
  end
  else if edit1.text = '27' then begin
  udport(OutputPort,StrToInt('$1b'));
  end
  else if edit1.text = '28' then begin
  udport(OutputPort,StrToInt('$14'));
  end
  else if edit1.text = '29' then begin
  udport(OutputPort,StrToInt('$1c'));
  end
  else if edit1.text = '30' then begin
  udport(OutputPort,StrToInt('$90'));
  end
  else if edit1.text = '31' then begin
  udport(OutputPort,StrToInt('$98'));
  end
  else if edit1.text = '32' then begin
  udport(OutputPort,StrToInt('$91'));
  end
  else if edit1.text = '33' then begin
  udport(OutputPort,StrToInt('$99'));
  end
  else if edit1.text = '34' then begin
  udport(OutputPort,StrToInt('$92'));
  end
  else if edit1.text = '35' then begin
  udport(OutputPort,StrToInt('$9a'));
  end
  else if edit1.text = '36' then begin
  udport(OutputPort,StrToInt('$93'));
  end
  else if edit1.text = '37' then begin
  udport(OutputPort,StrToInt('$9b'));
  end
  else if edit1.text = '38' then begin
  udport(OutputPort,StrToInt('$94'));
  end
  else if edit1.text = '39' then begin
  udport(OutputPort,StrToInt('$9c'));
  end
  else if edit1.text = '40' then begin
  udport(OutputPort,StrToInt('$20'));
  end
  else if edit1.text = '41' then begin
  udport(OutputPort,StrToInt('$28'));
  end
  else if edit1.text = '42' then begin
  udport(OutputPort,StrToInt('$21'));
  end
  else if edit1.text = '43' then begin
  udport(OutputPort,StrToInt('$29'));
  end
  else if edit1.text = '44' then begin
  udport(OutputPort,StrToInt('$22'));
  end
  else if edit1.text = '45' then begin
  udport(OutputPort,StrToInt('$2a'));
  end
  else if edit1.text = '46' then begin
  udport(OutputPort,StrToInt('$23'));
  end
  else if edit1.text = '47' then begin
  udport(OutputPort,StrToInt('$2b'));
  end
  else if edit1.text = '48' then begin
  udport(OutputPort,StrToInt('$24'));
  end
  else if edit1.text = '49' then begin
  udport(OutputPort,StrToInt('$2c'));
  end
  else if edit1.text = '50' then begin
  udport(OutputPort,StrToInt('$a5'));
  end
  else if edit1.text = '51' then begin
  udport(OutputPort,StrToInt('$a8'));
  end
  else if edit1.text = '52' then begin
  udport(OutputPort,StrToInt('$a1'));
  end
  else if edit1.text = '53' then begin
  udport(OutputPort,StrToInt('$a8'));
  end
  else if edit1.text = '54' then begin
  udport(OutputPort,StrToInt('$a9'));
  end
  else if edit1.text = '55' then begin
  udport(OutputPort,StrToInt('$aa'));
  end
  else if edit1.text = '56' then begin
  udport(OutputPort,StrToInt('$a3'));
  end
  else if edit1.text = '57' then begin
  udport(OutputPort,StrToInt('$ab'));
  end
  else if edit1.text = '58' then begin
  udport(OutputPort,StrToInt('$a4'));
  end
  else if edit1.text = '59' then begin
  udport(OutputPort,StrToInt('$ab'));
  end
  else if edit1.text = '60' then begin
  udport(OutputPort,StrToInt('$30'));
  end
  else if edit1.text = '61' then begin
  udport(OutputPort,StrToInt('$38'));
  end
  else if edit1.text = '62' then begin
  udport(OutputPort,StrToInt('$31'));
  end
  else if edit1.text = '63' then begin
  udport(OutputPort,StrToInt('$39'));
  end
  else if edit1.text = '64' then begin
  udport(OutputPort,StrToInt('$32'));
  end
  else if edit1.text = '65' then begin
  udport(OutputPort,StrToInt('$3a'));
  end
  else if edit1.text = '66' then begin
  udport(OutputPort,StrToInt('$33'));
  end
  else if edit1.text = '67' then begin
  udport(OutputPort,StrToInt('$3b'));
  end
  else if edit1.text = '68' then begin
  udport(OutputPort,StrToInt('$34'));
  end
  else if edit1.text = '69' then begin
  udport(OutputPort,StrToInt('$3c'));
  end
  else if edit1.text = '70' then begin
  udport(OutputPort,StrToInt('$b0'));
  end
  else if edit1.text = '71' then begin
  udport(OutputPort,StrToInt('$b9'));
  end
  else if edit1.text = '72' then begin
  udport(OutputPort,StrToInt('$b1'));
  end
  else if edit1.text = '73' then begin
  udport(OutputPort,StrToInt('$b9'));
  end
  else if edit1.text = '74' then begin
  udport(OutputPort,StrToInt('$b2'));
  end
  else if edit1.text = '75' then begin
  udport(OutputPort,StrToInt('$ba'));
  end
  else if edit1.text = '76' then begin
  udport(OutputPort,StrToInt('$b3'));
  end
  else if edit1.text = '77' then begin
  udport(OutputPort,StrToInt('$bb'));
  end
  else if edit1.text = '78' then begin
  udport(OutputPort,StrToInt('$b4'));
  end
  else if edit1.text = '79' then begin
  udport(OutputPort,StrToInt('$bc'));
  end
  else if edit1.text = '80' then begin
  udport(OutputPort,StrToInt('$40'));
  end
  else if edit1.text = '81' then begin
  udport(OutputPort,StrToInt('$48'));
  end
  else if edit1.text = '82' then begin
  udport(OutputPort,StrToInt('$41'));
  end
  else if edit1.text = '83' then begin
  udport(OutputPort,StrToInt('$49'));
  end
  else if edit1.text = '84' then begin
  udport(OutputPort,StrToInt('$42'));
  end
  else if edit1.text = '85' then begin
  udport(OutputPort,StrToInt('$4a'));
  end
  else if edit1.text = '86' then begin
  udport(OutputPort,StrToInt('$43'));
  end
  else if edit1.text = '87' then begin
  udport(OutputPort,StrToInt('$4b'));
  end
  else if edit1.text = '88' then begin
  udport(OutputPort,StrToInt('$44'));
  end
  else if edit1.text = '89' then begin
  udport(OutputPort,StrToInt('$4c'));
  end
  else if edit1.text = '90' then begin
  udport(OutputPort,StrToInt('$c0'));
  end
  else if edit1.text = '91' then begin
  udport(OutputPort,StrToInt('$c8'));
  end
  else if edit1.text = '92' then begin
  udport(OutputPort,StrToInt('$c1'));
  end
  else if edit1.text = '93' then begin
  udport(OutputPort,StrToInt('$c9'));
  end
  else if edit1.text = '94' then begin
  udport(OutputPort,StrToInt('$c2'));
  end
  else if edit1.text = '95' then begin
  udport(OutputPort,StrToInt('$ca'));
  end
  else if edit1.text = '96' then begin
  udport(OutputPort,StrToInt('$c3'));
  end
  else if edit1.text = '97' then begin
  udport(OutputPort,StrToInt('$cb'));
  end
  else if edit1.text = '98' then begin
  udport(OutputPort,StrToInt('$c4'));
  end
  else if edit1.text = '99' then begin
  udport(OutputPort,StrToInt('$cc'));
  end;
  if checkbox1.checked = false then begin
  udport(OutputPort,StrToInt(edit1.text));
end;
edit1.text := ''
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if radiobutton1.checked then
edit1.text := IntToStr(indport(InputPort))
else
edit1.text := IntToStr(indport(InputPort));
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
if radiobutton1.checked then
with radiobutton1 do
    begin
      Checked := False;
    end;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if radiobutton2.checked then
with radiobutton2 do
    begin
      Checked := False;
    end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
edit2.text := Combobox1.Items.Strings[combobox1.ItemIndex];
end;

end.

og jeg vil gerne deginere InputPort og OutputPort efter comboboxens valg (LPT1, LPT2 eller LPT3)

Hvordan gør jeg det ?
Avatar billede phylox2 Nybegynder
15. marts 2000 - 16:53 #1
deginere = definere
Avatar billede pellelil Nybegynder
15. marts 2000 - 18:16 #2
Først og fremmest vil jeg erstatte alle dine if-elser med (detalje måske, men):
iValue = StrToInt(edit1.text);
case iValue of // eller "case StrToInt(edit1.text) of"
  1 : udport(OutputPort,StrToInt('$08'));
  2 : udport(OutputPort,StrToInt('$01'));
...
end;

Jeg ville sætte comboboxens properties som flg:
Items='LPT1','LPT2','LPT3'
Style=csDropDownList (sikre at brugeren ikke kan indtaste noget, men kun vælge
Text='LPT1' (Således er der valgt en af værdierne)

Hvad brugeren således vælger kan du fange med Comboboxen's OnChange event (læs værdien af "Text" eller "Combobox1.Items.Strings[combobox1.ItemIndex]" hvis du vil have det som en tekst værdi eller "combobox1.ItemIndex" hvis du hellere vil have det som Integer

case combobox1.ItemIndex of
  0 : begin
        output := bla.bla.;
        input  := bla.bla.;
      end;
  1 : begin
        output := bla.bla.;
        input  := bla.bla.;
      end;
  2 : begin
        output := bla.bla.;
        input  := bla.bla.;
      end;
end;
Avatar billede phylox2 Nybegynder
15. marts 2000 - 22:08 #3
Kan du ikke lige lave et eksempel på, hvordan det skal laves ???? jeg skal bare have den til at definere forskellige input/output adresser.

Avatar billede pellelil Nybegynder
16. marts 2000 - 10:34 #4
>phylox2: Hvilket ord forstod du ikke ?

Jeg er ikke klar over hvad det er du efterlyser/ikke kan finde ud af ?
Avatar billede phylox2 Nybegynder
16. marts 2000 - 15:37 #5
Jeg forstår ikke noget af det, du skriver -- (newbie)
Avatar billede phylox2 Nybegynder
10. april 2000 - 08:58 #6
pellelil ?!? Kunne du ikke lige hjælpe mig færdig ?
Avatar billede phylox2 Nybegynder
21. maj 2000 - 00:34 #7
Nå!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester