AllocateMemory(0, len, 0) -> Fehlermeldung
AllocateMemory(0, len, 0) -> Fehlermeldung
"Incorrect number of parameters" kommt da immer.
Is mein PB zu alt oder der Source?
Hab 3.91
Is mein PB zu alt oder der Source?
Hab 3.91
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Nicht nur Lukas-P:
Code: Alles auswählen
If ReadFile(0, windir + "\test.bulk")
len = Lof()
*mem = AllocateMemory(len)
ReadData(*mem, len)
CloseFile(0)
EndIfAngenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Eine kleine Anregung:
Überprüfungen der Rückgabewerte beim reservieren von Speicher
wegzulassen, weshalb man das mal ansprechen muß.
Damit meine ich nicht nur Dich, DarkDragon, sondern allgemein
alle Leute an Board. Auch Leute die schon seit 20 Jahren
programmieren zeigen hier immer häufiger solche Anfänger-
Fehler.
Da hilft auch nicht die Ausrede das man nur BASIC-Programmierer ist
und es da nicht so genau nehmen muß.
"Es ist ja nur ein Beispiel" hilft da auch nicht, da es darum geht
das es zur Gewohnheit wird und sich immer mehr verbreitet,
wie man es hier im Board in letzter Zeit immer öfter beobachten
kann.
Überprüft einfach *immer* ob der Speicher auch reserviert
werden konnte - auch wenn ihr nur 128 Bytes an Speicher
anfordert!
Diese Nullpointer-Geschichten kennt Jeder... nur ist das Problem
das sich hier im Forum der schlechte Anfänger-Programmierstil
immer mehr verbreitet.
Versucht wirklich mal mehr *bewußt* zu programmieren, d.h.
mal mehr denken und auf solche Kleinigkeiten besser achten.
Die Überprüfung von Rückgabewerten sollte Gewohnheit sein,
dann macht man es automatisch und braucht auch nicht mehr
großartig darüber nachzudenken.
Momentan wird meist nichts mehr überprüft und nur noch wie
wild rumge-Poke-d, so daß Ihr damit das klassische Bild der
schlechten BASIC-Programmierer absolut erfüllt.
Ihr tut damit nicht mir einen Gefallen, sondern nur Euch selbst...
In letzter Zeit hat es sich hier bei vielen Leuten eingebürgertDarkDragon hat geschrieben:Code: Alles auswählen
If ReadFile(0, windir + "\test.bulk") len = Lof() *mem = AllocateMemory(len) ReadData(*mem, len) CloseFile(0) EndIf
Überprüfungen der Rückgabewerte beim reservieren von Speicher
wegzulassen, weshalb man das mal ansprechen muß.
Damit meine ich nicht nur Dich, DarkDragon, sondern allgemein
alle Leute an Board. Auch Leute die schon seit 20 Jahren
programmieren zeigen hier immer häufiger solche Anfänger-
Fehler.
Da hilft auch nicht die Ausrede das man nur BASIC-Programmierer ist
und es da nicht so genau nehmen muß.
"Es ist ja nur ein Beispiel" hilft da auch nicht, da es darum geht
das es zur Gewohnheit wird und sich immer mehr verbreitet,
wie man es hier im Board in letzter Zeit immer öfter beobachten
kann.
Überprüft einfach *immer* ob der Speicher auch reserviert
werden konnte - auch wenn ihr nur 128 Bytes an Speicher
anfordert!
Diese Nullpointer-Geschichten kennt Jeder... nur ist das Problem
das sich hier im Forum der schlechte Anfänger-Programmierstil
immer mehr verbreitet.
Versucht wirklich mal mehr *bewußt* zu programmieren, d.h.
mal mehr denken und auf solche Kleinigkeiten besser achten.
Die Überprüfung von Rückgabewerten sollte Gewohnheit sein,
dann macht man es automatisch und braucht auch nicht mehr
großartig darüber nachzudenken.
Momentan wird meist nichts mehr überprüft und nur noch wie
wild rumge-Poke-d, so daß Ihr damit das klassische Bild der
schlechten BASIC-Programmierer absolut erfüllt.
Ihr tut damit nicht mir einen Gefallen, sondern nur Euch selbst...
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Um Fehler in Deinem Programm zu vermeiden, bzw. die ChancePoser hat geschrieben:Ja aber warum PB noch komplizierter zu machen als es eh schon ist?
von Fehlern von vornherein minimieren?
Fehler im Programm gibt es sehr oft, da brauchen wir nicht
drüber reden. Wenn Du aber ohne Fehlerabfragen programmierst
hast Du hunderte oder tausende zusätzliche Fehlerquellen.
Wenn Dein AllocateMemory() schief geht, also den angeforderten
Speicher nicht reservieren konnte, dann enthält Dein Pointer 0 (NULL).
Beim nächsten Befehl der darauf lesend oder schreibend zugreift
gibt es eine Ausnahme (Exception), und Dein Programm wird
vom Betriebssystem wegen dieses unerlaubten Zugriffes
getötet.
Viel Spass dann bei der Fehlersuche...
Davon abgesehen hat aber "programmieren" erstmal nichts mit
einer bestimmten Programmiersprache (z.B. BASIC, Dialekt 'Pure')
zu tun, sondern ist allgemein die Verarbeitung von Daten, das
anwenden von Algorithmen, das Lösen von Problemen (meist
verbunden mit der besonderen Fähigkeit zum logischen Denken),
die (saubere) Arbeitsweise und Planung des Programmierers,
und vieles mehr.
Du solltest nicht nur "PureBasic", "QuickBasic" oder "C" lernen -
sondern *programmieren lernen*!
Wenn Du programmieren kannst, dann ist es egal welche Sprache
Du dann für die Umsetzung eines jeweiligen Projektes nimmst.
Oder denkst Du etwa jemand der die PureBasic-Hilfe liest und
dann "If..Else..EndIf" und "OpenWindow()" anwenden kann,
der kann dann programmieren?
Ganz sicher nicht, denn programmieren ist etwas anderes -
da gehört ein bissl mehr dazu.
Setze Dich ruhig mal hin und überlege was 'programmieren'
eigentlich heißt. Was gehört alles zum programmieren, was
macht einen guten Programmierer aus usw...
(wenn Du noch Anfänger sein solltest wirst Du eh kaum von allein
darauf kommen können was programmieren eigentlich ist)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Danke, ich werd mich mehr um solche Abfragen bemühen.
Sowas wär auch mal eine Idee für den jaPBe oder die StandardIDE in der Auto-Vervollständigung:
Aus:
Mach:
denn oftmals liegt eine Nicht-Abfrage in der Faulheit eines Menschen.
Sowas wär auch mal eine Idee für den jaPBe oder die StandardIDE in der Auto-Vervollständigung:
Aus:
Code: Alles auswählen
*mem = AllocateMemory(...)Code: Alles auswählen
*mem = AllocateMemory(...)
If *mem
;Hier nun die Cursorposition hinlegen
EndIfAngenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Oder noch besser:
Code: Alles auswählen
*memory = AllocateMemory(len)
If *memory = 0
MessageRequester("Titel","Nachricht die in den Einstellungen festgelegt wird!")
End
else
;Cursor
endif