AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Pointer in Strukturen

Ein Thema von RPRI · begonnen am 24. Jan 2011 · letzter Beitrag vom 24. Jan 2011
Antwort Antwort
RPRI

Registriert seit: 11. Feb 2003
Ort: A-6710 Nenzing
24 Beiträge
 
#1

Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 09:51
Delphi-Version: 5
Hallo zusammen,

ich habe ein Problem mit einem Pointer in einer Struktur.
Da ich nicht so ganz fit bin mit Pointern, hoffe ich auf Eure Hilfe.

Muß Funktionen aus einer C.dll ausführen.

Hier der Code:
Delphi-Quellcode:
    {* @brief Holds the name of a module}
    MODULE_NAME = RECORD
       name : ARRAY[0..M_MODNAMELEN_A] OF CHAR;    // Name of the module.
    END;
    {* @brief Structure for a list of module names.}
    MODULE_LIST = RECORD
       countModules   : UINT16;             // Count of module names.
       names      : ^MODULE_NAME;          // Array of module names.
    END;
    PMODULE_LIST = ^MODULE_LIST;


FUNCTION TARGET_GetModules ( targetHandle : M1C_H_TARGET; moduleCount : UINT16; moduleList : PMODULE_LIST ) : SINT32; cdecl; external 'm1com.dll';


#################################
Hier die Verwendung:
VAR
  countModules : UINT16;
  RetCode : SINT32;
  i : UINT16;
  modList : MODULE_LIST;
  names : ARRAY[0..MaxSwModules] OF MODULE_NAME;

BEGIN
  // Set the ModuleList
  modList.names := @names;

  //asking the count of modules on the controller
  RetCode := TARGET_GetCountModules ( targetHandle, @countModules );
  IF ( RetCode = M1C_OK ) THEN RetCode := TARGET_GetModules ( targetHandle, countModules, @modList );
    IF ( RetCode = M1C_OK ) THEN
      BEGIN
        // clear the list
        FOR i := 0 TO MaxSwModules DO SWModList[i] := '';
        // filling the List
        FOR i := 0 TO ( countModules - 1 ) DO
          SWModList[i] := modList.names[i].name; <- hier mosert er beim compilieren.
.......
Danke schon mal für Eure Hilfe!

Gruß
Rainer
Holm und Rippe,
bis zur Kippe !

Rainer

http://members.aon.at/p-51
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 10:03
modList.names.name[i] warum eigentlich
names : ^MODULE_NAME;
statt
names : MODULE_NAME;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 10:05
modList.names.name[i] warum eigentlich
names : ^MODULE_NAME;
statt
names : MODULE_NAME;
Weils ja ne Liste von MODULE_NAME sein soll.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
RPRI

Registriert seit: 11. Feb 2003
Ort: A-6710 Nenzing
24 Beiträge
 
#4

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 10:13
Hallo,

habe das jetzt so abgeändert.

  names : ARRAY[0..MaxSwModules] OF ^MODULE_NAME;
Hier bekomme ich aber immer die Meldung Array-Typ erforderlich
SWModList[i] := modList.names[i].name;
Muß auch mit StrCopy arbeiten, da das eine ein C-String ist und das andere ein Pascal String.
StrCopy ( @SWModList[i], modList.names[i].name ); Dies mag der Compiler aber auch nicht.


Danke für Eure Hilfe
Rainer
Holm und Rippe,
bis zur Kippe !

Rainer

http://members.aon.at/p-51

Geändert von RPRI (24. Jan 2011 um 10:28 Uhr)
  Mit Zitat antworten Zitat
RPRI

Registriert seit: 11. Feb 2003
Ort: A-6710 Nenzing
24 Beiträge
 
#5

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 10:23
Hallo,

wobei hier weise ich ja die Adresse des Array's zu.
modList.names := @names;
Danke und Gruß
Rainer
Holm und Rippe,
bis zur Kippe !

Rainer

http://members.aon.at/p-51
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 10:36
Du hast modList als Record mit einem Zeiger(names) auf den Record MODULE_NAME gelegt, erst dieser Record enthält überhaupt ein Array....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 10:52
Hallo,

Also das hier ist falsch:

names : ARRAY[0..MaxSwModules] OF ^MODULE_NAME;
Das muss
names : ARRAY[0..MaxSwModules] OF MODULE_NAME;
heißen.

modList.names := @names;
könnte richtig sein. Ich schreibe es aber lieber so:

modList.names := @names[0];
Was ich bei sowas auch empfehlen würde wäre packed record statt record zu benutzen.

Ansonsten kann ich aus deinem Post irgendwie nicht so richtig rauslesen wo genau das Problem ist


@bumi:

Du hast modList als Record mit einem Zeiger(names) auf den Record MODULE_NAME gelegt, erst dieser Record enthält überhaupt ein Array....
modList.names ist auch quasi ein Array. modList.names zeigt auf das erste Element einer Liste von MODULE_NAMEs.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (24. Jan 2011 um 10:54 Uhr)
  Mit Zitat antworten Zitat
RPRI

Registriert seit: 11. Feb 2003
Ort: A-6710 Nenzing
24 Beiträge
 
#8

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 11:13
Hallo Michael,

also das Problem ist, wie komme ich an die Daten die in der modList stecken, dran?

Delphi-Quellcode:
FOR i := 0 TO ( countModules - 1 ) DO
  SWModList[i] := modList.names[i].name;
Wenn ich so darauf zugreifen will, bekomme ich immer die Meldung daß ein ARRAY-Typ erforderlich ist.
Wenn ich das [i] weglasse kann ich das Programm kompilieren, es wird dann aber immer der selbe Modulname zurückgegeben.


Hier die Deklaration von SwModuleList.
SwModuleList = ARRAY[0..MaxSwModules] OF STRING[12]; Danke für Eure Hilfe !!!
Holm und Rippe,
bis zur Kippe !

Rainer

http://members.aon.at/p-51
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 11:16
Hallo,

Du kommst (z.B.) so an die Daten:

Delphi-Quellcode:
FOR i := 0 to (countModules - 1) do
begin
  SWModList[i] := modList.names^.name;
  inc(modList.names);
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
RPRI

Registriert seit: 11. Feb 2003
Ort: A-6710 Nenzing
24 Beiträge
 
#10

AW: Problem mit Pointer in Strukturen

  Alt 24. Jan 2011, 14:06
Hallo Michael,

danke für Deine Hilfe.
Diese Problem konnte ich jetzt lösen.

Schöne Grüße aus Österreich
Rainer
Holm und Rippe,
bis zur Kippe !

Rainer

http://members.aon.at/p-51
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:37 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