AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Char an DLL übergeben

Ein Thema von Andru · begonnen am 4. Sep 2006 · letzter Beitrag vom 4. Sep 2006
Antwort Antwort
Andru

Registriert seit: 1. Feb 2006
Ort: Salzgitter
24 Beiträge
 
Delphi 6 Enterprise
 
#1

Char an DLL übergeben

  Alt 4. Sep 2006, 14:47
Aloha,

ich stehe momentan vor einem Problem. Ich muss eine DLL ansprechen und dabei Parameter übergeben.

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?

Was mach ich bei LIVEMODE? Hier steht mode=LOW_DELAY_MODE ... kann ich hier eine Konstante definieren?

Bin leider noch nicht wirklich gut betucht in Sachen Programierung.
Und die Unterschiede zwischen Char, PChar und String sind mir auch noch nicht so ganz klar.
Hab zwar schon TUTs gesehen, aber war da doch ein wenig faul.

Hoffe, Ihr könnt mir da helfen.


Gruß

Andru

Vielen Dank im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: Char an DLL übergeben

  Alt 4. Sep 2006, 14:56
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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
cringely

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

Re: Char an DLL übergeben

  Alt 4. Sep 2006, 15: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
Andru

Registriert seit: 1. Feb 2006
Ort: Salzgitter
24 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Char an DLL übergeben

  Alt 4. Sep 2006, 15:52
Zitat von cringely:
Zitat von JasonDX:

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.

Also leider ist in der Doku nicht mehr zu erkennen außer halt dem genannten Wert.
Denke aber, dass ich dort einen String übergeben kann.


Zitat von cringely:
/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
Du hast Recht: In der Doku steht Char* - nur dachte ich fälschlicherweise, dass es sich um einen Anhang handelt, der
dann später erläutert werrden sollte. Hatte dazu allerdings auch Nichts gefunden.
Und vielen Dank für den Tipp mit dem ShortString. Wusste ich auch nicht, dass C nur damit umgehen kann.

Hab jetzt jedenfalls eine Menge, die ich nun ausprobieren kann.

Danke Euch beiden nochmals!


Gruß Andru
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf