Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Was bedeutet PTR PTR

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Harald Kaiser



Anmeldungsdatum: 06.05.2006
Beiträge: 16
Wohnort: Karlsruhe

BeitragVerfasst am: 12.05.2006, 14:16    Titel: Was bedeutet PTR PTR Antworten mit Zitat

Hallo zusammen

Ich möchte mit FB eine Mysql-Datenbank verwalten. Da ich davon wenig Ahnung habe probiere ich ein Test-Programm aus, das die Tabellen und ihre Felder aus einer Datenbank auflistet.

In der mysql.bi steht folgendes:

type MYSQL_ROW as zstring ptr ptr

Kann mir jemand erklären, wozu das ptr ptrjavascript:emoticon('traurig')?

Wenn ich mir im Programm mit Print den Wert einer Var. dieses Typs anzeigen lasse erhalte ich
10358896
das sollten die Anzahl der Zeilen (eine) einer Tabelle sein.

Gruß Harald
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 12.05.2006, 14:38    Titel: Antworten mit Zitat

Ptr steht für Pointer und die Zahl die du herausbekommen hast müsste die Adresse sein, auf die der Pointer zeigt. lächeln
Wie genau, weiß ich jetzt leider auch nicht. neutral
Aber max61989 hat, soweißt ich weiß, einen Chat mit Freebasic realisiert, welcher MySQL benutzte. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anistasius



Anmeldungsdatum: 18.01.2006
Beiträge: 37

BeitragVerfasst am: 12.05.2006, 15:02    Titel: Antworten mit Zitat

Ich kenne jetzt die Mysql Lib nicht, aber an 'ptr ptr'
kommst du mit 'cast' ran

Beispiel:
dim as zstring ptr daten(anzahl)


funktion (integer,integer, cast(zstring ptr ptr, @daten(0)))

Vielleicht hilft das ja ein Stück weiter... zwinkern

Viele Grüße
Anistasius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 12.05.2006, 15:51    Titel: Antworten mit Zitat

"ptr ptr" ist einfach ein pointer auf einen pointer.
zstring ptr ptr ist also ein pointer auf einen pointer auf einen zstring.. is doch ganrnich so schwer? zwinkern
drankommen tust du dann dementsprechend zB mit **variable, 2 ptr also auch 2 *
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra


Zuletzt bearbeitet von MisterD am 13.05.2006, 23:29, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 12.05.2006, 18:03    Titel: Antworten mit Zitat

Dumme Frage:
Was bringt mir ein Pointer, der auf einen Pointer zeigt, der auf einen ZString zeigt?!
Ich bin mir schon dessen bewusst, das Freebasic im "Hintergrund" sehr oft mit Pointern arbeitet, Pointer also ganz Normal sind.
Aber was soll der Speziallfall?
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 12.05.2006, 20:29    Titel: Antworten mit Zitat

Ein Array ist im Grunde auch nur ein Pointer, der auf das Feld dereferenziert wird, eindimensionale Felder sind da sehr schön zum Demonstrieren:

Code:
dim as integer ptr einfeld = allocate(5*len(integer))
dim as integer    nochnfeld(4)

nochnfeld(1) = einfeld[1]


strings, und zstrings ganz besonders sind ebenfalls keine "echten" datentypen, sondern pointer, auf ubyte-arrays. Einzelne ASCII-Zeichen halt, einzelne Bytes.

Code:

dim as ubyte einstring(20)=>{asc("h"),asc("a"),asc("l"),asc("l"),asc("o"),0}
dim as zstring* 20 nochnstring
nochnstring = cast(zstring * 20, nochnstring)
print nochnstring

(cast muss da rein, weil sich fb sonst beschwert)

und wenn ich jetzt ein array von (z)strings erstelle, erstelle ich defacto ein array von ubyte arrays, und da wir ja jetzt wissen, dass arrays nur angewendete pointer sind: wir erstellen einen pointer pointer, ein array von pointern.

ja, is genauso pervers, wie's sich anhört, und da noch durchzusteigen, was jetzt wie und überhaupt gemeint ist, ist nicht ganz einfach.

Lutz böse Ifer

ps: die programmiersprache "c" stellt übrigens nicht in einem einfachen string seine aufrufparameter des programms bereit, sondern in einem solchen ptr ptr...

pps: sämtlicher text grad do in die tastatur gehackt, ungetestet, nicht zum verzehr geeignet, sondern nur zum "achso"-denken.
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.05.2006, 09:12    Titel: Antworten mit Zitat

Danke für die Erklärung.
(soweit hab ich nicht gedacht, das ein String Array ein Zweidimensionales Array Byte Array ist und damit 2 Pointer braucht)

Also Pervers ist das nicht, pervers wäre es, wenn es Pointer nicht gäbe zwinkern.
(Hab ich gemerkt, als ich einen Microcontroller in Asembler Programmiert habe, ich wollte indirekt Adressieren, konnte aber nicht)

Das sich auch beim Asembler Programmieren (für Microcontroller):
Die Variabel Deklaration bewirkt eigentlich nur das der Variabelnamen beim Asemblieren durch die Speicher Adresse ersetzt wird.
Eigentlich könnte man auch direkt die Speicheradresse eintippen und trotzdem ist man froh, das die Speicheradresse einen schönen Namen hat.
(Das merke ich immer wenn ich mit einem Sch*** Asembler arbeite, bei dem man keine Variabeln definieren kann (auch nicht mit Tricks))
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
max06



Anmeldungsdatum: 05.12.2004
Beiträge: 390
Wohnort: Augsburg

BeitragVerfasst am: 13.05.2006, 15:08    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
Aber max61989 hat, soweißt ich weiß, einen Chat mit Freebasic realisiert, welcher MySQL benutzte. lächeln


lächeln Japp, leider ist mir aber durch einen Festplattencrash der gesamte Quellcode verloren gegangen...

Durch Zufall fand ich im NoPaste einen Teil wieder.

Ich persönlich habe mit der mysql.bi nichts mehr am Hut, da ich mir eine eigene Funktion geschrieben habe, die das Verändern, Anzeigen, Löschen und Einfügen in eine Datenbank übernimmt.

Details findest du hier

Ich hoffe, das hilft dir weiter...


Grüße
Florian[/url]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Harald Kaiser



Anmeldungsdatum: 06.05.2006
Beiträge: 16
Wohnort: Karlsruhe

BeitragVerfasst am: 13.05.2006, 20:02    Titel: Was bedeutet PTR PTR Antworten mit Zitat

Hallo
Danke für die Antworten.

Ich habe schon Probleme mich mit Zeigern auseinanderzusetzen aber Zeiger auf Zeiger schlaucht mich ganz schön. Darum haben mich die meisten Erklärungen nur noch mehr verwirrt. verlegen

Vielleicht kann mir jemand einfach sagen, wie ich bei ptr ptr auf den Wert der Variablen komme. mit den Augen rollen

Danke max61989 das hilft mir bei einem anderen Problem weiter.

Gruß Harry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 13.05.2006, 23:28    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
[...]drankommen tust du dann dementsprechend zB mit **variable, 2 ptr also auch 2 *

mit den Augen rollen
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Harald Kaiser



Anmeldungsdatum: 06.05.2006
Beiträge: 16
Wohnort: Karlsruhe

BeitragVerfasst am: 15.05.2006, 23:40    Titel: Antworten mit Zitat

Hallo MisterD

Beim ersten Mal hab ichs nicht kapiert. mit dem Kopf durch die Mauer wollen
Mit **Variable funktionierts.

Danke

Gruß Harry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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.

 Impressum :: Datenschutz