AGB  ·  Datenschutz  ·  Impressum  







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

Array eines Array - Aber wie???

Ein Thema von TylerDurden · begonnen am 15. Aug 2007 · letzter Beitrag vom 16. Aug 2007
Antwort Antwort
Seite 2 von 2     12   
TylerDurden

Registriert seit: 11. Okt 2006
Ort: Bretten
22 Beiträge
 
#11

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 12:15
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);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#12

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 12:22
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 12:52
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
TylerDurden

Registriert seit: 11. Okt 2006
Ort: Bretten
22 Beiträge
 
#14

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 15:00
Wie würde das ganze dann mit einem Array of Pointer aussehen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#15

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 16:26
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TylerDurden

Registriert seit: 11. Okt 2006
Ort: Bretten
22 Beiträge
 
#16

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 16:33

Vielen Dank für deine Ausführungen!

Werds mal so versuchen!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#17

Re: Array eines Array - Aber wie???

  Alt 15. Aug 2007, 17:19
@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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
TylerDurden

Registriert seit: 11. Okt 2006
Ort: Bretten
22 Beiträge
 
#18

Re: Array eines Array - Aber wie???

  Alt 16. Aug 2007, 08:31
Vielen Dank für eure Hilfen!
Habs jetzt hinbekommen!

Werd euch weiterempfehlen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:38 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