![]() |
Array eines Array - Aber wie???
Hallo zusammen!
Habe mehrere Arrays mit unterschiedlicher Länge! Diese möchte ich in einem neuen Array zusammenfassen! Wie soll ich das angehen? Habs bereits folgendermassen versucht: arrayVonArray: array[0..2] of array = (blabla1, blabla2, blabla3) Klappt aber nicht! Kann mir da jemand bitte weiterhelfen? Vielen Dank schon mal! |
Re: Array eines Array - Aber wie???
Delphi-Quellcode:
type
TDeinType = (blabla1, blabla2, blabla3); arrayVonArray: array[0..2] of array of TDeinType; |
Re: Array eines Array - Aber wie???
Danke für die rasche Antwort!
Leider klappts noch nicht so ganz :cry: Wo bzw. wie kann ich meine Arrays befüllen? Wenn ich die Daten in die Arrays schreiben möchte kommt folgender Fehler: Bezeichner redefiniert: 'blabla1' ... |
Re: Array eines Array - Aber wie???
Das blabla eins war ja nur ein Platzhalter für das, was du in deiner Aufzählung haben willst.
|
Re: Array eines Array - Aber wie???
:gruebel: Jetzt versteh ich gar nichts mehr!
Nochmal kurz die Situation: - ich habe drei Arrays die mit unterschiedlich vielen Werten gefüllt sind - jetzt möchte ich einen Array bilden der die drei oben genannten enthält, sodass ich per Index auf die Arrays zugreifen kann Ziel (Bsp.): wert := ArrayVonArrays[0][1]; => gibt mir den 2.Wert des 1.Array Entweder ich steh total auf dem Schlauch oder ....? |
Re: Array eines Array - Aber wie???
Zitat:
|
Re: Array eines Array - Aber wie???
Ja, alle nutzen den gleichen Typ = WideChar
|
Re: Array eines Array - Aber wie???
also dann so:
Delphi-Quellcode:
Type
TDeinGrossesArray = array[0..1] of array of WideChar; var DeineDickeVariable: TDeinGrossesArray; |
Re: Array eines Array - Aber wie???
jetzt bekomm ich ne Fehlermeldung beim befüllen von 'DeineDickeVariable'!
Inkompatible Typen: 'Array' und 'dynamic Array' |
Re: Array eines Array - Aber wie???
Zeig doch mal ein wenig Quellcode.
|
Re: Array eines Array - Aber wie???
Delphi-Quellcode:
type
TSonderzeichen = array[0..2] of array of WideChar; const anzahlSprachen = 3; tuerkischesAlphabet: array[0..9] of WideChar = (#226, #199, #231, #286, #287, #304, #305, #238, #350, #351); kyrillischesAlphabet: array[0..63] of WideChar =(#1040, #1041, #1042, #1043, #1044, #1045, #1046, #1047, #1048, #1049, #1050, #1051, #1052, #1053, #1054, #1055, #1056, #1057, #1058, #1059, #1060, #1061, #1062, #1063, #1064, #1065, #1066, #1067, #1068, #1069, #1070, #1071, #1072, #1073, #1074, #1075, #1076, #1077, #1078, #1079, #1080, #1081, #1082, #1083, #1084, #1085, #1086, #1087, #1088, #1089, #1090, #1091, #1092, #1063, #1094, #1095, #1096, #1097, #1098, #1099, #1100, #1101, #1102, #1103); albanischesAlphabet: array[0..anzahlSprachen] of WideChar =(#199, #231, #203, #235); sonderzeichenArray: TSonderzeichen = (tuerkischesAlphabet, kyrillischesAlphabet, albanischesAlphabet); |
Re: Array eines Array - Aber wie???
Wäre das über einen Record nicht einfacher zu lösen? Ansonsten fällt mir spontan nur ein Array of Pointer ein, da die Längen unterschiedlich sind.
|
Re: Array eines Array - Aber wie???
Das ganze geht entweder mit einem Record, wie bereits gesagt, oder aber mit dynamischen Arrays, die du dann aber auch erst zur Laufzeit zuweisen darfst.
|
Re: Array eines Array - Aber wie???
Wie würde das ganze dann mit einem Array of Pointer aussehen?
|
Re: Array eines Array - Aber wie???
Ich hoffe, ich habe keine groben Schnitzer drin:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type PtuerkischesAlphabet = ^TtuerkischesAlphabet; TtuerkischesAlphabet = array[0..9] of WideChar; PkyrillischesAlphabet = ^TkyrillischesAlphabet; TkyrillischesAlphabet = array[0..63] of WideChar; PalbanischesAlphabet = ^TalbanischesAlphabet; TalbanischesAlphabet = array[0..3] of WideChar; TSonderzeichen = array[0..2] of Pointer; const tuerkischesAlphabet: TtuerkischesAlphabet = (#226, #199, #231, #286, #287, #304, #305, #238, #350, #351); kyrillischesAlphabet: TkyrillischesAlphabet =(#1040, #1041, #1042, #1043, #1044, #1045, #1046, #1047, #1048, #1049, #1050, #1051, #1052, #1053, #1054, #1055, #1056, #1057, #1058, #1059, #1060, #1061, #1062, #1063, #1064, #1065, #1066, #1067, #1068, #1069, #1070, #1071, #1072, #1073, #1074, #1075, #1076, #1077, #1078, #1079, #1080, #1081, #1082, #1083, #1084, #1085, #1086, #1087, #1088, #1089, #1090, #1091, #1092, #1063, #1094, #1095, #1096, #1097, #1098, #1099, #1100, #1101, #1102, #1103); albanischesAlphabet: TalbanischesAlphabet =(#199, #231, #203, #235); type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } Sonderzeichen: TSonderzeichen; p1,p2,p3: Pointer; function GetCharAtArrayPos(const MainIndex,ArrIndex: integer): WideChar; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin GetMem(p1,SizeOf(tuerkischesAlphabet)); PtuerkischesAlphabet(p1)^ := tuerkischesAlphabet; Sonderzeichen[0] := p1; GetMem(p2,SizeOf(kyrillischesAlphabet)); PkyrillischesAlphabet(p2)^ := kyrillischesAlphabet; Sonderzeichen[1] := p2; GetMem(p3,SizeOf(albanischesAlphabet)); PalbanischesAlphabet(p3)^ := albanischesAlphabet; Sonderzeichen[2] := p3; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeMem(p1,SizeOf(PtuerkischesAlphabet(p1)^)); FreeMem(p2,SizeOf(PkyrillischesAlphabet(p2)^)); FreeMem(p3,SizeOf(PalbanischesAlphabet(p3)^)); end; function TForm1.GetCharAtArrayPos(const MainIndex,ArrIndex: integer): WideChar; procedure ShowError(const Msg: string); begin raise Exception.Create(Msg); exit; end; begin Result := #0; case MainIndex of 0: if ArrIndex in [0..9] then Result := PtuerkischesAlphabet(Sonderzeichen[MainIndex])^[ArrIndex] else ShowError('ArrIndex out of bounds'); 1: if ArrIndex in [0..63] then Result := PkyrillischesAlphabet(Sonderzeichen[MainIndex])^[ArrIndex] else ShowError('ArrIndex out of bounds'); 2: if ArrIndex in [0..3] then Result := PalbanischesAlphabet(Sonderzeichen[MainIndex])^[ArrIndex] else ShowError('ArrIndex out of bounds'); else ShowError('MainIndex out of bounds'); end; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(Format('%d',[Ord(GetCharAtArrayPos(2,3))])); end; end. |
Re: Array eines Array - Aber wie???
:shock: :shock: :shock:
Vielen Dank für deine Ausführungen! Werds mal so versuchen! |
Re: Array eines Array - Aber wie???
@DeddyH: Sorry, aber: lol?
Wenn du sowieso ein Case benutzt, kannst du doch direkt auf die drei Ausgangsarrays zugreifen, wozu dann das Pointergefummele? Die (afaik) kürzeste Lösung dürfte folgende sein:
Delphi-Quellcode:
type
TSonderzeichen = array[0..2] of WideString; //! const anzahlSprachen = 3; tuerkischesAlphabet: array[0..9] of WideChar = (#226, #199, #231, #286, #287, #304, #305, #238, #350, #351); [...] sonderzeichenArray[0] := tuerkischesAlphabet; |
Re: Array eines Array - Aber wie???
Vielen Dank für eure Hilfen!
Habs jetzt hinbekommen! Werd euch weiterempfehlen :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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