![]() |
Array redimensionieren
Delphi.
Delphi-Quellcode:
wie bekomme ich Setlength nach c++ portiert ?
// Redim Array
if (Item + ID_MAIN) <> FlagFound then begin if gP.ShortCutfound > 0 then NewLen := High(gS) + gP.ShortCutfound else NewLen := High(gS) + 1; Setlength(gS, NewLen); ShortCut.CreateRecycleBin(MainHandle, NewLen); for x := ID_FIRST to NewLen do begin gS[x] := gS[x + 1]; if x = (NewLen - gP.ShortCutfound) then begin for X1 := (NewLen - 1) downto (NewLen - gP.ShortCutfound) do Delete(gS, X1); end; end; FlagFound := High(gS); end;
Delphi-Quellcode:
High(gS)
gibt es auch nicht. Hmmm.... gruss |
AW: Array redimensionieren
C oder C++?
In C: realloc(void *ptr, size_t size). Ein Äquivalent zu high(...) gibt es glaube ich nicht. Hier musst du selbst einen Zähler mitführen. In C++: std::vector<> verwenden. High(...) entspricht der Methode size()-1. SetLength(...) entspricht der Methode resize(...). Wenn du einfach nur ein Element am Ende anhängen willst, dann kannst du dir das manuelle Vergrößern aber auch sparen und einfach push_back(...) verwenden. |
AW: Array redimensionieren
High(gS) im Delphi ist einfach nur Length-1, da dort die Arrays bei 0 beginnen.
Das ist in C nicht anders. Beginnt das Array nicht bei 0, dann ist es eben Length+StartIndex-1 |
AW: Array redimensionieren
Zitat:
Zitat:
Da es sich um ein Statisches Array mit fester länge handelt (zu spät gesehen) kann ich mir das mit SetLength sparen. Hab es jetzt so gemacht.
Code:
Die Icons die nicht in der Configurations Datei stehen muss ich bei der Berechnung aus dem Array ausschließen.
if (gP.shortcutfound > 0) { NewLen = nCount + gP.shortcutfound; }
else { NewLen = nCount + 1; } CreateRecycleBin(gP.hMain, NewLen); for (X = ID_FIRST; X <= NewLen; X++) { gS[X] = gS[X + 1]; if (X == (NewLen - gP.shortcutfound)) { gS[nCount] = gS[NewLen]; ZeroMemory(&gS[NewLen], sizeof(SpriteArray)); } } FlagFound = nCount; Damit sich nach dem speichern und neu laden das Papierkorb Icon auf seiner Position in der Bar nicht verändert. gruss |
AW: Array redimensionieren
Zitat:
Aber egal ;) gruss |
AW: Array redimensionieren
Zitat:
|
AW: Array redimensionieren
Zitat:
Kein Problem. so wie ich weiß ist c <> makefile und C++ <> VS es ist std::vector. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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