AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Deklaration ändern ?

Ein Thema von HolgerCW · begonnen am 17. Jul 2007 · letzter Beitrag vom 18. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Deklaration ändern ?

  Alt 17. Jul 2007, 15:06
nein, weil TStrings eine Klasse ist und eine Objectinstanz ein Pointer. Es ist also als würde man einen Pointer übergeben. Und da kann man auch einfach das ändern worauf der Pointer zeigt.
var verwendet man wenn der Übergabeparameter in der Funktion geändert werden können soll, aber nicht wenn nur das geändert werden soll worauf der Parameter zeigt.
Selbst ohne var kannst du ja
Object_Instance_Parameter.Methode() aufrufen was dann etwas ändert. Du änderst also nicht den Übergabeparameter sondern der Übergabeparameter ändert seinen Inhalt anhand der Methoden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#12

Re: Deklaration ändern ?

  Alt 17. Jul 2007, 15:17
OK,

und wie bekomme ich das jetzt umgesetzt: (Bin noch nicht so der Profi)

Wo implementiere ich das:

Delphi-Quellcode:
ComboBox_fuellen(Combobox1.Items);
ComboBox_fuellen(TabControl1.Tabs);
und wo das:

TYourClass Kenne mich mit Klassendeklarationen noch nicht so aus.

Als was deklariere ich die Klasse TYourClass.

Ich habe die proceduren alle in einer eigenständigen Unit, also ohne Form

Gruss

Holger
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#13

Re: Deklaration ändern ?

  Alt 17. Jul 2007, 15:20
So sieht das bei mir zur Zeit aus:

Delphi-Quellcode:
unit Unit_Funktionen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBTables;

procedure ComboBox_fuellen (Box:TComboBox; Query:TQuery; Spalten:String; Anzahl:Integer; SQL: String);

...

implementation

uses
 Unit_Query_TerMaS;


//ComboBox aus DB füllen
procedure ComboBox_fuellen (Box:TComboBox; Query:TQuery; Spalten:String; Anzahl:Integer; SQL: String);
var
 I: Integer;
 S: Integer;

...

end;
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#14

Re: Deklaration ändern ?

  Alt 18. Jul 2007, 09:43
Hallo,

kann mir da keiner mehr helfen. Jetzt soll nämlich in der Procedure auch noch die DBComBoBox verarbeitet werden können ..

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Deklaration ändern ?

  Alt 18. Jul 2007, 09:47
Delphi-Quellcode:
procedure StringList_fuellen (Strings: TStrings; Query: TQuery; Spalten: String; Anzahl: Integer; SQL: String);
begin
 ...
Ist dir damit geholfen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#16

Re: Deklaration ändern ?

  Alt 18. Jul 2007, 09:53
OK,

aber ich muss meiner Procedure doch noch übergeben in welche TComboBox oder TTAbControl die Strings übergeben werden. Die Strings werden auch erst in der Procedure ausgelesen. Hier mal die komplette Procedure:

Delphi-Quellcode:
//ComboBox aus DB füllen
procedure ComboBox_fuellen (Box:TComboBox; Query:TQuery; Spalten:String; Anzahl:Integer; SQL: String);
var
 I: Integer;
 S: Integer;
 E: Integer;
 Z: Integer;
 AktuelleSpalte: String;
 CBText:String;
 MyInt: Integer;
begin
 I:= 1; //Zähler für Anzahl der Spalten
 S:= 1; //Ende von aktueller Spalte
 E:= 1; //Ende von vorheriger Spalte
 Z:= 0; //Das kein Bindestrich mehr angefügt wird
 Box.Clear;
 Query.Close;
 If SQL <> 'then Query.SQL[1] := SQL; //SQL optional
 Query.open;
 while Query.Eof <> true do
 begin
  for I := 1 to Anzahl do
  begin
   Z := Z + 1;
   for S:= E to length(Spalten) do
   begin
    //Trennen der Spalten
    if copy(Spalten,S,1) = ';then
    begin
     AktuelleSpalte := copy(Spalten,E,S - E);
     break;
    end;
   end;

   //Prüfen auf Nummerische oder String - Spalte
   if TryStrToInt(Query[AktuelleSpalte], MyInt) = false then
   begin
    CBText := CBText + Query[AktuelleSpalte];
   end
   else
   begin
    CBText := CBText + inttostr(Query[AktuelleSpalte]);
   end;

   //Trennzeichen einfügen
   if (Anzahl > 1) and (Anzahl <> Z) then CBText := CBText + ' - ';
   E := S + 1;
  end;
  I:= 1;
  //Text in ComboBox schreiben
  Box.items.Add(CBText);
  CBText := '';
  Z:= 0;
  E:= 1;
  S:= 1;
  Query.next;
 end;
end;
Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Deklaration ändern ?

  Alt 18. Jul 2007, 11:15
Noch mal ein Beispiel, das mit allen Abkömmlingen von TStrings funktionieren sollte (ich habe hier zur Verdeutlichung eine Memo, eine ComboBox und eine Listbox auf meiner Demo-Form):
Delphi-Quellcode:
procedure DoSomethingSenseless(sl: TStrings);
var i: integer;
begin
  sl.BeginUpdate;
  sl.Clear;
  for i := 1 to 100 do
    sl.Add(Format('Eintrag %d',[i]));
  sl.EndUpdate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DoSomethingSenseless(ListBox1.Items);
  DoSomethingSenseless(Memo1.Lines);
  DoSomethingSenseless(ComboBox1.Items);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#18

Re: Deklaration ändern ?

  Alt 18. Jul 2007, 11:58
Hallo,

jetzt ist der Groschen gefallen. Da hatte ich wohl ein Brett vor em Kopf

Jetzt heisst meine Procedure TStrings_fuellen.

Man war das eine Geburt und eigentlich ganz einfach ...

Gruss

Holger
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 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