![]() |
verkettungsproblem
hallo!
:) bin neu hier, also erst mal hallo hab aber auch gleich ne frage... versuche eine record variable mit einem normalen string zu verketten... ist das überhaupt möglich?gibts da vieleicht ne funktion für?
Delphi-Quellcode:
[Fehler] main.pas(118): Inkompatible Typen: 'String' und 'recordvariable'
vielen dank schon mal |
Re: verkettungsproblem
Moin Florian,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Du solltest mal die Deklarationen zeigen, und dann auch mal kommentieren, was Du vorhast, denn so kann man nur sagen: Wenn die Typen nicht zueinander passen kann man sie auch nicht verknüpfen. Vielleicht brauchst Du ja nur einen Typecast. |
Re: verkettungsproblem
hi!
danke danke :P Zitat:
also... ich habe einen record TFahrzeug und davon eine variable Fahrzeug abgeleitet desweitern
Code:
list :array[0..8] of string = ('Hersteller', 'Typ', 'Baujahr', 'Farbe',
'Türzahl', 'Motor', 'Hubraum', 'Leistung', 'Preis'); und hier wo ich hänge...
Code:
for i := 0 to 8 do
begin SG_AUSGABE.Cells[i,puffer] := Fahrzeug + list[i]; end; mfg florian |
Re: verkettungsproblem
wenn ich richtig rate... ist 'Fahrzeug' dein Record TFahrzeug.... wäre auch gut wenn du diese hier mal zeigst.
wenn sie so aufgebaut ist wie dein string array und ich erahne was du suchst:
Delphi-Quellcode:
war nur soeine idee... paresy
for i:=0 to 8 do
case i of 0: SG_AUSGABE.Cells[i,puffer] := list[i] + Fahrzeug.Hersteller; 1: SG_AUSGABE.Cells[i,puffer] := list[i] + Fahrzeug.Typ; ... end; |
Re: verkettungsproblem
hoi!
zum verständniss diese liste
Code:
sollte eigentlich zuerst nur dafür da sein um die stringgridbeschriftung nicht von hand zu fuss zu machen sondern mithilfe einer schleife
list :array[0..8] of string = ('Hersteller', 'Typ', 'Baujahr', 'Farbe',
'Türzahl', 'Motor', 'Hubraum', 'Leistung', 'Preis');
Code:
dies sind also die überschriften und werden so übernommen
for i := 0 to 8 do
begin SG_AUSGABE.Cells[i,0] := list[i]; end; nun sieht mein record so aus:
Code:
type
TFahrzeug = record Hersteller : string; Typ : string; Baujahr : integer; Farbe : string; Tuerzahl : integer; Motor : string; Hubraum : real; Leistung : real; Preis : real; end; und so gehts weiter
Code:
with Fahrzeug do
begin Hersteller := ED_HER.Text; Typ := ED_TYP.Text; Baujahr := StrToInt(ED_BAU.Text); Farbe := ED_FARB.Text; Tuerzahl := StrToInt(ED_TUER.Text); Motor := ED_MOTOR.Text; Hubraum := StrToFloat(ED_HUB.Text); Leistung := StrToFloat(ED_LEISTUNG.Text); Preis := StrToFloat(ED_PREIS.Text); da die namen gleich sind (record und liste) wollte ich mir ersparen 9 mal zu schreiben
Code:
usw.
SG_AUSGABE.Cells[0,puffer] := Fahrzueg.Hersteller;
SG_AUSGABE.Cells[1,puffer] := Fahrzueg.Typ; sondern wollte es mit hilfe einer stringverknüpfung lösen
Code:
dadurch ist auch der erwähnte fehler verursacht worden der mich zu dem posting gebracht hat
for i := 0 to 8 do
begin SG_AUSGABE.Cells[i,puffer] := Fahrzeug + list[i]; end; habe jetzt mit hilfe von deiner version paresy folgendes hinbekommen:
Code:
funtzt auch ist aber vom schreibaufwand eigentlich genauso wie wenn ich die cells einzeln fülle würde
for i := 0 to 8 do
begin case i of 0: SG_AUSGABE.Cells[i,puffer] := Hersteller; 1: SG_AUSGABE.Cells[i,puffer] := Typ; 2: SG_AUSGABE.Cells[i,puffer] := IntToStr(Baujahr); 3: SG_AUSGABE.Cells[i,puffer] := Farbe; 4: SG_AUSGABE.Cells[i,puffer] := IntToStr(Tuerzahl); 5: SG_AUSGABE.Cells[i,puffer] := Motor; 6: SG_AUSGABE.Cells[i,puffer] := FloatToStr(Hubraum); 7: SG_AUSGABE.Cells[i,puffer] := FloatToStr(Leistung); 8: SG_AUSGABE.Cells[i,puffer] := FloatToStr(Preis); end; hoffe das wa jetzt relativ verständlich :pale: mfg |
Re: verkettungsproblem
Moin Florian,
geht aber nicht anders, ausser Du nimmst statt Feldnamen, was meiner Meinung nach prinzipiell vorzuziehen ist, ein array of string, wie bei der Konstanten. Dann müssten natürlich auch die Float-Werte schon als string gespeichert werden. Typecast meint übrigens Typumwandlung. Z.B. wird einer Ereignisprozedur ja ein Sender vom Typ TObject übergeben. TObject ist aber die Basis für alle Objekte. Willst Du nun, z.B., in einer OnClick Routine eines Button (TButton) an Daten des Button ran, die in TObject nicht deklariert sind, musst Du den Typ umwandeln.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin // erst einmal prüfen, ob es sich überhaupt um einen TButton handelt if sender is TButton then begin ShowMessage((Sender as TButton).Caption); // Typecast von TObject auf TButton end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz