Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Probleme mit Constant Strings (https://www.delphipraxis.net/201180-probleme-mit-constant-strings.html)

FediDelPr 29. Jun 2019 22:40

Probleme mit Constant Strings
 
Hallo

ich verwende Stringkonstanten in einem Array.

Kann mir jemand auf die Sprünge helfen wie ich
folgende Beispiele modifizieren muss um auf die
Strings zugreifen zu können.

Delphi-Quellcode:
TYPE
  TColDef = RECORD
    col: INTEGER;
    descrEXC: STRING;   (* descrEXC in EXCEL *)
    descrDB: STRING;
    activ: BOOLEAN;
    typ: CARDINAL;
  END;

  TRowDef = ARRAY[1..MaxColumns] OF TColDef;

CONST
   KredRowDef: TRowDef =
     ((col: 1; descrEXC: 'ER-Nummer';            descrDB: 'KreditRechnID';
       activ: TRUE; typ: varEmpty),
      (col: 2; descrEXC: 'R-Nummer';             descrDB: 'KreditRechnNr';
       activ: TRUE; typ: varOleStr),
      (col: 3; descrEXC: 'Rechnungsdatum';       descrDB: 'Rechnungsdatum';
   ....


(* FUNKTIONIERT *)
(1)  IF titel = KredRowDef[c].descrEXC THEN   (titel: STRING)

(2)  ShowMessage(titel + ' ' + KredRowDef[c].descrEXC);


(* FUNKTIONIERT NICHT *)
(1)  ShowMessage(KredRowDef[c].descrEXC);

(2)  s := KredRowDef[c].descrEXC;
Ich finde die Beschreibung der verschiedenen Stringtypen nicht sehr klar:

z.B. http://docwiki.embarcadero.com/RADSt...-Typen_(Delphi)

Vielen Dank für Tipps

DieDolly 29. Jun 2019 22:46

AW: Probleme mit Constant Strings
 
Wenn ich mir
Delphi-Quellcode:
showMessage(KredRowDef[1].descrEXC);
ausgeben lasse, sehe ich ER-Nummer.
Delphi 10.3.

FediDelPr 29. Jun 2019 22:57

AW: Probleme mit Constant Strings
 
Genau das würde ich erwarten.
Bei mir kommt aber nur ein String der Länge 0.
Damit wird auch nix angezeigt.

Ich verwende Delphi 10.1 Berlin.

hoika 30. Jun 2019 04:27

AW: Probleme mit Constant Strings
 
Hallo,
welchen Wert hat die Variable c?

FediDelPr 3. Jul 2019 01:22

AW: Probleme mit Constant Strings
 
c beginnt mit 1 und wird hochgezählt bis zur Spalte N.

ConnorMcLeod 3. Jul 2019 08:59

AW: Probleme mit Constant Strings
 
Schätze, das Interessante ist, wie Du Deine diversen Strings definierst/deklarierst.
Das hier funktioniert einwandfrei:

Delphi-Quellcode:
procedure TfrmTesterMain.Button1Click(Sender: TObject);
const
  MaxColumns = 5;

TYPE
  TColDef = RECORD
    col: INTEGER;
    descrEXC: STRING; (* descrEXC in EXCEL *)
    descrDB: STRING;
    activ: BOOLEAN;
    typ: CARDINAL;
  END;

  TRowDef = ARRAY[1..MaxColumns] OF TColDef;

CONST
   KredRowDef: TRowDef =
     (
         (col: 1; descrEXC: 'ER-Nummer'      ; descrDB: 'KreditRechnID' ; activ: TRUE; typ: varEmpty )
       , (col: 2; descrEXC: 'R-Nummer'       ; descrDB: 'KreditRechnNr' ; activ: TRUE; typ: varOleStr)
       , (col: 3; descrEXC: 'Rechnungsdatum' ; descrDB: 'Rechnungsdatum'; activ: TRUE; typ: varEmpty )
       , (col: 4; descrEXC: 'NochaNummer'    ; descrDB: 'NoaNr'        ; activ: TRUE; typ: varOleStr)
       , (col: 5; descrEXC: 'SchoWiedaANummer'; descrDB: 'SwaNr'        ; activ: TRUE; typ: varOleStr)
     );
var
  c: Integer;
  titel: string;
  s: string;
begin
  titel := 'R-Nummer';
  for c := 1 to MaxColumns do begin
    if (titel = KredRowDef[c].descrEXC) then begin
      ShowMessage('[1] ' + titel + ' ' + KredRowDef[c].descrDB);
    end; { if ('R-Nummer' = KredRowDef[c].descrEXC) }
    ShowMessage('[2] ' + KredRowDef[c].descrEXC);
    s := KredRowDef[c].descrEXC;
    ShowMessage('[3] ' + s);
  end; { for c := 1 to MaxColumns do }
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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