Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Suchergebnisse

Suchergebnisse 1-20 von insgesamt 70.

Werbeanzeige

15.07.2017, 16:14

Forenbeitrag von: »ProgFrog«

Referenz auf Basisklasse-Problem!

Entschuldige, aber ich verstehe irgendwie einfach nicht, wieso das mit dem "ref" ein Problem ist ohne "ref" ist das ok

15.07.2017, 15:45

Forenbeitrag von: »ProgFrog«

Referenz auf Basisklasse-Problem!

Also meinst Du, wenn ich in der Eat-methode einen TSlimeGhost übergeben bekomme und in der Eat-Methode diese übergebene Instanz dann auf eine Basisklasseninstanz zeigen lasse, ist das Ok? EDIT: Ja, ich rede eigentlich von C#, aber in Pascal habe ich da auch Mist bekommen und wie wäre es dann in C++?

15.07.2017, 15:29

Forenbeitrag von: »ProgFrog«

Referenz auf Basisklasse-Problem!

Hallo Leute, ich habe eine wichtige Verständnisfrage zu Verweisübergaben in Bezug auf Vererbung/Polymorphismus!! Ich habe folgendes Codebeispiel bzw. folgende Beispielarchitektur: //Pseudocode: Klasse TGhost: //TGhost ist instanziierbar! Name = String Groesse = Byte; Methode Spuken(); { //BUUUH... } Jetzt haben wir noch 2 verschiedene Ableitungen von der TGhost und zwar: TCannibalGhost und TSlimeGhost. TCannibalGhost kann extra noch andere Geister Essen, das sieht so aus: Methode Eat(ref TGhost ...

14.05.2017, 12:05

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

@TGGC: Aber sämtliche Pointer in der Struktur sind READONLY, also nur 1x initialisierbar, wenn die gesamte Struktur nämlich initialisiert wird Dann ist es eigentlich schon so, dass es eine Absicherung ist, worauf Bla und die anderen genannten Pointer zeigen. Oder missverstehe ich Dich gerade??

13.05.2017, 14:51

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

Achso meintest Du das Und danke für Deine Stellungnahme bezüglich meiner "Architektur", ich brauchte da etwas Feedback von Profis ob das so in etwa designbar ist und ich merke auch in der Benutzung meiner Strukturen dass sie konsistent sind, weil wenn sie von der Benutzung schon sehr un-semantisch und inkonsistent sind, dann merke ich das immer dann nämlich, wenn es irgendwie sehr umständlich wird, die Datenstrukturen zu benutzen.

13.05.2017, 12:15

Forenbeitrag von: »ProgFrog«

Pointer = Array oder nur variable??

@Nox Einfach nur aus Neugier, weil ich halt oft gesehen habe, dass man eben wie Nimelrian es gesagt hat, auch die size übergibt und ich dachte mir, dass das doch auch selber geht, aber da habe ich mich nun mal geirrt. Danke an alle für die Tipps

13.05.2017, 12:04

Forenbeitrag von: »ProgFrog«

Pointer = Array oder nur variable??

Ich will ja keinen neuen Typen bauen, sondern nur HERAUSFINDEN, ob der Zeiger der da antanzt, ein Zeiger auf einen dynamisch reservierten Speicherblock ist (Array) oder nur ein Zeiger auf einen primitiven Typen, also kein Array darstellt, sprich wenn es ein einfacher Typ sein sollte, dann müsste *(c + 1) irgendwie Müll ergeben und nicht noch ein Element drin sein, was den gleichen Typen hat.

13.05.2017, 11:56

Forenbeitrag von: »ProgFrog«

Pointer = Array oder nur variable??

Das kann ich ja nicht über die Längenvariable merken, wenn ich NUR ein RAW-POINTER übergeben bekomme, gibt es da gar keine Möglichkeit?

13.05.2017, 11:51

Forenbeitrag von: »ProgFrog«

Pointer = Array oder nur variable??

Hmm, aber was wenn ich nur den pointer habe und ich einfach in der Funktion selbst herausfinden will, ob es sich um 1 variable oder ein ganzes Array handelt?

13.05.2017, 11:23

Forenbeitrag von: »ProgFrog«

Pointer = Array oder nur variable??

Hallo ich nochmal Ich weiß um ehrlich zu sein nicht ganz, wie sauber ich es hinbekommen kann abzufragen, ob ein übergebener Zeiger ein Zeiger auf das Start-Element eines Arrays ist oder nur einfach eine normale variable? Mein Ansatz war persönlich am Anfang, stumpf zu kucken, ob die nächsten [x = 3] Elemente auch vom Typ [Y] sind und dann einfach es als [Array of Y] intern zu handhaben, also print(*(c + i)) --> so ungefähr? Was meint ihr dazu? Gute Idee oder eher unsauber/ bzw. nur dämlich Wäre ...

13.05.2017, 09:29

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

Achso und @Schorsch Ich meinte aber C++ und da wird per Default alles erstmal auf dem Stack alloziiert Wenn man eine Struktur oder Klasse auf dem Heap erstellen will, dann reserviert man es über "new" und speichert ja den zurückgegebenen Pointer in einem Struktur/Klassen - Pointer ab.

12.05.2017, 15:48

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

Und wo ich mir halt auch nicht so sicher bin ist, mein ByteChunk hat eine Funktion: ChangeCache(ByteChunk* newChunk) Wenn ich jetzt den internen Puffer des 1.Chunks auf einen anderen Puffer zeigen lassen möchte, dann weise ich den zeiger von :newChunk an dem aktuellen byteChunk zu, sodass beide auf den gleichen Cache zeigen sollen und auch beide von diesen lesen/schreiben dürfen, was aber per Default nicht möglich sein soll, sondern halt nur wenn man es explicit wünscht. Und meine Frage ist nun,...

12.05.2017, 15:39

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

Ok, ich werde das mal Profilen, aber ja, der Gedanke war wirklich nur, dass nicht unnötig immer neue Kopien erstellt werden, denn ich brauche diesen ByteChunk in einem Array und das wäre dann eine Speicherechnung von: chunks.Length * 48(Alle bislang gezählten Kopien von "Call-by-Value") auf 32bit OS: Obwohl es nur benötigt: chunks.Length * 48/2 (weil Pointer nur die hälfte des Speichers meiner 8byte Datentypen verbrauchen. Und zu meiner Wahl auf Pascal: Ich finde die Sprache und die Möglichkeite...

12.05.2017, 13:41

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

Ok erstmal vielen Dank für die schnelle Antwort! 1)^ --> ist ein Zeiger und @ --> gib mir die Adresse von... 2)Das Datenstrukturmodell ist eig. ziemlich ähnlich zu C++: record --> Wird auf dem Stack erstellt und bei Zuweisungen an record des gleichen Typs wird eine neue Kopie erstellt class --> Wird auf dem Heap erstellt und bei Zuweisungen an class des gleichen Typs wird eine Adresse an das bestehende Objekt kopiert, also 2 zeiger auf ein Objekt erstellt Object --> Wird auf dem Stack erstellt, ...

12.05.2017, 13:06

Forenbeitrag von: »ProgFrog«

Pascal: Pointer in Struct(record) gute Idee?

Hello Leute, ich würde ganz gerne eure Hilfe in Anspruch nehmen und gerne fragen, ist das unten folgende Prinzip ok oder verstößt man quasi gegen die Konventionen der OOP wenn ich sage: Quellcode 1 2 3 4 Test = record A, B, C, D: ^Int32; readonly; //keine Arrays Bla: Array of Byte; readonly; end; Oder sollte ich wenn ich so eine Codestück habe, doch leider aus, in dem Fall "Test" eine Klasse machen? Was Sagt ihr? Mfg ProgFrog

31.01.2017, 12:18

Forenbeitrag von: »ProgFrog«

TRY-EXCEPT funktioniert in fpc 3.0.0 nicht????

Danke erstmal für deine Antwort, aber leider hilft auch das nicht :/ Ich habe gehört, dass man try-except nur im Release-Mode von Lazarus/FPC verwenden kann, also das es funktioniert, werde ich gleich mal versuchen

30.01.2017, 18:48

Forenbeitrag von: »ProgFrog«

TRY-EXCEPT funktioniert in fpc 3.0.0 nicht????

Hallo liebe Leute, wie am Titel schon erkennbar, funktioniert der folgende Code nicht: Quellcode 1 2 3 4 5 6 7 8 9 10 try begin writeln('Anweisungen...'); //Kann einen Wert nicht am eingegeben Index speichern und wirft EAccessViolation end except On EAccessViolation do begin writeln('Anweisungen...'); end Der "Except" -Block wird GARNICHT ausgeführt, wenn: SIGSEGV geworfen wird, also segmentation-fault Weiß jemand, woran das liegen kann?? Ich bin super sprachlos... :/ Liebe Grüße ProgFrog

12.12.2016, 19:39

Forenbeitrag von: »ProgFrog«

Pascal - FreeMem(pointer) wirft: SIGABRT???

Achso, ja der Sinn Ich habe eine eigene Arrayklasse geschrieben, also um ein herkömmliches Array zu implementieren und es klappt soweit auch alles Und nun, hatte ich vor eine eigene "Delete" Funktion zuschreiben, in dem ich das zu löschende Element im Array lokalisiere (Adresse + Variable) und es in einem Pointer zwischenspeichere. Dann war die Idee: Einfach diesen "tmp_ptr" frei zugeben, um damit das Löschen zu realisieren. Und ja, intern in der Array-klasse hätte ich die Verantwortung natürlic...

12.12.2016, 15:45

Forenbeitrag von: »ProgFrog«

Pascal - FreeMem(pointer) wirft: SIGABRT???

Hallo liebe Community, ich habe ein Problem mit dem Freigeben von Speicher in Pascal: Was ich derzeit versuche ist, einen "Haupt-Zeiger" ein paar stellen im Speicher zu verschieben und den neuen zeiger, also den verschobenen, in einen anderen Pointer zwischen zu speichern, wenn ich diesen Pointer dann freigeben möchte mit: FreeMem(pointer), bekomme ich eine Exception: SIGABRT Code: Quellcode 1 2 curr_item_ptr := f_main_ptr + index; FreeMem(curr_item_ptr);\0 f_main_ptr hat eine andere Adresse als...

Werbeanzeige