Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array of Integer? (https://www.delphipraxis.net/98831-array-integer.html)

Gehstock 2. Sep 2007 12:15


Array of Integer?
 
möchte folgende Funktion etwas verkleinern

Delphi-Quellcode:
Procedure Count;
begin
frmmain.Memo1.Clear;
frmmain.Listbox1.Items.Clear;

frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from Funktionen' ;
     frmmain.ADOQuery1.Open;
      ca:=frmmain.ADOQuery1.RecordCount;
        frmmain.ADOQuery1.Next;

frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from Prozeduren';
     frmmain.ADOQuery1.Open;
      cb:=frmmain.ADOQuery1.RecordCount;
        frmmain.ADOQuery1.Next;

frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from Units';
     frmmain.ADOQuery1.Open;
      cc:=frmmain.ADOQuery1.RecordCount;
        frmmain.ADOQuery1.Next;

frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from Forms';
     frmmain.ADOQuery1.Open;
      cd:=frmmain.ADOQuery1.RecordCount;
        frmmain.ADOQuery1.Next;

frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from Programme';
     frmmain.ADOQuery1.Open;
      ce:=frmmain.ADOQuery1.RecordCount;
        frmmain.ADOQuery1.Next;

end;
mit
Delphi-Quellcode:
const
   Data: array[0..4] of String[10] = ('Funktionen', 'Prozeduren', 'Units', 'Forms', 'Programme');
   Counts: array[0..4] of Integer = (ca, cb, cc, cd, ce);

Procedure Count;
var
d: integer;
begin
frmmain.Memo1.Clear;
frmmain.Listbox1.Items.Clear;
    for d := 0 to 4  do begin
frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from '+Data[d] ;
     frmmain.ADOQuery1.Open;
      Counts[d]:=frmmain.ADOQuery1.RecordCount;
        frmmain.ADOQuery1.Next;
                      end;
bokomme aber bei den Counts diesen Fehler ->[DCC Fehler] DBtools.pas(22): E2026 Konstantenausdruck erwartet

wenn ich vorher sag
Delphi-Quellcode:
ca:=0;
u.s.w. gehts gibt es noch eine bessere lösung

Christian Seehase 2. Sep 2007 12:47

Re: Array of Integer?
 
Moin Gehstock,

Delphi-Quellcode:
const
  Counts: array[0..4] of Integer = (ca, cb, cc, cd, ce);
:shock: :gruebel:

Was hältst Du davon:

Delphi-Quellcode:
var
  Counts: array[0..4] of Integer;
;-)

Gehstock 2. Sep 2007 12:53

Re: Array of Integer?
 
damit weiß aber doch net ca ,cb u.s.w noch net wie groß sie sind
habs erstmal so das klappt auch und ihr versteht vieleicht besser was ich meine
Delphi-Quellcode:
const
 Data: array[0..4] of String = ('Funktionen', 'Prozeduren', 'Units', 'Forms', 'Programme');


implementation

uses Main;

Procedure Count;
var
d: integer;
begin
frmmain.Memo1.Clear;
frmmain.Listbox1.Items.Clear;
    for d := 0 to 4  do begin
frmmain.ADOQuery1.Close;
     frmmain.ADOQuery1.SQL.Text := 'select * from '+Data[d] ;
     frmmain.ADOQuery1.Open;
     case d of
      0:ca:=frmmain.ADOQuery1.RecordCount;
      1:cb:=frmmain.ADOQuery1.RecordCount;
      2:cc:=frmmain.ADOQuery1.RecordCount;
      3:cd:=frmmain.ADOQuery1.RecordCount;
      4:ce:=frmmain.ADOQuery1.RecordCount;
     end;
        frmmain.ADOQuery1.Next;
    end;

end;
[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]

Christian Seehase 2. Sep 2007 12:56

Re: Array of Integer?
 
Moin Gehstock,

Zitat:

Zitat von Gehstock
damit weiß aber doch net ca ,cb u.s.w noch net wie groß sie sind
habs erstmal so das klappt auch und ihr versteht vieleicht besser was ich meine

das ist schon klar, dass die Variablen ca ... damit nicht gefüllt werden.
Das Array ist ja auch als Ersatz für diese zu verstehen.

Bernhard Geyer 2. Sep 2007 12:56

Re: Array of Integer?
 
Um die Anzahl der Datensätze zu bestimmen sollte man ein Select count(*) from ...

RecordCount ist nur dann gültig wenn die Datensätze entweder schon beim Client gelandet sind (Netzwerkbelastung bei großen Tabellen) oder vom Server eine Temporäre Tabelle (MS SQL Server) erzeugt wurde (Serverlast) oder erst wenn wirklich der Curser bis zum letzten Datensatz bewegt wurde (Fall A).


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz