Collections (vorerst nur Listen)

Übersicht BlitzBasic DLLs und Userlibs

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Xeres

Moderator

BeitragSo, Jan 11, 2015 1:56
Antworten mit Zitat
Benutzer-Profile anzeigen
@Mirco1989: Bitte benutze den Edit Button und editiere deine Beiträge nach, anstatt Doppelt zu posten. Danke.


Leider lässt dein Beispiel Code es nicht zu, dass Types gelöscht oder verschoben werden könnten:
BlitzBasic: [AUSKLAPPEN]
Type TTest
Field val
End Type

Local i%, t.TTest
For i = 1 To 5
t = New TTest
t\val = i
Print( Str(t) + " : " + Handle(t) )
Next

Print("- - -")


Delete First TTest
Delete Last TTest
Insert Last TTest Before First TTest
t = New TTest
t = New TTest

For t = Each TTest
Print( Str(t) + " : " + Handle(t) )
Next


WaitKey()


BlitzBasic Types lassen sich mit ein paar Tricks relativ sinnvoll bändigen. Wird es aber etwas komplizierter sind sie schlicht weg nicht mehr zu gebrauchen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Thunder

BeitragSo, Jan 11, 2015 2:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau, Mirco1989, dass es machbar ist, heißt noch lang nicht, dass es auch ne gute Lösung ist.
DAK versucht das Problem zu adressieren, dass man in BB ein Type implizit mit einer LinkedList assoziiert wird und man keine zusätzlichen LinkedLists daraus bauen kann (geschweige denn Types ohne Listen verwenden).

BB berücksichtigt nicht, dass man möglicherweise seine Daten anders strukturieren möchte, als alles gleichartige in einer Liste zu verketten. Es behauptet keiner, dass man nicht mit irgendwelchen Hacks drumherum programmieren kann, aber Hacks sind nicht schön Wink
Gerade wenn es darum geht, Code nachzuvollziehen

Nebenbei bemerkt fühle ich mich jetzt bestätigt, was meine Aussage in meinem ersten Beitrag angeht.
 

Mirco1989

BeitragSo, Jan 11, 2015 6:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, dass das nach einem Insert nicht mehr korrekt funktioniert war mir schon klar, aber an Delete hab ich nicht gedacht. Sad
War auch nur ein Versuch für einen Typezugriff mit Index, also sorry DAK, kritik ist von mir nie bös oder gar abwertend gemeint

Ich wollte eigentlich nur irgend wie eine Möglichkeit finden, das nur mit Blitzbasic zu machen, damit ich bei einer Weitergabe meines Code nicht zusätzlich die DLL und die decls weiter geben muß (das vergess ich nämlich öfters)
Wer Rechtschreibfehler findet, darf sie behalten

Thunder

BeitragSo, Jan 11, 2015 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Die decls Datei musst du nicht weitergeben. Die ist nur für den BlitzBasic-Compiler da, dass der weiß welche Funktionen in der DLL deklariert sind und welche Typen sie nehmen und zurückgeben.
Nachdem dein Programm kompiliert ist, brauchst du nur das Programm und die DLL weiterzugeben.

Und wenn die jeweilige DLL schon auf der Zielplatform vorhanden ist (sowas wie user32.dll, also hauptsächlich WinAPI) dann brauchst du sie auch nicht beilegen.

Was mich gerade auf ne Idee gebracht hat: Eigentlich müsste es ja in Windows ne C++ Runtime geben. Also wäre es cool eine decls für die zu schreiben, sodass man z.B. std::vector missbrauchen kann, um BlitzBasic-Types zu speichern Razz
So könnte man die DLL gänzlich umgehen.

DAK

BeitragSo, Jan 11, 2015 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Sirrus hat Folgendes geschrieben:
@DAK wenn man hier nur Kritik äußern darf, wenn Informatik studiert hat und Vorlesungen gehalten hat, bin ich im falschen Forum. Ich mache das so ähnlich wie Mirco und habe auch noch nichts gehabt, was ich nicht irgendwie mit Types machen kann, aber vieleicht sollte ich (als Rentner) noch ein Studium anfangen um mir Probleme zu schaffen für die du eine Lösung anbietest.
Nach meiner bisherigen Erfahrung gibt es beim Programmieren nicht die eine einzig richtige Lösung, sondern es gibt immer mehrere Möglichkeiten um ans Ziel zu kommen.


Ich meine nicht, dass man nicht kritisieren darf, wenn man nicht studiert hat. Deswegen sag ich sowas üblicherweise nicht.
Mir ging es explizit um dieses Statement:

Mirco1989 hat Folgendes geschrieben:
Aber egal, wer mit Types nicht umgehen kann, kann ja jetzt deine Listen wenden....

Da ist jemand, der nicht sonderlich viel Programmiererfahrung hat, der keine Ahnung hat, was Listen sind und nicht weiß, das Listen ein wichtiges Designpattern ist, das seit seit Jahrzehnten allgemein verwendet wird.
Das ist alles ok, weil es kommt ja keiner als Profi auf die Welt und ich kann mich auch gut an meine Anfänge erinnern. Und auch wenn jemand nach Jahrzehnten nicht viel drauf hat, weil er nur als Hobby programmiert, dann ist das auch absolut ok, weil ich kann ja z.B. auch kein Auto reparieren.
Das Problem hier ist, dass Mirco1989 an dieser Stelle sich dazu entschieden hat, mir zu sagen, dass ich mich nicht auskenne, weil er nicht verstanden hat, worum es geht, weißt du, was ich mein?
Das ist der Punkt, wo ich happig werd, wenn ein relativer Anfänger mir sagt, dass ich keine Ahnung hab, weil er nicht verstanden hat, worum es geht. Deswegen hab ich meine Referenzen gezogen, nur um ihm klar zu machen, dass sein Unverständnis ihn nicht zum Profi macht.

@Mirco1989:
Ja, man kann im Endeffekt alles was man mit Listen machen kann auch mit anderen Methoden umschreiben. Genauso wie man alles was man mit Funktionen und/oder Schleifen lösen kann auch mit Gotos machen kann, oder alles was mit Types geht auch durch Arrays machen kann. Oder man kann gleich auf höhere Sprachen pfeiffen und alles in Assembler schreiben, oder besser noch direkt in binärem Maschinencode.
Der Sinn von höheren Sprachkonstrukten ist den Code schöner und übersichtlicher zu machen. Sie erleichtern das Schreiben und das Lesen des Codes. Sie machen die Sprache nicht mächtiger, nur das Programmieren einfacher. Wie gesagt, selbst ein While gibt der Sprache nicht mehr Fähigkeiten im Vergleich zu einer Kombination von If und Goto. Aber das While macht den Code deutlich verständlicher als If/Goto-Kombinationen.

Selbiges hier. Mit dreckigen Hacks kann man auch mit Types und Arrays alles machen, was Listen machen können. Aber Listen machen das Programmieren einfacher und übersichtlicher. Sie erlauben es, Daten wesentlich effizienter zu organisieren als es mit Types und Arrays machen kann.

@DLL: Decls brauchst du nicht mitgeben, die werden nur für den Compiler benötigt. Damit du die DLLs nicht vergisst, lagere sie am besten nicht im decls-Ordner (wo sie vom Compiler automatisch mitverwendet werden) sondern in einem seperaten Ordner. Immer wenn du dann beim Programmieren Funktionen aus den DLLs verwenden willst wird der Compiler schreien. Dann kopierst du die DLL in den Projekt-Ordner. Beim Packen packst du dann den ganzen Projektordner inklusive der DLLs.

@Handle: Nein, Handle gibt keine Indexwerte zurück, sondern die Pointer-Adressen auf das Object. Das heißt, die einzelnen Objekte haben keine kontinuierlichen Adressen, sondern sind dort im Speicher wo grad Platz war. Die sind zwar nicht ganz zufällig, aber zufällig genug, dass man sich nicht auf sie verlassen kann.

@Insert: Insert ist bei meinen Arraylists noch nicht dabei, lässt sich aber ohne weiteres einbauen. Sind rund 3 Zeilen in der DLL.

@Nie bös gemeint oder abwertend gemeint: Sorry, das nehm ich dir nicht ab. Der Satz "Aber egal, wer mit Types nicht umgehen kann, kann ja jetzt deine Listen wenden...." ist ungefähr so abwertend wie man den überhaupt formulieren kann.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Sirrus

BeitragSo, Jan 11, 2015 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@DAK ich glaube, du interpretierst den Satz von Mirco falsch.

Dazu mal ein Vergleich:
Ein Weg kreuzt einen Fluß. Um nicht jedes Mal durch den Fluß schwimmen zu müssen, baut jemand eine Brücke.
Dazu muß er zwangsläufig mindestens einmal durch den Fluß schwimmen, um die Brücke an beiden Ufern zu befestigen.

Jetzt sagt jemand: "Wer nicht schwimmen kann, kann ja jetzt die Brücke benutzen"
Die Aussage beinhaltet nicht, das jeder, der die Brücke benutzt nicht schwimmen kann!
Sie beinhaltet auch nicht, das der Erbauer der Brücke nicht schwimmen kann!
Aber sie beinhaltet, das die Benutzung der Brücke eine Alternative zum schwimmen ist.

Entsprechend verstehe ich die Aussage: "Aber egal, wer mit Types nicht umgehen kann, kann ja jetzt deine Listen wenden...."
Die Aussage beinhaltet nicht, das jeder der deine Listen verwendet, nicht mit Types umgehen kann!
Sie beinhaltet auch nicht, das der Programmierer der Listen nicht Types umgehen kann!
Aber sie beinhaltet, das Mirco deine Listen als eine Alternative zu Types anerkennt.

Daher glaube ich, das Mirco das nicht abwertend gemeint hat, es ist nur etwas mißverständlich formuliert.
Dabei sollte man auch berücksichtigen, daß ein ca.14-jähriger (8.Klasse) einen anderen Wortschatz hat, als du.

DAK

BeitragMo, Jan 12, 2015 3:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Touché. Ich habe nach österreichischer Zählung gedacht, wobei 8. Klasse gleichbedeutend wäre zur 12. Klasse in Deutschland, was ihn auf rund 18 Jahre gesetzt hätte. Habs mir noch mal durchgelesen, hast wohl recht damit.

Naja, wie auch immer. Sorry, Mirco, für die Verwechslung mit dem Alter. Wäre mir bewusst gewesen, dass du rund 14 bist, dann wäre ich nicht mit so harten Bandagen in den Ring gegangen.

Noch ein Tip fürs nächste Mal: mach deine Recherche, bevor du dich in einen Bash stürzt. Schau, dass du das Thema verstehst und weißt mit wem du diskutierst, bevor du die Diskussion beginnst. Du kriegst nie Probleme, wenn du was nicht verstehst und nachfragst (ruhig auch kritisch). Wenn du aber aggressiv rein gehst und jemandem aufs Maul gibst, dann kannst du gleiches zurück erwarten. (Merke den Unterschied zwischen Noob und Newbie.) Und im Schriftlichen mit Leuten die man nicht kennt und die von wo ganz anders aus dem deutschen Sprachraum kommen sollte man besser auf der netteren Seite bleiben, da man leicht Sachen missversteht.

Frieden über das Thema?
Gewinner der 6. und der 68. BlitzCodeCompo

ozzi789

BeitragDi, Jan 27, 2015 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich wieder mal etwas Quick & Dirty mit BB löse, kommt deine Lib bestimmt sehr praktisch. Danke Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group