Zum neuen Informatik-Forum >>
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Programmierproblem

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Delphi/Kylix
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
sunny-Sonnenschein
Gast





BeitragVerfasst am: 01. Jun 2006 16:48    Titel: Programmierproblem Antworten mit Zitat

Ich muss gerade ein Programm schreiben für die Schule. Mein Problem ist, dass sich der Computer nicht die Zahl merkt, die angegeben wird. Jedes mal wenn ich neu auf den Button klicke, merkt er sich eine neue Zahl. Ersoll sich aber alle zahlen merken, wenn ich auf den Button drücke und erst auf einem anderen Button die Zahlen wieder löschen. Welchen Befehl kann ich nutzen damit er sich alle Zahlen merkt?
Nach oben
gune
Gast





BeitragVerfasst am: 01. Jun 2006 17:30    Titel: Antworten mit Zitat

könnteste dat etas erläutern ... ich weiß nich wie du dat genau meinst...

nimmt man mittels des button klicks eine zahl auf aus einem edit feld zb? wenn ja dann nehm einfach mehrere variablen und wenn eine variable voll ist nimmta die nächste. das mit ner numer ausm speicher löschen kommt dann vieleicht späta


also


...
var zahl1 ,zahl2, zahl3, zahl3 : integer
begin
if zahl1 = '' then
zahl2 := form1.edit1.text;
else if zahl2 := '' then
zahl2 := form1.edit1.text; // und so weiter
end;
Nach oben
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 01. Jun 2006 19:28    Titel: Antworten mit Zitat

Super, und wenn alle Variablen voll sind?

Klassisch würde man dafür ne Liste nehmen. Sollts wohl auch in Delphi vorgefertigt geben, irgendwo... Alternativ n Array, das, wenn es voll werden sollte, vergrößert wird.

_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez
Gast





BeitragVerfasst am: 02. Jun 2006 16:45    Titel: Antworten mit Zitat

In Delphi kann man Arrays dynamisch wachsen lassen, wenn ich mich recht entsinne.
Dafür gibt es eine SetLength() Funktion, die diese Aufgabe übernehmen kann.
Afaik muss dafür aber das Array für den Compiler von Anfang an als dynamisch sichtbar sein, dass bedeutet, dass man bei der Deklaration des Arrays keine Größenangabe angeben darf, sondern lediglich Array of Integer; oder dergleichen schreibt.
SetLength() kann man dann das Array und die neue Länge übergeben und das Array wird vergrößert. Näheres dazu findet sich aber in der Doku.

Insgeheim ist diese Lösung natürlich Bullshit. Ich weiß nicht genau wie clever der Delphi-Compiler ist, aber ich denke es werden sämtliche Inhalte in ein neues Array auf dem Stack kopiert. Das ist aber halt inperformant und einfach pöse.

Daher sollte entweder eine passende Standardstruktur von Delphi (gibts Listen als ADT? ich glaube ja, ne?) benutzt werden oder wenn mans stylish haben will und vor Klassenkameraden mal nen bissl pressen will, implementiert man ne eigene verkettete Liste mithilfe von Zeigern, was für dich aber wohl zu schwer sein dürfte Augenzwinkern
Nach oben
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 02. Jun 2006 17:00    Titel: Antworten mit Zitat

@Senior: Na ja, kommt drauf an, wie das genau realisiert wird. Klingt für mich irgendwie wie der Vector in Java. Wenn diese Größenänderungen vernünftig durchgeführt werden, kann das insgesamt durchaus performant sein. Die Rechnungen sind schon ne Weile her, aber die gemittelte Laufzeit bei nem Array, das immer, wenns voll ist, verdoppelt wird, was gar nicht mal so schlecht...
_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez
Gast





BeitragVerfasst am: 02. Jun 2006 17:53    Titel: Antworten mit Zitat

Crotaphytus hat Folgendes geschrieben:
@Senior: Na ja, kommt drauf an, wie das genau realisiert wird. Klingt für mich irgendwie wie der Vector in Java. Wenn diese Größenänderungen vernünftig durchgeführt werden, kann das insgesamt durchaus performant sein. Die Rechnungen sind schon ne Weile her, aber die gemittelte Laufzeit bei nem Array, das immer, wenns voll ist, verdoppelt wird, was gar nicht mal so schlecht...


Eben, genau darauf kommt es an und das weiß ich leider nicht mehr. Sicherlich machts die Anwendung nicht sooo viel langsamer, aber es ist halt irgendwie blöde.

Naja, es ähnelt im Grunde dem Vector in Java nur mit dem Unterschied, dass man SetLength selber aufrufen muss - der Vector in Java vergrößert und verkleinert sich dagegen selbständig.
Nach oben
Crotaphytus



Anmeldungsdatum: 08.05.2005
Beiträge: 213

BeitragVerfasst am: 02. Jun 2006 18:55    Titel: Antworten mit Zitat

Kommt halt drauf an, wie mans verwenden will. Denn bei jedem Zugriff auf ein Element mit nem bestimmten Index ist diese Struktur schneller.

Und wer weiß, vielleicht gibts unter Delphi ja auch ne automatische Vergrößerung? Wobei, das trau ich der Sprache nicht zu... Augenzwinkern Aber das Analogon zu setLength gibts beim Vector auch.

Na ja, aber ich glaub, wird driften gerade ab... Augenzwinkern

_________________
Genie oder Wahnsinn? Wer kann es wissen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez
Gast





BeitragVerfasst am: 02. Jun 2006 19:59    Titel: Antworten mit Zitat

Crotaphytus hat Folgendes geschrieben:
Kommt halt drauf an, wie mans verwenden will. Denn bei jedem Zugriff auf ein Element mit nem bestimmten Index ist diese Struktur schneller.

Und wer weiß, vielleicht gibts unter Delphi ja auch ne automatische Vergrößerung? Wobei, das trau ich der Sprache nicht zu... Augenzwinkern Aber das Analogon zu setLength gibts beim Vector auch.

Na ja, aber ich glaub, wird driften gerade ab... Augenzwinkern


Die Verwendungssache gibt wirklich den Ausschlag. Will man eine sequentielle Struktur die schnell angesprochen und leicht auf Element k zugegriffen werden kann, sind Arrays ideal und unschlagbar. Sollen dagegen viele Editieroptionen, z.B. Einfügen, Anhängen oder löschen, so sind verkettete Listen eben schneller Augenzwinkern

Deshalb sollte man unter Java ja gegen List programmieren: So kann man schnell die Implementierung vonner ArrayList auf ne LinkedList oder vice versa geändert werden, ohne das sich die Schnittstelle ändert.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Informatikerboard.de Foren-Übersicht -> Delphi/Kylix Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen