Archiv für: Mai 2007

Delphi, Spalte in einem StringGrid löschen/einfügen

Mai 28th, 2007 Autor: Phillip Kroll -

Die TStringGrid Komponente stellt keine Möglichkeit zur Verfügung um Spalten oder Zeilen mitten im Grid zu löschen. Folgende Methode ermöglicht das löschen von Spalten:

function DeleteCol( Grid : TStringGrid; Col : Integer ) : boolean;
var
I, j : Integer;
begin
Result := False;
if ( Col < 0 ) or ( Col >= Grid.ColCount ) then Exit;
for I := Col to Grid.ColCount - 2 do
for J := 0 to Grid.RowCount - 1 do
Grid.Cells[ I, J ] := Grid.Cells[ I + 1, J ];
Grid.ColCount := Grid.ColCount - 1;
Result := True;
end;

Eine Mögliche Anwendung wäre zum Beispiel das Löschen aller markierten Spalten in einem StringGrid:

procedure TForm1.Spaltelschen1Click(Sender: TObject);
var
I, left, right: integer;
begin
left := StringGrid.Selection.left;
right := StringGrid.Selection.right;
for I := 0 to right - left do
DeleteCol( StringGrid, left );
end;

Um eine neue leere Spalte in ein StringGrid einzufügen hilft folgende Funktion weiter:

function InsertCol( Grid : TStringGrid; Col : Integer ) : boolean;
var
I, j : Integer;
begin
Result := False;
if ( Col < 0 ) or ( Col >= Grid.ColCount ) then Exit;
Grid.ColCount := Grid.ColCount + 1;
for I := Grid.ColCount - 1 downto Col + 1 do
for J := 0 to Grid.RowCount - 1 do
if I <> Col + 1 then
Grid.Cells[ I, J ] := Grid.Cells[ I - 1, J ]
else
Grid.Cells[ I, J ] := '';
Result := True;
end;

Delphi, Leere Spalte in einem StringGrid finden

Mai 28th, 2007 Autor: Phillip Kroll -

Wenn man eine intelligente Methode schreiben möchte um den Inhalt einer TStringgrid Komponente zu aktuallisieren hilft einem diese Komponente nicht viel weiter. Eine Nütliche Funktion ist zum Beispeil das Auffinden einer leeren Spalte um in diese dann neuen Inhalt zu schreiben. Folgende Funktion ermittelt die erste auffindbare leere Spalte in einem StringGrid. Wenn keine leere Spalte gefunden werden kann gibt sie -1 zurück.

function FindEmptyCol( Grid : TStringGrid ) : integer;
var
I, J: Integer;
begin
Result := - 1;
for I := 0 to Grid.ColCount - 1 do
for J := 0 to Grid.RowCount - 1 do
begin
if Grid.Cells[ I, J ] <> '' then break;
if J = Grid.RowCount - 1 then
begin
Result := I;
Exit;
end;
end;
end;

Petrinetze, Roboter Aufgabe

Mai 5th, 2007 Autor: Phillip Kroll -

Aufgabe:

Zeichnen Sie ein Petri-Netz, das folgende Aufgabenstellung modelliert:
In einer Fabrikhalle steht ein vollautomatisch arbeitender Aufzug für Paletten. Die Paletten werden vom Erdgeschoss in den ersten Stock befördert. Im Erdgeschoss befindet sich ein Förderband, das jeweils 1 Palette in den Aufzug hinein befördern kann. Ebenso befindet sich dort ein Roboter, der eine neue Palette auf dieses Förderband setzt, sofern es nicht (mehr) mit einer Palette belegt ist. Die Fördereinrichtungen des ersten Stocks brauchen Sie nicht zu modellieren.

Der Roboter hat die folgende Zustände: abgabebereit, Abgabe findet statt, Palette ist abgegeben. Das Förderband ist entweder ein- oder ausgeschaltet. Der Aufzug befindet sich entweder oben oder unten, oder er ist von unten nach oben bzw. von oben nach unten unterwegs.

Ihr Petri-Netz soll so einfach wie möglich sein (unnötig komplizierte Lösungen geben Punktabzug) und trotzdem mindestens die genannten Zustände enthalten. Die Parallelität darf nicht unnötig eingeschränkt werden! Beispielsweise kann der Roboter bereits eine neue Palette aufsetzen, während der Aufzug nach oben fährt. Achten Sie darauf, dass kein Crash passieren kann. Beispielsweise darf das Förderband nur laufen, wenn sich der Aufzug unten befindet. Der Aufzug darf nur in bestimmten Fällen starten, und so weiter. Sind eventuell weitere Zustände notwendig? Zeichnen Sie die Anfangsmarkierung so ein, dass sie einer Situation entspricht, in der sich noch keine Palette im System befindet.

Lösung:

roboter förderband aufzug petrinetz

Petrinetze, Fenster öffnen

Mai 5th, 2007 Autor: Phillip Kroll -

Petrinetz zum öffnen und schließen eines Fensters

fenster petri netz

Petrinetze, Schlüssel im Türschloss

Mai 5th, 2007 Autor: Phillip Kroll -

Petrinetz für das Aufschließen einer Tür

Nitrile und Aldehyde

Mai 5th, 2007 Autor: Phillip Kroll -

Nitride und Aldehyde

Oxocarbonsäuren/Ketocarbonsäuren

Mai 5th, 2007 Autor: Phillip Kroll -

oxocarbonsäuren

Chlorcarbonsäuren

Mai 5th, 2007 Autor: Phillip Kroll -

Chlorcarbonsäuren

Hydroxycarbonsäuren

Mai 5th, 2007 Autor: Phillip Kroll -

Hydroxycarbonsäuren

Dicarbonsäuren

Mai 5th, 2007 Autor: Phillip Kroll -

But-2-endisärue

Verbindungen mit vier Kohlenstoff Atomen

Mai 5th, 2007 Autor: Phillip Kroll -

Verbindungen mit vier  Kohlenstoff Atomen

Hexan, Hexen, Hexin

Mai 5th, 2007 Autor: Phillip Kroll -

Verschiedene Beispiele für Nomenklaturen des Hexans, Hexens und Hexins

Hexan, Hexen, Hexin

Navigation


Suche


Linkblog