Sammlung von Anfängerfragen mit Antworten

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Sammlung von Anfängerfragen mit Antworten

Beitrag von brandelh »

*** Was ist ein Array ***

zunächst ein Datentyp von Xbase++ der es erlaubt mehrere Werte in einer "Liste" zu speichern.
Wenn man sich eine Variable wie eine Schuhschachtel vorstellt, dann ist ein Array eine Folge von Schuhschachteln.
Wenn dann darin jeweils nur ein Wert steht ist das ein eindimensionales Array ...

Code: Alles auswählen

aEindimensional := { 1, 2, 3, 4, 5 } // mit 5 Werten
? "Zweites Element",aEindimensional[2]
jedes dieser "Schuhschachteln, kann in Xbase++ aber auch einen Verweis auf eine andere "Liste von Schuhschachteln" enthalten.
Ein zweidimensionales Array ist wie eine DBF Datei im Arbeitspeicher, wobei es keine Feldnamen gibt, sondern nur Indizes !

aAdressen := { {"Name 1", "PLZ 1", ... , nAlter1 }, {"Name 2", "PLZ 2", ... , nAlter2 } }

wie man sieht ist es in Xbase++ erlaubt verschiedene Typen zu mischen !
Name von Adresse 2 gefällig ?

aAdressen[2,1] // erste Ebene / Dimension zuerst auswählen, WELCHE Adresse will ich ... dann welche Info in der Adresse
aAdressen[2] [1] // andere Schreibweise, gleiches Ergebnis

In Xbase sind sehr große Arrays möglich, aber nichts ist endlos !
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Sammlung von Anfängerfragen mit Antworten

Beitrag von Manfred »

Hubert,

sollte sowas nicht in unsere Wiki?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

*** wie bekommt man eine DBF in ein Array ***

Beitrag von brandelh »

*** wie bekommt man eine DBF in ein Array ***

das mache ich gerne für Hilfslisten, die man ab und an braucht.
Sie sind nicht wirklich lang aber DBF öffnen und schließen kostet Zeit und viele offene Dateien belasten die Server.

es gibt verschiedene Vorgehensweisen, je nach Geschmack, das wäre Clipper Style:

Code: Alles auswählen

use ... 
dbgotop()
aData := {} // leeres Array anlegen
do while ! eof()
   // entweder: einige Felder merken
   aadd(aData, { Feld1, Feld4, Feld8 } )
   // oder:       alle Felder einlesen, da kann man in Xbase++ eine Funktion nutzen, die einen Datensatz als Array zurückgibt
   aadd(aData, scatter() )   // in blocks.prg im System Source Verzeichnis
   // eventuell mit IF Abfrage einschränken ???
   dbskip() 
enddo
mit Xbase++ Style geht es schneller, aber man vielleicht abstrakter:

Code: Alles auswählen

use ... 
dbgotop() // hier nicht nötig
aData := {} // leeres Array anlegen
dbeval( {|| aadd(aData, { Feld1, Feld4, Feld8 } ) } ) // Feldauswahl 
dbeval( {|| aadd(aData, scatter() )             }) // oder alle Felder

do while ! eof()
   // entweder: einige Felder merken
   aadd( )
   // oder:       alle Felder einlesen, da kann man in Xbase++ eine Funktion nutzen, die einen Datensatz als Array zurückgibt
   aadd( )   // in blocks.prg im System Source Verzeichnis
   // eventuell mit IF Abfrage einschränken ???
   dbskip() 
enddo
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Sammlung von Anfängerfragen mit Antworten

Beitrag von brandelh »

Manfred hat geschrieben:Hubert,
sollte sowas nicht in unsere Wiki?
im Prinzip ja, aber ich beantworte hier Anfragen die ich per PN bekommen habe, was ich nicht mag !
Gerne darf man das was nützlich ist umkopieren, jetzt habe ich aber keine Zeit dazu ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

*** wann lagere ich eine DBF in ein Array um ??? ***

Beitrag von brandelh »

nur wenn es Sinn macht !

Es macht Sinn, wenn ich z.B. eine Listboxauswahl in der DBF habe und diese nicht nur einmalig aufgebaut wird.
Eine Funktion mit static var kann die Datein einmal einlesen und danach als Array aus der Static zurückliefern.
Das spart Zeit, besonders auf lahmen Speichermedien.

Wenn ich die Daten als Parameter übergeben muss, ist ein Array auch einfacher, aber das Einlesen und nachträglich durchlaufen dauert länger als gleich die DBF zu nutzen ...

Beispiel eMail-Versand von "Meldungen" warum auch immer ...

Code: Alles auswählen

use Adressen
dbGoTop()
do while ! eof()
   if Filterbedingung()  // was auch immer 
      // Variablen füllen
     cEmpfänger := field->eMailAdr
      if SendeEmailAn( cEmpfänger, cCopy, cBCC, cInhalt, aAnhänge ) // Senden von Massenmail geht am Besten mit SMTP Server (dazu gibt es Beispiele)
         replace SendDat with date()
         replace SendOK with "OK"
      else
         replace SendOK with "ERR"
      endif
   endif
   dbskip()
enddo
in diesem Fall würde ich weder in Array auslagern, noch dbEval() benutzen, denn so ist man viel flexibler ...
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Sammlung von Anfängerfragen mit Antworten

Beitrag von Koverhage »

aber ich beantworte hier Anfragen die ich per PN bekommen habe, was ich nicht mag !
Da würde ich gar nicht reagieren., bzw. nur einmalig um zu schreiben das diese Fragen im Forum gestellt werden.
Es ist eigentlich unverschämt allgemeine Fragen per PN zu stellen (meine Meinung).
Gruß
Klaus
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Sammlung von Anfängerfragen mit Antworten

Beitrag von Jan »

Ich habe auch schon Anfragen per PN bekommen. Und bitte dann grundsätzlich darum, die Fragen bitte öffentlich zu stellen. Mit der Begründung das es niemandem hilft, wenn sein Problem hinter verschlossenen Türen besprochen wird, und sonst niemand etwas davon hat.

Was das noch toppt sind PN an mehrere Personen im Verteiler. Woher soll man wissen, ob nicht jemand schon die Frage beantwortet hat? Da machen sich also gleich mehrere Personen Gedanken, obwohl jemand anderes die Lösung vielleicht schon gefunden hat.

Einer der Betreffenden meinte auf meinen Hinweis (zwei mal, weil er das trotzdem nicht sein ließ), das ihm das Posten in der Öffentlichkeit nicht behagen würde (frei wiedergegeben aus der Erinnerung).

Ich stimme Klaus absolut zu: Keine Fragen beantworten, die per PN kommen. Immer auf das Forum verweisen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten