AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# is a 'field' but is used like a 'type'
Thema durchsuchen
Ansicht
Themen-Optionen

is a 'field' but is used like a 'type'

Ein Thema von EWeiss · begonnen am 10. Apr 2015 · letzter Beitrag vom 11. Apr 2015
Antwort Antwort
Seite 2 von 2     12   
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: is a 'field' but is used like a 'type'

  Alt 10. Apr 2015, 21:56
Sorry aber was soll das jetzt. ?

Ich weiß was eine Klasse ein Feld und eine Methode ist.
Meinen Fehler immer wieder zu posten bringt einfach nichts.

Es ist mir bekannt das es falsch ist.
Und wie schon gesagt höchstwahrscheinlich so wie in Delphi/C++ nicht umsetzbar.
Wenn doch wie ist die Lösung. ?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: is a 'field' but is used like a 'type'

  Alt 10. Apr 2015, 22:05
Sorry aber was soll das jetzt. ?

Ich weiß was eine Klasse ein Feld und eine Methode ist.
Meinen Fehler immer wieder zu posten bringt einfach nichts.

Es ist mir bekannt das es falsch ist.
Und wie schon gesagt höchstwahrscheinlich so wie in Delphi/C++ nicht umsetzbar.
Wenn doch wie ist die Lösung. ?

gruss
Entschuldigung für die Störung, aber wenn du keine Antwort von mir möchtest, dann richte keine Frage an mich.

Zur Erinnerung (ist wohl schon zu lange her)
Weil du ein Feld genauso benannt hast wie einen Typ kommt dieser Fehler.

Mach das nicht und der Fehler geht weg.

Die einfachste Lösung ist ja wohl dem Feld einen anderen Namen zu geben
Welchen Feld ?
PS: Keine weitere Störungen meinerseits auf diesem Kanal ... over and out
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (10. Apr 2015 um 22:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#13

AW: is a 'field' but is used like a 'type'

  Alt 10. Apr 2015, 22:09
Die beste Lösung wäre wohl:

Du kannst am Anfang der Datei zwar 'using HTags = IntPtr;' schreiben, aber das gilt nur für die Datei.
Das musst du dann eben in jeder Datei schreiben. Alternativ geht ja immer noch:

Verwende einfach IntPtr statt HTags.
Das sind jetzt zwei Wege, die relativ gut sind, und funktionieren sollten. Dass man einen Pointer noch typedef'd, damit man das richtige übergibt, ist eben typisch C++ und weniger C#. (Ein typedef Pointer ist eben immer noch ein Pointer und da könnte immer noch quasi alles dahinter stecken.)

Geändert von jfheins (10. Apr 2015 um 22:13 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#14

AW: is a 'field' but is used like a 'type'

  Alt 10. Apr 2015, 22:12
Die beste Lösung wäre einfach, keine Synonyme für Typen zu verwenden. Das verwirrt doch nur.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: is a 'field' but is used like a 'type'

  Alt 10. Apr 2015, 22:26
Die beste Lösung wäre einfach, keine Synonyme für Typen zu verwenden. Das verwirrt doch nur.
Die Fremd DLL ist in Delphi geschrieben und da machen die meisten Leute das so zumindest wie ich das so sehe.

Ich wollte halt die API so auslegen wie es in C++/Delphi ist, geht aber wohl nicht.
Ist halt nicht überall Konform abhängig von der Developer Sprache halt.

Ich habe es nun mit IntPtr gemacht.


Zitat:
PS: Keine weitere Störungen meinerseits auf diesem Kanal ... over and out
Na da kann man nichts machen.. Ist halt so wie es ist.

gruss
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#16

AW: is a 'field' but is used like a 'type'

  Alt 11. Apr 2015, 01:15
C-Sprachen sind case-sensitive, d.h. HTAGS != HTags
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: is a 'field' but is used like a 'type'

  Alt 11. Apr 2015, 01:42
C-Sprachen sind case-sensitive, d.h. HTAGS != HTags
Ist mir klar
Hat aber nichts mit meinem Problem zu tun.

gruss
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: is a 'field' but is used like a 'type'

  Alt 11. Apr 2015, 12:22
Was Sir Rufo meinte ist, dass du eine Variable (bzw. ein Feld) in der Klasse vom Typ IntPtr mit dem Namen HTags erstellt.
Die Funktion sollte aber den Typ HTAGS zurückgeben. Deshalb wohl auch die Anmerkung von Sailor.
C-Sprachen sind case-sensitive, d.h. HTAGS != HTags
Wenn du deine Funktion so deklarieren würdest, wäre es was anderes und würde vielleicht auch funktionieren.

Code:
public static extern HTAGS TagsLibrary_Create();
Man beachte das groß geschriebene HTAGS. Aber schlag mich bitte nicht, wenn das nicht so funktioniert wie gewünscht. Bin auch kein C#/C++ Profi. Habs mir nur mal für ein kleineres Projekt angesehen.

Dein HTAGS Typ solltest du dir dann so einbauen können.

Code:
typedef IntPtr HTAGS


Stimmt, in C# gibt es ja gar kein Typdef

Vielleicht hilft es ja trotzdem weiter.

Geändert von Aviator (11. Apr 2015 um 12:24 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: is a 'field' but is used like a 'type'

  Alt 11. Apr 2015, 20:49
Zitat:
Die Funktion sollte aber den Typ HTAGS zurückgeben. Deshalb wohl auch die Anmerkung von Sailor.
NÖ.
Sie muss identisch mit dem Definierten Name sein. (Groß und Kleinschreibung beachtend)
Wenn als
Code:
IntPtr HtAgS = IntPtr.Zero;
definiert muss sie auch in folge so benannt werden.
Aber das merkt der Compiler da muss man sich selbst nicht drum kümmern.

Zitat:
Aber schlag mich bitte nicht, wenn das nicht so funktioniert wie gewünscht.
Warum sollte ich

Code:
public static extern HTAGS TagsLibrary_Create();
Genau so hab ich es gemacht.
Code:
IntPtr HTags = IntPtr.Zero;
public static extern HTags TagsLibrary_Create();
HTags = HTags
HTAGS = HTAGS

HTAGS = HTags geht nicht.. Was ich aber schon sagte (Ist mir bekannt)


gruss

Geändert von EWeiss (11. Apr 2015 um 22:02 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: is a 'field' but is used like a 'type'

  Alt 11. Apr 2015, 22:00
Letztendlich habe ich die Lösung dann doch selbst noch erarbeitet (nicht aus dem Internet)

Code:
  [Serializable, StructLayout(LayoutKind.Sequential)]
  public struct HTAGS
  {
    private IntPtr _htags;

    public IntPtr HTags
    {

      get { return _htags; }

      set { _htags = value; }

    }

  }
Jetzt geht das!
Code:
    //TagsLibrary_Create
    [DllImport("TagsLib.dll", EntryPoint = "TagsLibrary_Create", CharSet = CharSet.Auto)]
    public static extern HTAGS TagsLibrary_Create();
und das! (Darum ging es mir.. Die API gleich zu halten mit den Aufruf Konventionen.
Code:
    //TagsLibrary_Free
    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("TagsLib.dll", EntryPoint = "TagsLibrary_Free", CharSet = CharSet.Auto)]
    public static extern bool TagsLibrary_Free(HTAGS Tags);
in der Anwendung wird dann einmalig HTAGS definiert.
Code:
Dim hTags As HTAGS
Code:
hTags = TagsLib.TagsLibrary_Create()

If TagsLib.TagsLibrary_Free(hTags) Then
    MessageBox.Show("Is Free")
End If
In Delphi ist der Aufruf wie folgt!
t_TagsLibrary_Free = function (Tags: HTags): LongBool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};

Und genau diese Art des Aufrufs wollte ich beibehalten Tags: HTags
Deshalb schreibe ich die Lib (Wrapper in C#) damit Developer mit VB_NET sich mit der API nicht rumquälen müssen.


gruss

Geändert von EWeiss (12. Apr 2015 um 00:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 +1. Es ist jetzt 08:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz