Avatar billede ossi Nybegynder
06. september 2002 - 18:09 Der er 13 kommentarer og
1 løsning

Fejl i min kode.. Hvor?

Hej,

Jeg bruger flg. kode, men det virker ikk som jeg ville mene det burde.. Nogen som kan gennemskue det?

// Code start
var
  I: Integer;
begin
  for I := 0 to MainForm.ComponentCount-1 do
    begin
      if (MainForm.Components[I] is TTBItem) and (MainForm.Components[I].Name = 'EditButton' + IntToStr(Number)) then
        ShowMessage((MainForm.Components[I] as TTBItem).Name);
    end;
// Code stop

::saBA::
Avatar billede stoney Nybegynder
06. september 2002 - 18:31 #1
Kommer den med en fejl eller virker det bare ikke ?
IntToStr(Number)) // hvor kommer number fra ?

Stoney
Avatar billede ossi Nybegynder
06. september 2002 - 18:33 #2
Det virker bare ikk..

Number er en variabel på den form som bruger koden.. På MainForm'en findes der nogle TTBItem's navnet som EditButton1, EditButton2 osv.. Hver EditForm har så en EditButton som hører til formen..
Avatar billede stoney Nybegynder
06. september 2002 - 18:43 #3
navnet på componenten er casesensitivt

Stoney
Avatar billede ossi Nybegynder
06. september 2002 - 18:45 #4
Ja.. Componentet hedder "EditButton" og jeg kalder det med "EditButton".. Burde det ikk virke? Eller skal jeg virke køre en lowercase(); på dem?
Avatar billede stoney Nybegynder
06. september 2002 - 18:52 #5
Jeg har lige testet med edit felter

var
  I,number: Integer;
begin
number := 1;
  for I := 0 to MainForm.ComponentCount-1 do

    begin

      if (MainForm.Components[I] is Tedit) and (MainForm.Components[I].Name = 'Editbutton' + IntToStr(Number)) then
        ShowMessage((MainForm.Components[I] as Tedit).Name);
    end;;
  end;

Det virker.
Prøv lige at checke din kode engang til

Stoney
Avatar billede stoney Nybegynder
06. september 2002 - 18:59 #6
Check evt din var number

Stoney
Avatar billede ossi Nybegynder
06. september 2002 - 19:13 #7
Hmm.. Jeg har lige tjekket det hele igennem.. Først Number og derefter om komponentet rent faktisk findes.. Begge delene fejler ikk noget..

Jeg har omformet koden lidt nu..

// start
var
  I: Integer;
begin
  for I := 0 to Application.ComponentCount-1 do begin
    if (Application.Components[I].Name = 'EditButton' + IntToStr(Number)) then
      ShowMessage('Hej');
  end;
// slut

Denne giver ikk en MessageBox med "Hej".. Som det burde.. Hvorfor ville jeg meget gerne vide.. Det er en større del af mit program (Web-Editor) som er afhængig af denne kode..
Avatar billede stoney Nybegynder
06. september 2002 - 19:44 #8
Prøv denne

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin

  for I := 0 to application.ComponentCount-1 do begin
    if (Components[I].Name = 'EditButton' + IntToStr(Number)) then
      ShowMessage('Hej');
  end;
  end;

Stoney
Avatar billede ossi Nybegynder
06. september 2002 - 19:48 #9
nope.. Hjalp ikk! Vi skal huske at den form der kalder koden hedder EditForm og den som EditButton[tal] ligger på hedder MainForm..
Avatar billede stoney Nybegynder
06. september 2002 - 19:51 #10
Det virker hos mig.
Prøv lige at chekde din variabel number.

Det skal virke.

Stoney
Avatar billede ossi Nybegynder
06. september 2002 - 20:17 #11
Jamen.. Det gør det ikke! Skal jeg sende dig sourcen? Så kan du lave det så det virker :D
Avatar billede zimp Nybegynder
06. september 2002 - 22:56 #12
Smid et memo på formen og kør det følgende:

for I := 0 to MainForm.ComponentCount-1 do
begin
  if (MainForm.Components[I] is TTBItem) then
    Memo1.Lines.Add('TTBItem navn: '+MainForm.Components[I].Name);
end;

Mon ikke du ud fra resultatet kan finde din fejl?
Avatar billede ossi Nybegynder
08. september 2002 - 21:17 #13
Det var mig der havde lavet en fejl.. Sry.. Jeg tillader mig selv at tage pointene igen da min originale kode faktisk virkede..

takker..
Avatar billede ossi Nybegynder
08. september 2002 - 21:17 #14
--
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