Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Umgang mit einem Record (https://www.delphipraxis.net/103096-umgang-mit-einem-record.html)

Gehstock 9. Nov 2007 22:14


Umgang mit einem Record
 
Delphi-Quellcode:
  type
  Item = record
   S1 : Integer;
   S2 : String;
end;

function Cut(Text: String):Item;
var
  sl: TStrings;
  x : Item;
  t: String;
begin
   sl := TStringList.Create;
   sl.delimiter := ' ';
   sl.DelimitedText := Text;
   t:= StringReplace(sl.Strings[0],'(','',[rfReplaceAll]);
   t:= StringReplace(t,')','',[rfReplaceAll]);
   x.S1 := StrtoInt(t); //1. Teilstring
   //ShowMessage(t);   //zum test bis hier stimmts
   x.S2 := sl.Strings[1]; //2. Teilstring
   //ShowMessage(sl.Strings[1]); //zum test bis hier stimmts
end;

Procedure OpenTab;
var
s : String;
x: Integer;
tli: TListItem;
b: Item;
begin
With frmmain do Begin
  SynMemo1.Clear;
  ADOQuery1.SQL.Clear;
  ADOQuery1.Close;
  s:= Treeview1.Selected.Text;
  cut(s);

  ShowMessage(b.s2);// zeigt nichts an                    zum test
//  s:= S2;
  ADOQuery1.SQL.Text := 'SELECT * FROM '+s;
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    s:=ADOQuery1.FieldByName('Feld1').AsString;
    tli:=ListView1.Items.Add;
    tli.Caption:=s;
    Next;
End;
end;
end;
wie Fulle ich ein Record und wie frage ich es ab

grenzgaenger 9. Nov 2007 22:19

Re: Umgang mit einem Record
 
füllen, einfach wie oben... abfragen... einfach

record.items...

haste aber nicht gezeigt.. ausserdem solltest dir mal den unterscheid zwischen lokalen, globalen und classen records klar machen ... :-)

Gehstock 9. Nov 2007 22:29

Re: Umgang mit einem Record
 
Wenn ich das Record abfrage ist es aber immer Leer bzw. zeigt nix an

mkinzler 9. Nov 2007 22:32

Re: Umgang mit einem Record
 
Du hast item ja auch noch nichts zugewiesen!
Delphi-Quellcode:
b := cut(s);

Muetze1 9. Nov 2007 22:33

Re: Umgang mit einem Record
 
... und dran denken die angelegte TStringList Instanz in Cut() auch wieder freigeben!

Gehstock 9. Nov 2007 22:38

Re: Umgang mit einem Record
 
führt auch zu nix
Delphi-Quellcode:
  type
  Item = record
   S1 : Integer;
   S2 : String;
end;





function Cut(Text: String):Item;
var
  sl: TStrings;
  b : Item;
  t: String;
begin
   sl := TStringList.Create;
   sl.delimiter := ' ';
   sl.DelimitedText := Text;
   t:= StringReplace(sl.Strings[0],'(','',[rfReplaceAll]);
   t:= StringReplace(t,')','',[rfReplaceAll]);
   b.S1 := StrtoInt(t); //1. Teilstring
   //ShowMessage(t);   //zum test bis hier stimmts
   b.S2 := sl.Strings[1]; //2. Teilstring
   //ShowMessage(sl.Strings[1]); //zum test bis hier stimmts
   sl.free;
end;

Procedure OpenTab;
var
s : String;
x: Integer;
tli: TListItem;
b: Item;
begin
With frmmain do Begin
  SynMemo1.Clear;
  ADOQuery1.SQL.Clear;
  ADOQuery1.Close;
  s:= Treeview1.Selected.Text;
  b:= cut(s);
  ShowMessage(b.s2); // leeres fenster
  ADOQuery1.SQL.Text := 'SELECT * FROM '+b.s2;  // deswegen hier Syntaxfehler in der From Klausel
  ADOQuery1.Open;
  while not ADOQuery1.Eof do
  begin
    s:=ADOQuery1.FieldByName('Feld1').AsString;
    tli:=ListView1.Items.Add;
    tli.Caption:=s;
    Next;
End;
end;
end;

mkinzler 9. Nov 2007 22:44

Re: Umgang mit einem Record
 
Und was steht in s?

Hawkeye219 9. Nov 2007 22:45

Re: Umgang mit einem Record
 
Hallo Gehstock,

eine Funktion sollte immer einen definierten Rückgabewert besitzen. Deine Funktion Cut() hat das nicht.

Gruß Hawkeye

mkinzler 9. Nov 2007 22:47

Re: Umgang mit einem Record
 
Es fehlt
Delphi-Quellcode:
result := b;

DP-Maintenance 9. Nov 2007 22:51

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Delphi-Frage.

Gehstock 9. Nov 2007 22:51

Re: Umgang mit einem Record
 
Das wars Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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