Seperara information i en txt fil

Permalänk
Medlem

Seperara information i en txt fil

Hej!
Jag har skrivit ett program i java vars uppgift är att påminna användaren vad den behöver repetera för att klara för att komma ihåg vad man lärt sig. Programmet är menystyrt och låter användaren mata in data i form av ett datum och sedan ett valfritt antal textsträngar som kopplas till det datumet. Sedan kan användarn använda ett menyaltervativ för att få reda på vad han/hon skrev igår, för en vecka sedan, för en månad sedan och för ett halvårsedan. Meningen är att användarn ska ha skrivit upp vad han/hon lärde sig på de här datumen och repetara det.

Men för att programmet ska bli meningsfullt måste det gå att spara informationen och ladda tillbaks den så att programmet inte töms på data varje gång. Problemet jag har är att jag vet inte hur jag ska seperara inläsningen av datumet från fritexten som tillhör datumet. Om jag använde ett tecken för att seperara dem tex "#" så finns det inget som hindar användaren att lägga in sådanan tecken i fritexten och på det sättet avbryta inläsning förtidigt. Finns det något tecken man kan använda som inte går att mata in genom tangentbordet som man kan använda för att seperara informationen eller finns det något bättre sätt att göra det på?

Visa signatur

3770k @4,5ghz, EK-Supremacy, 2x hd 7970 @1050/1500 , 4x 4 GB corsair vengeance LP 1600 mhz, Corsair RM1000x, z77a-gd65, Samsung 840 pro 256 GB, Crucial m4 128 GB, Nzxt switch 810

Permalänk
Medlem

Du kan ju tabb-separera filen. Eller tillåts användaren att skriva tabbar också? Annars kan du ju separera den med kombinationer av tecken. exempelvis 5 tabbar etc.

Visa signatur

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan

Permalänk
Medlem

Användaren tillåts skriva in alla tecken som kan skrivas genom tangentbordet. Om jag använder sådana tecken så finns risken att användaren skriver det tecknet som seperarar informationen och då blir det fel. Jag behöver en lösning som alltid fungerar oavsett vad användaren matat in för text.

Visa signatur

3770k @4,5ghz, EK-Supremacy, 2x hd 7970 @1050/1500 , 4x 4 GB corsair vengeance LP 1600 mhz, Corsair RM1000x, z77a-gd65, Samsung 840 pro 256 GB, Crucial m4 128 GB, Nzxt switch 810

Permalänk
Medlem
Skrivet av Equadex:

Hej!
Jag har skrivit ett program i java vars uppgift är att påminna användaren vad den behöver repetera för att klara för att komma ihåg vad man lärt sig. Programmet är menystyrt och låter användaren mata in data i form av ett datum och sedan ett valfritt antal textsträngar som kopplas till det datumet. Sedan kan användarn använda ett menyaltervativ för att få reda på vad han/hon skrev igår, för en vecka sedan, för en månad sedan och för ett halvårsedan. Meningen är att användarn ska ha skrivit upp vad han/hon lärde sig på de här datumen och repetara det.

Men för att programmet ska bli meningsfullt måste det gå att spara informationen och ladda tillbaks den så att programmet inte töms på data varje gång. Problemet jag har är att jag vet inte hur jag ska seperara inläsningen av datumet från fritexten som tillhör datumet. Om jag använde ett tecken för att seperara dem tex "#" så finns det inget som hindar användaren att lägga in sådanan tecken i fritexten och på det sättet avbryta inläsning förtidigt. Finns det något tecken man kan använda som inte går att mata in genom tangentbordet som man kan använda för att seperara informationen eller finns det något bättre sätt att göra det på?

Du kan använda vad som helst. För escape-sequences i Java används exempelvis backslash (\). Kringgå problemet vid inmatning genom att dubblera de specialtecken som användaren matat in innan datan lagras.

Hej\på\\dej\!

blir till exempel

Hej\\på\\\\dej\\!

Är antalet specialtecken ojämnt efter inläsning innebär det att ett av dem är tillagt för fältseparering.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Är datumen alltid lika långa? T.ex. på formatet ååååmmdd så är ju problemet löst.

Permalänk
Medlem

Ett bra alternativ till att spara datat i textfiler är att serialisera det objekt som håller alla datum och textsträngar och spara det till en fil.

http://www.javacoffeebreak.com/articles/serialization/index.h...

Permalänk
Medlem

Serialisering ska man helst inte använda slentrianmässigt, speciellt inte för saker som sparas till disk. Java lämnar inga garantier för att den lagrade data kommer gå att läsa tillbaka i framtiden. Bättre är att formatera hela filen på något smart sätt som man sjäv bestämmer över. XML har varit väldigt populärt ett tag och skulle säkert fungera bra för dig då det enbart rör sig om skrivbara tecken[1]. En modernare variant är JSON, vilket är i stort sett likvärdigt med XML. Det borde inte vara svårt att hitta Java-bibliotek som klarar det du behöver, det här är första Google-träffer jag fick http://www.xom.nu/. Har inte kollat på det själv, men det skulle förvåna mig om det inte skulle klara av all underligheter du kan komma på att kasta på det.

Ett annat alternativ är att skapa ett eget binärt lagringsformat. Du kan då själv ha kontroll över vad som händer och kan acceptera att användare matar in precis vilken dynga som helst. Det är också väldigt lärorikt att tänka ut bra filformat och ger en del förståelse i hur dom fungerar. Jag ger ett exempel nedan som du kan utgå ifrån för att göra ditt eget format. Se till att det visas i en fixed-width font.

== HEADER == ------------------- | 4B Num entries | // Four-byte integer holding the number of stored entries. Simplifies looping. ------------------- == ENTRY LIST == | -------------------- | | 8B File offset | // Eight-byte byte offset in the file where this entry begins. | -------------------- | | 4B String length | // Four-byte integer giving the number of character in the string. | -------------------- | .... | The above repeated <Num entries> times. | |--------------------- == Payload == | ------------------- | | 8B Time stamp | // Time stamp representing the user recorded date, stored as seconds since the epoc in an eight-byte integer. | |------------------ | | String content | // <String length>[entry index] bytes of string content. | ------------------- | .... | The above repeated <Num entries> times. |--------------------

En exempelfil skulle kunna se ut som följer. Varje [] är en byte och | används för att separera fälten listade ovan.

Byte 0 Byte 4 Byte 12 Byte 16 Byte 24 Byte 28 Byte 36 Byte 41 Byte 49 v v v v v v v v v [0][0][0][2] | [0][0][0][0][0][0][0][28] | [0][0][0][5] | [0][0][0][0][0][0][0][41] | [0][0][0][4] | [32][4][234][21][45][21][1][43] | [H][e][j][D][u] | [32][4][234][21][45][21][1][43] | [&]["][#][¤] Num entries File offset entry 0 Length string 0 File offset entry 1 Length string 1 Time stamp for entry 0 Content entry 0 Time stamp entry 1 Content entry 1

Vissa tycker om att aligna varje element på något sätt, men för Java tror jag inte det behövs. Det är mest i C när man vill rikta strukt-pekare in i fil-buffern. Skit i det.

Om du tycker ovan är lite för inveklat kan du göra som Teknocide föreslår, med specialla marker-tecken som escapas när det behövs. Exemplet ovan, med andra datum, skulle då exempelvis kunna bli

2012-06-14#HejDu#2012-06-14#&"##¤

eller kanske

2012-06-14"HejDu"2012-06-14"&\"#¤"

Notera användadet av dubbla # i första exemplet för att signalera att det är tecknet '#' som avses och inte slutet på strängen, samt motsvarande \" i det andra.

Om du vill ta det hela lite längre kan du implementare båda, ett Reader/Writer interface som dina två Reader/Writers implementerar och till sist en Reader/WriterFactory som tar ett filnamn som argument, läser lite av filen och sedan spottar ur sig en Reader/Writer av rätt typ.

En sak att tänka på är att Java använder Unicode för sina strängar, så det är inte säkert att

aString.length()] är antalet bytes som behövs för att spara strängen på disk. Se exempelvis http://stackoverflow.com/questions/4385623/bytes-of-a-string-in-java

[1] Du skriver att "Användaren tillåts skriva in alla tecken som kan skrivas genom tangentbordet." Inkluderar det även alla otrevligheter man kan få via alt+<numpad>?

Permalänk
Medlem
Skrivet av MrMadMan:

Ett bra alternativ till att spara datat i textfiler är att serialisera det objekt som håller alla datum och textsträngar och spara det till en fil.

http://www.javacoffeebreak.com/articles/serialization/index.h...

Testade detta och det fungerade mycket bra! Jag använder den till att skriva ned en vector som innehåller objekt som innehåller ett datum och textsträngar som tillhör datumet. Mycket smidigt :).

Skrivet av ibbles:

Serialisering ska man helst inte använda slentrianmässigt, speciellt inte för saker som sparas till disk. Java lämnar inga garantier för att den lagrade data kommer gå att läsa tillbaka i framtiden. Bättre är att formatera hela filen på något smart sätt som man sjäv bestämmer över.

Varför är MrMadMans metod dålig? Vad menar du men att det inte finns några garantier för att den lagrade datan inte kan läsas tillbaka i framtiden? Borde det inte vara betydligt mer effektivt att skriva ned allt precis som det är till hårddisken istället för att ta omvägar som att formatera sin data för lagring och sedan återställa det till vad det var från början?

Visa signatur

3770k @4,5ghz, EK-Supremacy, 2x hd 7970 @1050/1500 , 4x 4 GB corsair vengeance LP 1600 mhz, Corsair RM1000x, z77a-gd65, Samsung 840 pro 256 GB, Crucial m4 128 GB, Nzxt switch 810

Permalänk
Medlem

Varför är MrMadMans metod dålig? Vad menar du men att det inte finns några garantier för att den lagrade datan inte kan läsas tillbaka i framtiden? Borde det inte vara betydligt mer effektivt att skriva ned allt precis som det är till hårddisken istället för att ta omvägar som att formatera sin data för lagring och sedan återställa det till vad det var från början?[/QUOTE]
Jag tar mig friheten att svara här.

Effektivitet (som i prestanda) är med största sannolikhet oviktig i sammanhanget.

Vad han menar är att datan bara kan läsas från filen (deserialiseras) så länge klassen som håller datan förblir oförändrad. Om man kommer på att man behöver skriva om klassen så kommer man att få problem att läsa in sina filer igen. Det finns alltså en risk att den sparade datan ej går att återställa om man inte är försiktig.

Att använda serialisering i en sån här applikation är en "genväg". Det är väldigt enkelt, men man har ingen kontroll över vad som faktiskt händer. Jag tror inte ibbles menar att det är dåligt, men man bör vara medveten om riskerna.

ibbles metod med eget binärformat tar ett tag att implementera, och har du inte god programmeringsvana så är det en rejäl utmaning också, men å andra sidan lär du dig mycket om du bestämmer dig för det, och du kommer känna dig mäkta stolt när du väl är klar. Det är dock lite som att uppfinna hjulet igen med tanke på att JSON eller XML duger fint för uppgiften.

I slutändan skulle jag säga så här:
quick and dirty: serialisering
lärorik utmaning: eget binärformat
bra medelväg: JSON eller XML

Permalänk
Medlem

Jag skulle rekommendera att man använder de redan definierade separatorerna som finns i ASCII standarden vilka är tecken som man aldrig använder. Genom detta får man bra uppdelning på ett standardiserat sätt. Det är på detta sätt som man separerar meddelanden när man tex kommunicerar via modem och olika seriella enheter.

Se tex följande sida för koderna http://www.december.com/html/spec/ascii.html

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem
Skrivet av MrMadMan:

Vad han menar är att datan bara kan läsas från filen (deserialiseras) så länge klassen som håller datan förblir oförändrad. Om man kommer på att man behöver skriva om klassen så kommer man att få problem att läsa in sina filer igen. Det finns alltså en risk att den sparade datan ej går att återställa om man inte är försiktig.

Precis. I det här fallet innehåller serialiseringen dessutom objekt av klasser som Equadex inte själv har kontroll över. En olycklig Java-uppdatering och POFF, allt trasigt. Nu verkar det dock gälla väldigt basala klasser som kanske inte ändras så ofta, så det kanske inte är något problem. Hur lång tid är det tänkt att datat ska vara tillgängligt?

Skrivet av MrMadMan:

ibbles metod med eget binärformat tar ett tag att implementera, och har du inte god programmeringsvana så är det en rejäl utmaning också, men å andra sidan lär du dig mycket om du bestämmer dig för det, och du kommer känna dig mäkta stolt när du väl är klar. Det är dock lite som att uppfinna hjulet igen med tanke på att JSON eller XML duger fint för uppgiften.

Håller helt med. Från frågan fick jag intrycket av att Equadex är en nybörjare inom programmering men med ett intresse av att lära sig mer. I den situationen har man en balansgång att gå mellan att hitta den enklaste/snabbaste lösningen till precis det problem man står inför mot att ta ut svängarna en aning i syfte att testa på och lära sig mer avancerade koncept och färdigheter i ett enkelt projekt där det egentligen inte behövs men som ger en bra grund att experimentera på. Så länge man håller isär vad som är "experiment-projekt" och vad som är "production code" så ser jag bara fördelar. Syftet är att lära sig förstå hur komplicerad en lösning på ett givet problem behöver vara för att både hålla det underhållsbart för sina medprogrammerare men ändå kraftfullt nog för att stödja framtida utveckling. Det finns hyllmetrar med böcker skrivna om hur man går lagom fort fram med ett projekt. Dom brukar heta något med "Software design" eller liknande.

Skrivet av MrMadMan:

I slutändan skulle jag säga så här:
quick and dirty: serialisering
lärorik utmaning: eget binärformat
bra medelväg: JSON eller XML

Bra sammanfattning. Implementera alla tre i ordningen serialisering (redan gjort, vad jag förstår), JSON/XML, egent binärformat.

Skrivet av KeyPakt:

Jag skulle rekommendera att man använder de redan definierade separatorerna som finns i ASCII standarden vilka är tecken som man aldrig använder. Genom detta får man bra uppdelning på ett standardiserat sätt. Det är på detta sätt som man separerar meddelanden när man tex kommunicerar via modem och olika seriella enheter.

Se tex följande sida för koderna http://www.december.com/html/spec/ascii.html

Det här är faktiskt en bra ide. Bästa än så länge tror jag. Lätt att förstå, lätt att implementera, kräver förmodligen väldigt lite kod, kommer fortsätta fungera inom överskådlig framtid samt lätt att använda resulterade filer även i andra programmeringsspråk och på andra plattformar.

Permalänk
Medlem
Skrivet av ibbles:

Det här är faktiskt en bra ide. Bästa än så länge tror jag. Lätt att förstå, lätt att implementera, kräver förmodligen väldigt lite kod, kommer fortsätta fungera inom överskådlig framtid samt lätt att använda resulterade filer även i andra programmeringsspråk och på andra plattformar.

Ja det är den bästa hittills men jag har ju inte uppfunnit det själv utan bara nyttjar det som är mest effektivt. Glömde nämna att många databaser också använder sig av ASCII för att separera tabeller, rader, fält etc och fungerar det i en databas så fungerar det i en textfil. Det största problemet som jag ser idag är att så många direkt väljer att köra XML bara för det bliviit ett slags standard och det funkar också men XML bygger upp så stora filer i onödan och behöver man inte den komplexiteten som XML medför programmeringsmässigt sätt så är det mycket bättre att köra textfiler med ASCII tecken som separatorer.

Jag programmerar normalt system för kassor i butiker och då behöver jag kommunicera med kvittoskrivar, skannrar, vågar, kortläsare, bankmoduler etc och det som är gemensamt för alla är att de separerar meddelanden med ASCII. Bankmodulerna är intressanta för dessa bygger nästan alltid meddelanden i XML för att standardisera själva strukturen men de använder nästan alltid ASCII tecken för att separera de enskilda XML meddelandena så även där är ASCII viktigt.

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem

Personligen skulle jag hålla mig till ett eget binärt format.

Permalänk
Medlem
Skrivet av KeyPakt:

Ja det är den bästa hittills men jag har ju inte uppfunnit det själv utan bara nyttjar det som är mest effektivt. Glömde nämna att många databaser också använder sig av ASCII för att separera tabeller, rader, fält etc och fungerar det i en databas så fungerar det i en textfil. Det största problemet som jag ser idag är att så många direkt väljer att köra XML bara för det bliviit ett slags standard och det funkar också men XML bygger upp så stora filer i onödan och behöver man inte den komplexiteten som XML medför programmeringsmässigt sätt så är det mycket bättre att köra textfiler med ASCII tecken som separatorer.

Jag programmerar normalt system för kassor i butiker och då behöver jag kommunicera med kvittoskrivar, skannrar, vågar, kortläsare, bankmoduler etc och det som är gemensamt för alla är att de separerar meddelanden med ASCII. Bankmodulerna är intressanta för dessa bygger nästan alltid meddelanden i XML för att standardisera själva strukturen men de använder nästan alltid ASCII tecken för att separera de enskilda XML meddelandena så även där är ASCII viktigt.

Oavsett vad så måste koden escapas. Det gäller kanske inte i kassasystem där inmatningsalternativen är begränsade, men då TS vill skydda sig från att användare injicerar egna teckenkoder är escaping det enda sättet.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av ibbles:

Precis. I det här fallet innehåller serialiseringen dessutom objekt av klasser som Equadex inte själv har kontroll över. En olycklig Java-uppdatering och POFF, allt trasigt. Nu verkar det dock gälla väldigt basala klasser som kanske inte ändras så ofta, så det kanske inte är något problem. Hur lång tid är det tänkt att datat ska vara tillgängligt?

Håller helt med. Från frågan fick jag intrycket av att Equadex är en nybörjare inom programmering men med ett intresse av att lära sig mer. I den situationen har man en balansgång att gå mellan att hitta den enklaste/snabbaste lösningen till precis det problem man står inför mot att ta ut svängarna en aning i syfte att testa på och lära sig mer avancerade koncept och färdigheter i ett enkelt projekt där det egentligen inte behövs men som ger en bra grund att experimentera på. Så länge man håller isär vad som är "experiment-projekt" och vad som är "production code" så ser jag bara fördelar. Syftet är att lära sig förstå hur komplicerad en lösning på ett givet problem behöver vara för att både hålla det underhållsbart för sina medprogrammerare men ändå kraftfullt nog för att stödja framtida utveckling. Det finns hyllmetrar med böcker skrivna om hur man går lagom fort fram med ett projekt. Dom brukar heta något med "Software design" eller liknande.

Bra sammanfattning. Implementera alla tre i ordningen serialisering (redan gjort, vad jag förstår), JSON/XML, egent binärformat.

Det här är faktiskt en bra ide. Bästa än så länge tror jag. Lätt att förstå, lätt att implementera, kräver förmodligen väldigt lite kod, kommer fortsätta fungera inom överskådlig framtid samt lätt att använda resulterade filer även i andra programmeringsspråk och på andra plattformar.

Jag hade tänkt behålla datan ganska länge. Eftersom programmets syfte förutom att lära mig mer om programmering är att hjälpa mig repeterara vad jag lärt mig så kan det vara bra ha kvar om man vill gå tillbaka och kolla vad man lärde sig för flera år sedan. Det gör inte så mycket om informationen går förlorad men tanken är helt klart att datan ska garanterat ska gå att använda oavsett hur länge sedan den skrevs. Jag vill göra programmet så smart som möjligt så man inte får en massa konstiga fel.

Du har rätt att jag är en nybörjare. Jag har bara spenderat några veckor med att lära mig c++ förra sommaren och därefter gått programmering A och B i skolan i java. Denna sommaren ska jag därför satsa på att fördjupa mina kunskaper i främst c++ eftersom jag har en bok om det. Nästa termin börjar jag mitt tredje år på gymnasiet och har då tänkt att jag skulle skriva ett 2d monopol spel som projektarbete. Därför är det viktigt att jag blir betydligt bättre på att programmera så jag klarar av uppgiften.

Att göra programmet med alla tre metoderna för att spara informationen verkar vara en bra ide och det ska jag helt klart försöka. Det kan kanske användas till mitt framtida projektarbete för att spara och ladda spelet vilket kan vara användningsbart i långa spel som monopol. Oavsett om det går eller inte är det säkert lärorikt och nyttigt iallafall:).

Skrivet av Yohanu:

Personligen skulle jag hålla mig till ett eget binärt format.

Kan du motivera varför?

Skrivet av Teknocide:

Oavsett vad så måste koden escapas. Det gäller kanske inte i kassasystem där inmatningsalternativen är begränsade, men då TS vill skydda sig från att användare injicerar egna teckenkoder är escaping det enda sättet.

Men start och stop tecknen för text går väll inte att mata in genom tangentbordet så borde inte det vara säkert?

Visa signatur

3770k @4,5ghz, EK-Supremacy, 2x hd 7970 @1050/1500 , 4x 4 GB corsair vengeance LP 1600 mhz, Corsair RM1000x, z77a-gd65, Samsung 840 pro 256 GB, Crucial m4 128 GB, Nzxt switch 810

Permalänk
Medlem
Skrivet av Teknocide:

Oavsett vad så måste koden escapas. Det gäller kanske inte i kassasystem där inmatningsalternativen är begränsade, men då TS vill skydda sig från att användare injicerar egna teckenkoder är escaping det enda sättet.

Förstod inte riktigt vad du menade med begränsad inmatning. När ett system kommunicerar med seriella enheter finns ingen begränsning, handlar ju inte om kassörers inmatningar utan om 'säkra' tecken. Om man är rädd att en användare ska trycka typ Alt + en numerisk kombination för att få fram tex värdet av en ASCII separator är det ju bara man gör replace på sina egna separatorer och ersätter med tom sträng innan man sparar ner data så finns ingen risk för korrupt data. Hade det däremot handlat om komplexa objekt så måste man ju serialisera vid transport över TCP protokoll. Men i detta fall, varför göra det svårare än vad det är?

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem
Skrivet av Equadex:

Men start och stop tecknen för text går väll inte att mata in genom tangentbordet så borde inte det vara säkert?

Det brukar gå att kopiera godtyckligt teckens bytekod i en texteditor, exempelvis Notepad++, och klistra in där man tycker det passar.
I både C# och Java kan man även använda unicode escape-sekvenser för att representera ett värde enligt \uXXXX där varje X representerar en byte i det tecken man är ute efter, men det kanske inte går att mata in så mycket text i din applikation.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Det brukar gå att kopiera godtyckligt teckens bytekod i en texteditor, exempelvis Notepad++, och klistra in där man tycker det passar.
I både C# och Java kan man även använda unicode escape-sekvenser för att representera ett värde enligt \uXXXX där varje X representerar en byte i det tecken man är ute efter, men det kanske inte går att mata in så mycket text i din applikation.

Eftersom du svarar som du gör antar jag att du inte ens tittat på den webbsida jag bifogade, gör det nästa gång. Det du nyss beskrev var precis det som jag med ASCII standard föreslog för \0d1 trådar sedan.

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS Maximus V GENE, Intel i7 3770K @ 4,6 GHz (1.190 V), EVGA GTX 670 FTW SLi, 8GB G.Skill TridentX CL10 2400 MHz, Samsung 850 Pro 512GB, Samsung 840 Pro 256GB, Corsair Hydro H100i, Corsair AX860i, Fractal Design Define R4W, ASUS PG278Q

Permalänk
Medlem
Skrivet av KeyPakt:

Eftersom du svarar som du gör antar jag att du inte ens tittat på den webbsida jag bifogade, gör det nästa gång. Det du nyss beskrev var precis det som jag med ASCII standard föreslog för \0d1 trådar sedan.

Du antar fel, och mitt svar var inte riktat till dig utan besvarade trådskaparens fråga om hur man kan klistra in kontrolltecken som inte tillgängliga på tangentbordet.

Till höger mellan pilarna har jag lagt ett ESCAPE-tecken =><=. Du kan se det om du klistrar in raden i en mer avancerad texteditor.

Visa signatur

Kom-pa-TI-bilitet