Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Struktogramm (https://www.delphipraxis.net/175191-struktogramm.html)

49rojhat49 5. Jun 2013 11:40

Struktogramm
 
Hallo Leute,

ich muss zu folgendem Code ein Struktogramm malen, habe aber keine Ahnung wie das funktioniert.

könnte mir vielleicht einer von euch helfen?

Code:
procedure TviewWizWerbemittelVersandDetails.refreshData;
var
  lRow, lCol: Integer;
  lLastAdrID: Double;
begin
  FWEMList.Clear;
  lLastAdrID := -1;
  //alle Zeilen ausser Header löschen
  grdDetails.Cells.RowCount := 0;
  //Spalten 5 - x löschen
  grdDetails.Cells.ColCount := 4;
  //Werbemittel einlesen
  CheckClose(qryWerbemittel);
  CheckOpen(qryWerbemittel);

  grdDetails.BeginUpdate;
  try
    while not (qryWerbemittel.Eof) do begin
      //Spalte erzeugen
      lCol := grdDetails.Cells.AddColumn;
      //es gibt wohl keine Möglichkeit, Daten in einer Header-Zelle zu speichern, also
      //speichern wird die WEM-IDs in einer Liste
      FWEMList.Add(TFloatClass.Create(qryWerbemittelwem_id.AsFloat));

      grdDetails.cells.Columns[lCol].Caption := qryWerbemittelwem_display_name.AsString;
      grdDetails.cells.Columns[lCol].Tag := qryWerbemittelwem_verfuegbar.AsInteger;
      qryWerbemittel.Next;
    end;
    CheckClose(qryWerbemittel);
    //Transfers einlesen
    lRow := 0;
    CheckClose(qryWerbemitteltransfer);
    CheckOpen(qryWerbemitteltransfer);
    while not (qryWerbemitteltransfer.Eof) do begin
      //neue Adresse, neue Spalte
      if (lLastAdrid <> qryWerbemitteltransferwmt_adrid.AsFloat) then begin
        lRow := grdDetails.cells.AddRow;
        grdDetails.Cells[0, lRow].Data := TFloatClass.Create(qryWerbemitteltransferwmt_adrid.AsFloat);
        grdDetails.Cells[0, lRow].Text := qryWerbemitteltransferadr_schluessel.AsString;
        grdDetails.Cells[0, lRow].CanEdit := false;
        grdDetails.Cells[0, lRow].CanEnter := false;
      end;
      //Spalten 2 bis 4 editierbar machen
      grdDetails.cells[2, lRow].Value := 0;
      grdDetails.cells[2, lRow].CanEdit := true;
      grdDetails.cells[2, lRow].CanEnter := true;
      // enthält die plz zum sortieren (-> sortData.value)
      grdDetails.cells[1, lRow].FormatString := qryWerbemitteltransferadr_plz.AsString;
      if (-1 <> getIndexFromAdrList(qryWerbemitteltransferwmt_adrid.AsFloat)) then begin
        grdDetails.cells[3, lRow].Value := 1;
      end else begin
        grdDetails.cells[3, lRow].Value := 0;
      end;
      grdDetails.cells[3, lRow].CanEdit := true;
      grdDetails.cells[3, lRow].CanEnter := true;
      //Spalte suchen
      for lCol := 4 to grdDetails.Cells.ColCount - 1 do begin
        if (TFloatClass(FWEMList[lCol - 4]).FData = qryWerbemitteltransferwmt_wemid.AsFloat) then begin
    grdDetails.cells[lCol, lRow].Alignment := taCenter;
          grdDetails.Cells[lCol, lRow].Text := qryWerbemitteltransferwmt_anzahl.AsString;
          if qryWerbemitteltransferwmt_vertroestetdatum.IsNull then begin
          end else begin
            grdDetails.Cells[lCol, lRow].Color := clLime;
          end;

        end;
        grdDetails.Cells[lCol, lRow].CanEdit := false;
        grdDetails.Cells[lCol, lRow].CanEnter := false;
      end;
      lLastAdrID := qryWerbemitteltransferwmt_adrid.AsFloat;
      qryWerbemitteltransfer.Next;
    end;
    CheckClose(qryWerbemitteltransfer);
  finally
    grdDetails.EndUpdate;
  end;
  lblCount.Caption := IntToStr(grdDetails.Cells.RowCount);
  sortData;
end;

Der schöne Günther 5. Jun 2013 12:01

AW: Struktogramm
 
Hallo-

Hast du verstanden, was ein Struktogramm ist? Der Wikipedia-Artikel hat sogar ein Pascal-Beispiel...

Bekommst du denn selbst ein kleines Struktogramm für etwas in der Art von "Wenn etwas gilt, dann schreibe nacheinander 1 bis 10"?

49rojhat49 5. Jun 2013 12:09

AW: Struktogramm
 
jaa das würde ich hinkriegen mit den 1-10.

aber auch mit dem artikel kann ich das nicht .. zu kompliziert für mich :(

Sir Rufo 5. Jun 2013 12:11

AW: Struktogramm
 
Und was konkret nicht?

49rojhat49 5. Jun 2013 12:14

AW: Struktogramm
 
naja erstmal kommt ein whlile dann noch eins dann if else und wieder das ist mir zu komöiziert ich komm dann durcheinander versteht ihr?

Der schöne Günther 5. Jun 2013 12:18

AW: Struktogramm
 
Wenn du es im Endeffekt kannst, es dir aber zu komöiziert ist, was erwartest du dann? Möchtest du die Lösung zu dem Quellcode-Block von oben haben?

Sir Rufo 5. Jun 2013 12:22

AW: Struktogramm
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1217541)
Wenn du es im Endeffekt kannst, es dir aber zu komöiziert ist, was erwartest du dann? Möchtest du die Lösung zu dem Quellcode-Block von oben haben?

Evtl. ist das Thema in der falschen Kategorie gelandet und sollte eigentlich in http://www.delphipraxis.net/66-job-b...e-und-gesuche/ ;)

49rojhat49 5. Jun 2013 12:23

AW: Struktogramm
 
also wenn es jemand machen würde dann gerne, aber wenn nicht ist es auch nicht so schlimm.

dann versuch ich das halt anders hinzukriegen

baumina 5. Jun 2013 12:29

AW: Struktogramm
 
Das schöne an Pascal ist ja, dass man es tatsächlich, wie du sagst, von oben nach unten lesen kann. Also fängst am besten genau so an wie du es geschrieben hast.

Erst ein while ... da innerhalb der while (gekennzeichnet durch begin/end) keine weitere Abfrage ist, kannst darunter dann die 2. while machen. Nun wird's spannend ... innerhalb der 2. while-schleife hats mehrere if-Abfragen (alle gleichwertig, weil nicht weiter verschachtelt), also die musst dann auch da mit reinpacken. Die for-Schleife innerhalb der while-schleife ist auf selber Ebene wie die if-Abfragen. Zum Schluss hast noch eine if-Abfrage innerhalb der for-Schleife, also hast du insgesamt eine Verschachtelungstiefe von 3 Ebenen in der for-Schleife.

DeddyH 5. Jun 2013 12:30

AW: Struktogramm
 
Hier gibt es einen Struktogramm-Editor. Und wie es der Zufall so will: auf dem Screenshot sieht man eine Kopfschleife (while), die eine Einfachverzeigung enthält (If).


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr.
Seite 1 von 2  1 2      

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