Avatar billede Marting Forsker
27. februar 2002 - 20:13 Der er 33 kommentarer og
1 løsning

En Function

Hej med jer

Hvordan lave jeg en Function

F.eks
der er der kan hent en tekst fil???

hvis men skriver Vis, 2  så skal den hvis linje 2

jeg har prøve at lave det her!!


unit StyrUnit1;

interface

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

type
  TForm1 = class(TForm)
    Hent    : TButton;
    ListBox1 : TListBox;
    Edit1    : TEdit;
    Label1  : TLabel;
    procedure HentClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


Function Vis(Vis : String; Tal :Integer ) : String;
Var
F : TextFile;
S : String;
Begin
    AssignFile(F, 'D:\Delphi\txt\txt.txt');
  Reset(F);
  while not EOF(F) do
  begin
    ReadLn(F, S);
    vis := s;
  end;
  CloseFile(F);


end;

procedure TForm1.HentClick(Sender: TObject);

var

  S : String;
  i: Integer;

  begin
  For i := 1 to 5 do
  begin
      S:= Vis(Vis, i);
      ListBox1.Items.Add(S);
      Label1.caption  := inttostr(i);
  end;

end;

end.
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:20 #1
Function Vis(Vis : String; Tal :Integer ) : String;
Var
F : TextFile;
S : String;
i : integer;
Begin
    AssignFile(F, 'D:\Delphi\txt\txt.txt');
  Reset(F);
  while not EOF(F) do
  begin
    for i := 1 to tal do
      ReadLn(F, S);
    vis := s;
  end;
  CloseFile(F);


end;
Avatar billede stoney Nybegynder
27. februar 2002 - 20:22 #2
hvad med Result :=

Stoney
Avatar billede Marting Forsker
27. februar 2002 - 20:25 #3
ok hvad så Med

procedure TForm1.HentClick(Sender: TObject);

jeg ikke kun skrive

Vis, 2  i procedure så visse nr. linje 2

i en  ListBox1???

Hej Stoney!!!
Avatar billede cms Nybegynder
27. februar 2002 - 20:25 #4
Function Vis(var Vis : String; Tal :Integer ) : String;
Var
F : TextFile;
S : String;
i : integer;
Begin
    AssignFile(F, 'D:\Delphi\txt\txt.txt');
  Reset(F);
  while not EOF(F) do
  begin
    for i := 1 to tal do
      ReadLn(F, S);
    vis := s;
  end;
  CloseFile(F);


end;
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:25 #5
Stoney> Han bruger vis := s;, det giver det samme som result := s;
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:27 #6
cms> Hvad er forskellen på dit og mit svar ? *GGG*
Avatar billede stoney Nybegynder
27. februar 2002 - 20:28 #7
morten_s >>

Okay, jeg er bare miljø-skadet. (eller strengt opdraget).

Jeg bruger ALTID result :=

:-)

Stoney
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:28 #8
2 tallet med i listboxen

procedure TForm1.HentClick(Sender: TObject);

var

  S : String;
  i: Integer;

  begin
  For i := 1 to 5 do
  begin
      S:= Vis(Vis, i);
      ListBox1.Items.Add(S + IntToStr(i));
      Label1.caption  := inttostr(i);
  end;

end;
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:29 #9
stoney> det gør jeg også altid
Avatar billede Marting Forsker
27. februar 2002 - 20:29 #10
Cms det ville jeg så godt vide!!

Morten

der skriver Fj.

  S:= Vis(Vis, i);
[Error] StyrUnit1.pas(64): Not enough actual parameters

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:36 #11
Din function header skal se sådan her ud

Function Vis(Tal :Integer ) : String;

og dit kald

S:= Vis(i);
Avatar billede Marting Forsker
27. februar 2002 - 20:50 #12
nu er der ikke fejl mere!!

nu skriver den kun den sidst linje fra tekst fil!!

men ikke sende antal linje med i en værdi ??

Function Vis(Tal :Integer ) : String;  // Antal_lj????

procedure

begin
  For i := 1 to 3 do  // Antal_lj?????
  begin
      S:= Vis(i);
      ListBox1.Items.Add(S + IntToStr(1));
      ListBox2.Items.Add(S);
      Label1.caption  := inttostr(i);
  end;

(Antal linje ligge i tal måske)?

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 20:53 #13
skal den ikke skrive den linje du har i Tal ?
Avatar billede Marting Forsker
27. februar 2002 - 20:59 #14
procedure

når jeg skriver

S :=vis(2) så skal den visse linje 2

jeg tror den løber Function i gennem ???
og bare visse den sidst linje

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 21:02 #15
Prøv med

Function Vis(var Vis : String; Tal :Integer ) : String;
Var
F : TextFile;
S : String;
i : integer;
Begin
    AssignFile(F, 'D:\Delphi\txt\txt.txt');
  Reset(F);
  if not EOF(F) do <-- WHILE FJERNET
  begin
    for i := 1 to tal do
      ReadLn(F, S);
    vis := s;
  end;
  CloseFile(F);
end;
Avatar billede Marting Forsker
27. februar 2002 - 21:08 #16
ja nu skrive den fejl der

if not EOF(F) do

[Error] StyrUnit1.pas(40): 'THEN' expected but 'DO' found
Avatar billede morten_s Nybegynder
27. februar 2002 - 21:10 #17
Function Vis(var Vis : String; Tal :Integer ) : String;
Var
F : TextFile;
S : String;
i : integer;
Begin
    AssignFile(F, 'D:\Delphi\txt\txt.txt');
  Reset(F);
  if not EOF(F) THEN <-- THEN INDSAT
  begin
    for i := 1 to tal do
      ReadLn(F, S);
    vis := s;
  end;
  CloseFile(F);
end;
Avatar billede Marting Forsker
27. februar 2002 - 21:20 #18
Function

er Tal = med Antal linje i txt fil???

procedure

  begin
  For i := 1 to 3 do // antal linje i txt fil

  begin
      S:= Vis(i); //
[Error] StyrUnit1.pas(59): Types of actual and formal var parameters must be identical
------

      ListBox1.Items.Add(S + IntToStr(1));
      ListBox2.Items.Add(S);
      Label1.caption  := inttostr(i);
  end;

Martin
Avatar billede Marting Forsker
27. februar 2002 - 21:33 #19
det skrive fejl i mit kald


S:= Vis(i); //

[Error] StyrUnit1.pas(59): Types of actual and formal var parameters must be identical

skal men lave en Function til

det kigge på hvor meget linje der ligge i txt fil???

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 21:47 #20
Function Vis(Tal :Integer ) : String;
Var
F : TextFile;
S : String;
i : integer;
Begin
    AssignFile(F, 'D:\Delphi\txt\txt.txt');
  Reset(F);
  if not EOF(F) Then
  begin
    for i := 1 to tal do
      ReadLn(F, S);
    vis := s;
  end;
  CloseFile(F);
Avatar billede Marting Forsker
27. februar 2002 - 21:59 #21
ja det hjælp sku!!!

nu er der 7  linje i txt fil

-------

procedure

begin
  For i := 10 to  do  // Antal_lj?????
  begin
      S:= Vis(i);
      ListBox1.Items.Add(S + IntToStr(1));
      ListBox2.Items.Add(S);
      Label1.caption  := inttostr(i);
  end;

den lave streger i sidst linje ??

men sende antal linje med fra Function

For i := 1 to --- så det skrive her i en varlpil du ved 

jeg er Dansker :-))

Martin
Avatar billede Marting Forsker
27. februar 2002 - 22:00 #22
ups For i := 1 to  do  // Antal_lj?????

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 22:02 #23
jamen du kan kun vide hvor mange linjer der er i filen ved at traversere den igennem
Avatar billede Marting Forsker
27. februar 2002 - 22:13 #24
ver selv at se hvor mange linjer der er i???

hvis Function var en procedure ville den selv stop ville den ikke??

og sige Tal er = med 7???

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 22:16 #25
Hvorfor læser du ikke bare alle linjer over i din listboks på en gang ?

Listbox1.Items.LoadFromFile('D:\Delphi\txt\txt.txt');

så er den ged barberet
Avatar billede stoney Nybegynder
27. februar 2002 - 22:19 #26
morten_s>>

Må man godt barbere en ged ? *LOL*

http://www.dyrevaernet.dk/

stoney
Avatar billede morten_s Nybegynder
27. februar 2002 - 22:21 #27
stoney> Det er de længste 9 point jeg endnu ikke har tjent
Avatar billede cms Nybegynder
27. februar 2002 - 22:22 #28
morten: mit svar havde en variabel parameter.
Avatar billede stoney Nybegynder
27. februar 2002 - 22:22 #29
Du har også virkelig fortjent dem.

Kan man ikke få point + moms ?

Stoney
Avatar billede Marting Forsker
27. februar 2002 - 22:26 #30
jo det er også rigrig!!

jeg kan også godt se det!!!

jeg ville kigge lidt mere på i mogen!! jeg trot hvis men lave en Function til! der lige køre fil i gemner!!!

kan men ikke set den end ved
procedure
For i := 1 to (så det er et kald fra en Function)


Martin
Avatar billede Marting Forsker
27. februar 2002 - 22:29 #31
er jeg kedlige ???
Avatar billede stoney Nybegynder
27. februar 2002 - 22:31 #32
marting >> nej, du er ikke kedelig.
Du skal selvfølgelig bare spørge alt det du vil.
Det er det eksperten er til for.

Jeg moppede bare morten_s lidt.

Stoney
Avatar billede Marting Forsker
27. februar 2002 - 22:36 #33
ok Stoney!!!

det er ikke let alt tid!!!!

og i er nogen god nogen!!!!

morten_s fik du dine point??

Martin
Avatar billede morten_s Nybegynder
27. februar 2002 - 22:37 #34
jep, og tak
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