Thema: Delphi Char an DLL übergeben

Einzelnen Beitrag anzeigen

cringely

Registriert seit: 14. Jul 2006
7 Beiträge
 
#3

Re: Char an DLL übergeben

  Alt 4. Sep 2006, 14:10
Zitat von JasonDX:
Zitat von Andru:
Die Funktionsdoku gibt Folgendes wieder:
Code:
OpenPlayer(
HANDLE handle,
char ip,
int port,
LIVEMODE mode,
int buffers,
int buffersize,
int priority)
Was mach ich nun aber mit 'Char'? Glaube die Doku ist für C oder C++.
Wie übergebe ich die IP? Kann ich daraus einfach einen String machen und übergeben?
Ein Char ist ein 8Bit (1Byte) grosser Datentyp. Ein String ist eine aneinanderreihung von Chars, also ein array, eine Liste von Chars. Ein PChar wiederrum ist ein Zeiger auf einen Char.
Wenn ein Char verlangt wird, musst du ihm auch einen geben. Zu deutsch: Hier gehoert auch wieder ein char als parameter hin, sprich auch das was in Delphi als Delphi-Referenz durchsuchenChar bekannt ist. Wenn allerdings der Bezeicher "ip" das sein soll, was er verspricht, so bleibt es mir ein Raetsel, wie man in einen 1Byte grossen Typ 4Byte reinkriegen soll. Die Funktion verlangt jedenfalls einen 1 Byte grossen Parameter.

Zitat von Andru:
Was mach ich bei LIVEMODE? Hier steht mode=LOW_DELAY_MODE ... kann ich hier eine Konstante definieren?
LIVEMODE scheint ein selbst definierter Datentyp zu sein. Hier sollte in der Dokumentation beschrieben sein, was er genau ist. Er wird wahrscheinlich ein struct (Delphi: (Delphi-Referenz durchsuchenpacked)Delphi-Referenz durchsuchenRecord) sein, da laesst sich aber ohne genauere angaben nur darueber spekulieren.

greetz
Mike
Ich denke, bei LIVEMODE wird es sich um eine Kontante oder einen enumerierten Typen handeln - zumindest sind die Anzeichen dazu da. Die sollten wohl in einer .h-Datei (bei C/C++ Quellen) oder in dem Source direkt angegeben sein. Bei enumerierten Typen ist ja die Reihenfolge wichtig, bei Konstanten einfach nur der Wert.

Grüße.

/edit
Das "char" sollte wohl eher "*char ip" heißen, also eine Zeichenkette - ich kann mir nicht vorstellen, dass eine IP durch ein Zeichen komplett abgebildet werden kann. Du kannst ein String dort übergeben, aber wichtig bei DLLs ist, dass Du 'shortstring' benutzen mußt, da das C-Runtime-Environment (welche durch die DLL-Ansteuerung eigentlich verwendet wird) den "normalen" Stringtypen von Delphi nicht interpretieren kann. Shortstring ist auf 255 Zeichen begrenzt - sollte aber locker für ipv4 bis ipv6 reichen
  Mit Zitat antworten Zitat