Új hozzászólás Aktív témák
-
trisztan94
őstag
válasz
Alexios #5528 üzenetére
Bocsi a megkésett válaszért.
Na, igazából az a helyzet, hogy egy .sqlite fájlt akarok deploy-olni az xap-ban.
Eddig futásidőben hoztam létre az adatbázist, de most megváltozott valami, ezért már külső fájlból kell belerakni. A futásidőben való létrehozás nyilvánvalóan az izolált tárhelyre hozta létre az adatbázist, és pontosan ugyanez kellene nekem.Ezt csináltam:
Behúztam az adatbázist a solutionbe. (Databases/db.sqlite az útvonal)
Jobb klikk rá, Properties->
Build Action -> Content
Copy to output directory -> Copy alwaysNa most, ha jól tudom, ez csak olvasható tárhelyre fogja rakni, tehát írni nem lehet majd. Ami nem jó, ezért ezzel a kóddal, amikor indul app átmásolom az izolált tárhelyre, ahol írni és olvasni is lehet:
public void CopyDatabaseToIsolatedStorage()
{
// Obtain the virtual store for the application.
IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
// Create a stream for the file in the installation folder.
using (Stream input = Application.GetResourceStream(new Uri("Databases/db.sqlite", UriKind.Relative)).Stream)
{
// Create a stream for the new file in the local folder.
using (IsolatedStorageFileStream output = iso.CreateFile("db.sqlite"))
{
// Initialize the buffer.
byte[] readBuffer = new byte[4096];
int bytesRead = -1;
// Copy the file from the installation folder to the local folder.
while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)
{
output.Write(readBuffer, 0, bytesRead);
}
}
}
}Ez van a MainPage osztály konstruktorában:
if (!database.IsDbPresent().Result) // Ez egy bool-t ad vissza
{
Debug.WriteLine("Database file not found in Isolated Storage. Copying...");
database.CopyDatabaseToIsolatedStorage();
}Na most az a probléma, hogy ez szépen működik, amíg debug módban emulatorban, vagy telefonon tesztelem. Onnantól kezdve, hogy lehúzom a telefont a gépről és később indítom el, valamiért nem tudja olvasni az adatbázist.
Hogyan kell ezt "rendesen" megoldani? Van ennek egy bevált módszere?
-
-
trisztan94
őstag
válasz
Alexios #5449 üzenetére
Köszönöm!
Annyi kellett, hogy a RenderTransform értékét nullára állítottam, ahogy írtad
Más:
Van egy listám, és egy másik listám, aminek a tartalma pontosan ugyanaz, mint az első listának:
List<Tipus> eredetiLista;
List<Tipus> tempLista;
-- Konstruktorban
eredetiLista = valami.GetData();
tempLista = eredetiLista;Egy metódusban dolgozok a tempListával, ott van egy ilyen rész:
tempLista.remove(tempLista[elem])
Ez szépen ki is szedi a tempListából a megadott elemet, de közben kiszedi az eredetiLista-ból is.
Ez normális?
Mindenképpen így kell nekem dolgozni, két listával, úgy, hogy egymástól függetlenül tudjak törölgetni belőlük elemeket, és úgy, hogy mindkettőnek ugyanaz az induló értéke.
a valami.GetData() random értékeket ad át eredetiLista-nak, tehát nem tudom a tempLista-ra is lekérni úgy, hogy egyező legyen. -
Alexios
veterán
válasz
Alexios #5425 üzenetére
illetve ha jól emlékszem minden frameworkelementnek van egy Tag property-je is, az is kiegészítő adat megadására van
Ja erre meg:
Én itt arra gondoltam, hogy csinálok egy globális Word típusú változót, amiben benne lesz a behúzott kártya List<Word> értéke. Ez hülyeség?Szerintem az, kicsit overkillnek hangzik, ha nagyon már valami ilyesmit akarsz akkor is bőven elég lenne csak az id-ket eltárolni, és összehasonlítani, mert ha jólértem az ugyanaz mindkettőnél.
-
haromegesz14
aktív tag
válasz
Alexios #5291 üzenetére
Igaz, jövök is a kódrészlettel. Tehát azt szeretném ezzel elérni, hogy a for ciklus változójáról ugye amit folyamatosan növel, ha éppen 5-el osztható, akkor legyen ott egy sortörés. A string tömbömet sikerült feltöltenem, csak ötössével tagolva szeretném sorokba rendezni az X elemét. Metódussal viszont csak idáig jutottam:
static bool otodikE(string[] A)
{
bool otodik = false;
for (int i = 0; i < A.Length; i++)
{
if (i%5=4) otodik true;
}
return otodik; -
-
válasz
Alexios #5161 üzenetére
MEgoldottam Sting Arrayel. De csodálkozom hogy nem lehet C#-ban dinamikus tömbnek értéket adni...
Megoldás:int fCount = myReader.FieldCount;
for (int i = 0; i < fCount; i++)
{
String fName = myReader.GetName(i);
}
int fRcount = 0;
while (myReader.Read())
{
fRcount++;
}
myReader.Close();
string[,] Query = new string[fRcount, fCount];
myReader = catCMD.ExecuteReader();
int fRcount2 = 0;
while (myReader.Read())
{
for (int i = 0; i == fCount-1; i++)
{
Query[fRcount2, i] = myReader[i].ToString();
}
fRcount2++;
} -
válasz
Alexios #5159 üzenetére
Ilyenkor hogy működik az értékadás?
while (myReader.Read())
{
fRcount++;
Query[fRcount][0] = myReader[0].ToString();
Query[fRcount][1] = myReader[1].ToString();
Query[fRcount][2] = myReader[2].ToString();
}Így próbáltam de azt mondta: Additional information: Az index az engedélyezett tartományon kívül esett. Az index nem lehet negatív, és kisebbnek kell lennie a gyűjtemény méreténél.
-
-
trisztan94
őstag
válasz
Alexios #5144 üzenetére
No, belekezdtem a data bindingba,de egy kis problémába ütköztem:
Első körben az összes stringet ami az alkalmazásban van beraktam az AppResources.resx fájlba, mivel kétnyelvű lesz a program (angol és magyar). Minden flottul megy, gombokra működik a binding:
<Button
Name="login"
BorderThickness="0"
Height="70"
Click="login_Click"
Margin="311,388,265,22"
Content="{Binding Path=LocalizedResources.LogInText, Source={StaticResource LocalizedStrings}}">
<Button.Background>
<ImageBrush ImageSource="/Assets/Menu/mainMenuButton@2x.png"/>
</Button.Background>
</Button>Szépen megjelenik a string amikor futtatom az alkalmazást.
Viszont valamiért TextBlock-al nem működik. Nem egy darabbal, az összessel. Így használom:
<TextBlock
Name="sudentNameText"
Text="{Binding Path=LocalizedResources.LoggedInText, Source={StaticResource LocalizedStrings}}"
Margin="31,0,670,451"/>Természetesen ugyanúgy benne van a resource fájlban a string. Mint mondtam, egyik TextBlock-al sem működik a binding valamiért
Ha implicit beírom a Text attribútumba a szöveget, akkor megjelenik.
Mit csinálok rosszul?
Bocsi a sok hülye kérdésért
-
Karma
félisten
válasz
Alexios #5136 üzenetére
Én úgy csinálnám - ezzel nem akarom implikálni, hogy ez követendő minta, csak az ízlésem más -, hogy az oldal DataContextje (aki egy viewmodel) felelős ezért.
Lenne egy DispatcherTimere és egy olyan propertyje, amin a képfájl elérési útvonala érhető el. Belül meg van egy fájllistája, amiből tickenként kiveszi a következő elemet, és az INotifyPropertyChanged interfészen keresztül felszól a XAML-nek, hogy változott a kép.
Fenn pedig egy szimpla bindinggal le van tudva a történet, 0 C# kód.
Ha mondjuk fade animáció is kéne a képek között, az valószínűleg kicsit bonyolultabb, de akkor meg írnék egy attached propertyt, ami kezeli az effektet. A bemenete ugyanúgy a bindingból jönne.
-
Karma
félisten
válasz
Alexios #5121 üzenetére
Juj és pfúj. Persze majd ha felengedi, akkor meg másik brusht állít neki kézzel
A codebehind nem arra való, hogy azokat a dolgokat írja meg az ember, amiket egyébként is tud a rendszer... amargo közben megelőzött
Rengeteg deklaratív megoldás van erre a problémára. Például az alap Silverlight elemek legtöbbje rendelkezik Normal, Pressed, Disabled állapotokat, amiket könnyen felül lehet bírálni Blendben a States fülön.
A pozíciónálós történetet is meg lehetne oldani okosabban: például egy Converterrel, ami figyelembe veszi a skálázás értékét (Application.Current.Host.Content.ScaleFactor), és az alapján felszorozva amikor Thickness objektumot ad vissza.
-
trisztan94
őstag
válasz
Alexios #5127 üzenetére
Hát nem az én ötletem, nekem is ki van a f*szom emiatt
Viszont nem nagyon vágom, hogy hogyan lehetne arányokkal olyan pontossággal megadni, mint pixelekkel?
Pl. egyik gomb margói: 270,92,270,289, az alatta lévőé: 308,-28,252,28
Tehát nem pontosan egymás alatt vannak. Ezt hogy adom meg arányokban?
-
trisztan94
őstag
válasz
Alexios #5123 üzenetére
Azt a dolgot rakom össze amiről már korábban kérdeztem: "láthatatlan" gombokat rakok rá egy képre, hogy nyomható legyen. Margókkal játszadozom, hogy szépen fölé kerüljön, ezt a designerben csinálom, drag n droppal.
Na most amikor végre elégedett vagyok, hogy pont felette van, elindítom telefonon és valamennyivel el van csúszva a gomb, meg a grafika is kifér teljesen (16:9-es a grafika, a designer ahogy látom 15:9-es). Nem akkora probléma, de zavaró.
Közben sikerült véletlen kitörölnöm az AppResources.resx és AppResources.designer.cs fájlokat a Resources mappából, azt a következményt okozva, hogy hiányolja őket az alkalmazás, kb. 40 hibaüzenetet kapok. Újra lehet ezeket generálni az alapértelmezett beállításokkal, vagy csináljak egy új projektet, majd csak másolgassam át a kódom?
-
trisztan94
őstag
válasz
Alexios #5121 üzenetére
Köszönöm!
Még egy gyors kérdés és hagylak titeket:
A designerben lévő "készüléket" nem lehet megváltoztatni? HTC 8x-en tesztelem az alkalmazást, de annak más a képernyő aránya, így pár dolog elcsúszva jelenik meg, mint designerben vagy emulatorban. Fontosabb, hogy a designernek ugyanaz legyen a képernyőaránya, mint a készülékemnek, hiszen azon "rakom össze" a kinézetet.
-
Karma
félisten
válasz
Alexios #5110 üzenetére
Azért az elég gáz, ha egy potenciálisan nullt visszaadó hívás után nem nézed meg az eredményt.
Az as egyébként ilyen esetekben szerintem kevésbé ronda, mint kézzel típust ellenőrizni és utána direct castolni.
Mondjuk sok múlik a környezeten. DependencyObjectek tájékán mindig as-t szoktam használni, mert a XAML felől nincs típusellenőrzés így sok csekkolást igényel. Máshol meg nem szoktam castolni, csak ha muszáj
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Luck Dragon: Asszociációs játék. :)
- Fujifilm X
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Starlink
- Kertészet, mezőgazdaság topik
- Kerékpárosok, bringások ide!
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Nintendo Switch 2
- Az áremelések és a GTA VI késése miatt nem költekeznek a játékosok?
- További aktív témák...
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- Azonnali készpénzes Sony Playstation 5 lemezes és digitális felvásárlás személyesen/csomagküldéssel
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Sony PlayStation4 PRO 1TB fekete konzol extra játékokkal garanciával hibátlan működéssel
- IBM/Lenovo Thinkpad T60
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest