AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi D2009: Inkompatible Typen Array und xxx
Thema durchsuchen
Ansicht
Themen-Optionen

D2009: Inkompatible Typen Array und xxx

Ein Thema von Hedge · begonnen am 21. Okt 2009 · letzter Beitrag vom 21. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#1

D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 04:06
Ich rufe auf:

LinkInfo.FullPathAndNameOfLinkFile:= blablablub Das Attribut sieht so aus:

FullPathAndNameOfLinkFile: array[0..MAX_PATH] of Char; Egal mit was ich ihn füttere. Es kommt immer eine Inkompatibilitätsmeldung.
Grundlegend habe ich einen String den ich da reinschreiben will.

EDIT: Selbst wenn ich ihm ein a: array[0..1213] of Char; überreiche mault er rum (dann jedoch nur noch "Inkompatible typen")
So sieht der Rest aus:

Delphi-Quellcode:
      copymemory(@a[low(a)],@datei[1],sizeof(a));
      LinkInfo.FullPathAndNameOfLinkFile := a;
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 05:48
Guten Morgen,

LinkInfo.FullPathAndNameOfLinkFile:= 'blablablub' Soweit ich das weiß, sind 0 basierende Arrays zuweisungskompatibel zu (Ansi)Strings.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.852 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 07:09
Nur zu ShortStrings
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.877 Beiträge
 
Delphi 12 Athens
 
#4

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 07:56
MAX_PATH <> 1213
das konnte ja nicht gehn

FullPathAndNameOfLinkFile := '123123';
geht, da der Compiler die '123123' nicht als String-Konstante, sondern als Array ablegt und dieses dann direkt reinkopieren kann

FullPathAndNameOfLinkFile := S;
geht nicht

S := FullPathAndNameOfLinkFile;
das geht aber , da hier Delphi es sozusagen als PChar ansieht (LStrFromArray)
S := PChar(@FullPathAndNameOfLinkFile)
also als PChar mit abschließender #0 und/oder einer Maximallänge von Length(FullPathAndNameOfLinkFile)

Zitat:
FullPathAndNameOfLinkFile: array[0..MAX_PATH] of Char;
kannst du an der Definition etwas ändern, oder ist sie vorgegeben?

sonst könnte man dieses Array in einem Record verpacken und einen Setter/Getter als StringTypen dafür definieren ... sieht zwar blöder aus, aber läßt sich dann leichter im restlichen Code verwenden


Von Delphi selber gibt es keine Default-Funktionen, welche zum Befüllen oder Vergleichen des Arrays genutzt werden, da es nicht weiß, wie du den Inhalt interpretierst.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#5

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 11:27
Kann die Definition nach Belieben ändern.
z.B. MaxPath durch eine Zahl ersetzen, aber das hat es auch nicht gebracht.

Edit: Hab das komische Array einfach als PChar definiert, jetzt funzt es.

Habe jetzt an einer anderen Stelle das Problem dass ich PWideChar nach String umwandeln muss. Ideen?
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.877 Beiträge
 
Delphi 12 Athens
 
#6

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 12:03
Zitat von Hedge:
z.B. MaxPath durch eine Zahl ersetzen, aber das hat es auch nicht gebracht.
MAX_PATH ist eine Konstante (260) und nur weil man da eine Wert (die Größe) ändert, ändert sich nichts am Typ.

Nja, ich meinte ob du den Typen einfach verändern kannst
oder ob er genau so, als Array, definiert sein muß.


Ich hatte mir ein einem Projekt mal so beholfen
Delphi-Quellcode:
TWideString32 = packed Record
  Data: Array[1..32] of WideChar;
  Class Operator Implicit(Const Value: AnsiString): TWideString32;
  Class Operator Implicit(Const Value: WideString): TWideString32;
  Class Operator Implicit(Const Value: TWideString32): WideString;
  Class Operator Equal (Const A: TWideString32; Const B: WideString): Boolean;
  Class Operator NotEqual(Const A: TWideString32; Const B: WideString): Boolean;
End;
dieses entspricht vom Speicher her diesem
TWideString32 = Array[1..32] of WideChar; der Typ/Record kann jetzt (so wie er hier ist)
Delphi-Quellcode:
Rec := S {AnsiString};
Rec := S {WideString/UnicodeString};
S {WideString} := Rec; // und indirekt auch AnsiString
if Rec = S {WideString} then
if Rec <> S {WideString} then
und intern wird dann via MoveMemory kopiert.


[add]
ahhh, ich jetzt hab ich's doch gefunden ... wußte doch, daß es irgendwo mal was gab
[add2]
und och noch den Link vergessen
http://www.delphipraxis.net/internal...rator+implicit
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#7

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 13:14
Danke für die ausführliche Hilfe.
Konnte es wie gesagt lösen indem ich ne PChar draus gemacht habe.

Muss jetzt nur noch ein PWideChar in einen String umwandeln. Ideen?
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.877 Beiträge
 
Delphi 12 Athens
 
#8

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 13:31
einfach zuweisen ... die Compilermagic macht den Rest

Delphi-Quellcode:
var S: String; // oder WideString, AnsiString ...
  P: PChar; // oder PWideChar, PAnsiChar

S := P;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#9

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 13:39
Die Compilermagic ist stark, aber wenn man 2 Strings (PChar und PWideChar) verbinden will löppt das nicht so:

s=string
FullPathAndNameOfWorkingDirectroy=PChar
FindData.cFileName=PWideChar

[delphi}s :=FullPathAndNameOfWorkingDirectroy + FindData.cFileName;[/delphi]

"Operator is auf diesen Operandentyp nicht anwendbar"
٩๏̯͡๏)۶
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: D2009: Inkompatible Typen Array und xxx

  Alt 21. Okt 2009, 13:42
s:string
FullPathAndNameOfWorkingDirectroy:PChar
FindData.cFileName:PWideChar

vielleicht geht es ja so:

Delphi-Quellcode:
s:= FindData.cFileName;
s:= FullPathAndNameOfWorkingDirectroy +s;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:30 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