AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Auf Dynamisches array zugreifen ohne AV?
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Dynamisches array zugreifen ohne AV?

Ein Thema von Pseudemys Nelsoni · begonnen am 21. Apr 2005 · letzter Beitrag vom 7. Jun 2005
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Auf Dynamisches array zugreifen ohne AV?

  Alt 21. Apr 2005, 03:25
Moin,

ich habe ein dynamisches Array, von diesem möchte ich 3 Parameter an eine Prozedur übergeben, das Problem ist, das alle diese 3 optional sind, d.h das Array kann 1, 2 oder auch 3 bzw gar keine Parameter haben. Ich übergebe der Prozedur das ganze so:

proc(sArray[0], sArray[1], sArray[2]); Natürlich kann es ja nun aber sein das mein Array gar keine 3 Felder hat und es kommt zu einer AV.
Was könnte ich da nun tun ausser jeden Parameter auf Existenz prüfen?
Am liebsten hätte ich es so, das da wo ein Feld nicht existiert einfach ein leerer String zurückgegeben wird.

Statische Arrays kommen nicht in Frage, da ich mit Length noch prüfen muss wieviele Felder wirklich existieren.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Auf Dynamisches array zugreifen ohne AV?

  Alt 21. Apr 2005, 03:31
Delphi-Quellcode:
type
  TMyDynArray = array of Integer;

procedure Foo(Param: TMyDynArray);
var
  len: Cardinal;
begin
  len := length(Param);
  case len of
    1:;
    2:;
    3:;
  end;
end;
Sprich: Übergib das Array als ganzes und werte es in der Prozedur aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Auf Dynamisches array zugreifen ohne AV?

  Alt 21. Apr 2005, 03:49
Danke Luckie, gute Idee.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Auf Dynamisches array zugreifen ohne AV?

  Alt 7. Jun 2005, 11:29
Moin,

so ganz klappt das doch nicht, also ich werte alle Commands bei einer Socketverbindung aus. Das heisst das ganze sieht ca so aus:

Delphi-Quellcode:
if Command = 'PARTthen
begin
  if Assigned(FOnPart) then
    FOnPart(Self, Param[0], Param[1], Param[2]);
end else
if Command = 'QUITthen
begin
  if Assigned(FOnQuit) then
    FOnQuit(Self, Param[2], Param[5], Param[1]);
end else
if Command = 'PRIVMSGthen
begin
  if Assigned(FOnMessage) then
    FOnMessage(Self, Param[2], Param[3], Param[4]);
end;
Das geht endlos so weiter. Ich denke nicht das es schoen wäre dort in jedem Command eine Case-Anweisung zu haben. Ich möchte einfach nur das keine AV auftritt wenn ich auf ein element zugreife das nicht existiert, sondern einfach das stattdessen ein leerer string übergeben wird (wie das bei konstanten arrays der fall ist). Einige Parameter sind optional, das heisst, bei z.b "PART" ist "Param[2]" nicht unbedingt vorhanden...

Gibts da sonst noch ne Lösung?
Mario
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

Re: Auf Dynamisches array zugreifen ohne AV?

  Alt 7. Jun 2005, 12:04
Du kann ste maximalen wert mit High(array) herauskriegen dann must du nur noch gucken ob daten da sind
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Auf Dynamisches array zugreifen ohne AV?

  Alt 7. Jun 2005, 12:16
moin franktron, ich kenne high() zwar, da müsste ich dann aber in jedem event abfragen und mit case dementsprechend reagieren, das würde den code aber nicht schoen machen
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Auf Dynamisches array zugreifen ohne AV?

  Alt 7. Jun 2005, 12:27
Hab schon,

hab einfach eine funktion in die prozedur eingebaut:

Delphi-Quellcode:
  function Param(const Params: array of string; Idx: Integer): string;
begin
  if (Idx > -1) and (Idx <= High(Params)) then
    Result := Params[Idx]
  else Result := '';
end;

mfg, und danke nochmal.
Mario
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:26 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