Binärdatei schreiben

  • Alle drei Varianten ausprobiert. Der schreibt nicht binär.


    Bei mir schon:

    [autoit]

    $s_CodeAsString = FileRead("Test.txt")
    FileDelete("Test.pdf")
    FileWrite("Test.pdf", Binary($s_CodeAsString))

    [/autoit]

    Hab mir deinen String als Textdatei gespeichert und als Ergebnis bekomme ich die PDF aus dem Anhang.

    Den 1.Block des String schreibt er binär und macht mit dem zweiten in Text weiter

    • Warum Blockweise?
    • Warum Stringfunktionen (StringRegExp) verwenden, wenn du doch Binärdaten schreiben willst? - ich sehe auch keine einzige Umwandlung der Ergebnisse aus StringRegExp in Binärdaten - es bleibt ein String.
    • Warum FileWriteLine? Wo gibt es denn in Binärdateien Zeilen? FileWriteLine schreibt einen übergebenen String in die Datei und hängt einen Zeilenumbruch dran - was das ganze bei Binärdaten soll solltest du mal überlegen.


    Kurz: Es funktioniert bei mir auch blockweise völlig problemlos:

    Blockweises Schreiben eines Binärstrings
    [autoit]

    Global $s_CodeAsString, $d_Length, $d_BlockSize, $h_File, $b_Block

    [/autoit] [autoit][/autoit] [autoit]

    $s_CodeAsString = FileRead("Test.txt")
    $d_Length = StringLen($s_CodeAsString)
    $d_BlockSize = 100

    [/autoit] [autoit][/autoit] [autoit]

    $h_File = FileOpen("Test.pdf", 16)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To INt($d_Length / $d_BlockSize)
    $b_Block = Binary(StringMid($s_CodeAsString, $i * $d_Length, $d_BlockSize))
    FileWrite($h_File, $b_Block)
    Next
    FileClose($h_File)

    [/autoit]
  • Also bei mir funktioniert es so auch:

    Spoiler anzeigen
    [autoit]

    Global $s_CodeAsString = "0x255044462D312E340A25C7EC8FA20A352030206F626A0A3C3C2F4C656E6774682036203020522F46696C746572202F466C6174654465636F64653E3E0A73747265616D0A789C7552CB4EC33010BCFB2B7CC34664F1FA195F91AA4A880B956F150728345490425B2424BE9D039B871B434522259BF1CE78C69B1D57809AABEECEC5AA65978BC09B03EB61BE988FC5BE613B5683E9AE1E28EB55CBAF12116B4E3269CD14C4182DF66BC883829A07AFC0F2D4B2A5485281B74A692F9EA48160C54156085AC718C487AC34A077AE165C56E4CB8610B5584B0DB572E2BBC374B49158FB112BFBE612C105A78C781B3A49C889D749F4B18037B42DE1013569DCA56B86869CA61B469F672C9D2FC56CB2BA9934B685896CEC7E48B21A5ECF4547B6E7A211EF057E2F2B0FDABB988378142F85BBF16CC6CD1CD6415C1449CBD49FB2AAC11AB431B326C9B2EF4FF89CE7740A444262391372B06D416D4E5D7E1DC38C4021DFC8080195D1FF0DF7A1DFCD283CCA95E7500EB2ED04AC8BF15799658D8041D5BB80E3486789DDD22FDCD0F30702E89AD6656E6473747265616D0A656E646F626A0A362030206F626A0A3333330A656E646F626A0A342030206F626A0A3C3C2F547970652F506167652F4D65646961426F78205B30203020353935203834325D0A2F526F7461746520302F506172656E742033203020520A2F5265736F7572"
    $s_CodeAsString &= "6365733C3C2F50726F635365745B2F504446202F546578745D0A2F457874475374617465203130203020520A2F466F6E74203131203020520A3E3E0A2F436F6E74656E74732035203020520A3E3E0A656E646F626A0A332030206F626A0A3C3C202F54797065202F5061676573202F4B696473205B0A34203020520A5D202F436F756E7420310A2F526F7461746520303E3E0A656E646F626A0A312030206F626A0A3C3C2F54797065202F436174616C6F67202F50616765732033203020520A2F4D65746164617461203133203020520A3E3E0A656E646F626A0A372030206F626A0A3C3C2F547970652F4578744753746174650A2F4F504D20313E3E656E646F626A0A31302030206F626A0A3C3C2F52370A37203020523E3E0A656E646F626A0A31312030206F626A0A3C3C2F52380A38203020523E3E0A656E646F626A0A382030206F626A0A3C3C2F42617365466F6E742F545655504D462B54696D65732D526F6D616E2F466F6E7444657363726970746F722039203020522F547970652F466F6E740A2F4669727374436861722033322F4C61737443686172203235322F5769647468735B0A323530203020302030203020302030203020302030203020302032353020302032353020300A302030203020302030203020302030203020302030203020302030203020300A3020302030203020302036313120302037"
    $s_CodeAsString &= "3232203020302030203020302030203020300A3020302030203020363131203020302030203020302030203020302030203020300A30203434342035303020343434203530302034343420333333203530302035303020323738203020353030203237382037373820353030203530300A353030203020333333203338392032373820302030203732322030203020343434203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A302030203020302030203020302030203020302030203020302030203020300A3020302030203020302030203020302030203020302030203530305D0A2F456E636F64696E672F57696E416E7369456E636F64696E672F537562747970652F54797065313E3E0A656E646F626A0A392030206F626A0A3C3C2F547970652F466F6E7444657363726970746F722F466F6E744E616D652F545655504D462B54696D65732D"
    $s_CodeAsString &= "526F6D616E2F466F6E7442426F785B30202D32313820373735203638335D2F466C61677320340A2F417363656E74203638330A2F436170486569676874203638330A2F44657363656E74202D3231380A2F4974616C6963416E676C6520300A2F5374656D56203131360A2F4D697373696E675769647468203235300A2F43686172536574282F452F472F542F612F622F632F636F6D6D612F642F652F662F672F682F692F6B2F6C2F6D2F6E2F6F2F702F706572696F642F722F732F73706163652F742F7564696572657369732F772F7A292F466F6E7446696C6533203132203020523E3E0A656E646F626A0A31322030206F626A0A3C3C2F46696C7465722F466C6174654465636F64650A2F537562747970652F5479706531432F4C656E67746820333133333E3E73747265616D0A789C655679545377BEBF31E4FE7E75C1299954A235C9D4F3B4B66AD1D745A68B0BA2D3274540F645400910200B212C09494848C2F64B02498040D803861D0404C54299D6A562A7B65AEBB8B4454F5F3B55A7769C33EFFDAEE7F2C7BBB1E7CDFC31E7DC73CFBDBFDF77DF3E5F1611B08260B158AB63255271D1F618B93453E6FFDF466D60512FAEA036B2112D7BDAF6740F672311D1C15E8356B3D1EA80EE17D7BC16443DFF3CBEB316CFFF8660B358139F7D1B2657A895929C5C95E8E5B89884ADAFBEBAED5F273B43434345C7D5FF7F23"
    $s_CodeAsString &= "3A202E92E4C8449B998F1271815C2115CB546F8BC218EA8202C909514E815A915B24CACCCA1267F9D9E2330BC4F9A28392028942212F11BD1CB655B42B2464E776E6B5EB6D5164B154AC946F134964D9129944A51665CAB24447A4E29C4C9134334BEC1770402A5129D5A2D74324B27F72474AA4C78B8B44CF5C1645CA434511A218714E7141A6F2DF6F0882D820932BC295458754A599C74F68B2C4D939B992D8FC02E9F2B61D228238424411D1C466E228114BBC4CC41189C47E228C3840A410E1C441E210F107E27DE2BF88378808E2032292B847AC21D6122CE24526F6440051427CC2DACFBAB62264C522FB187B22203CE007CE3E4E2BE71B32893C0B82C0DF60369C7D8E7CAEE3B93B2BEB56BDB22A6555D1AA126C0FA46A90875AFF09EBEE123EB0C46EA35EE239EC4DD66604FB1BB5C942DA0A508C4197580DB538D70312EBB56E340EF128F8F06C8F7B04C1B9DE82F785B418A008BD26C94F94E501C90D156E3407B11A3C483FBF2FAD4073F890E00E30DB92D512436C399FD168ECA776F5B3067EC0AD3FB0B19DCAE0D12F84BC4A0BE80D3F6DC64138E8D1FF60015EF7DA43FAB742BD9CB774E9557A23CD3976686F5676EF548950BE507E0D5D870FCF2D5E1730B26869BBA603470F53819F06DD5CC2C5F7D771B58DD4465EA3D5891A111C751A5385CBB9803B87120C86280BD400AE165775907BADFA667405E2"
    $s_CodeAsString &= "9D602CAFD7388D205EF9171C80FF03FF26FCBF5F399AAE8C4B17DE02165B5C49AE3E56C3C7AFECE50D9E1F9FFD7A6E0F0D6976F2DEB0D498F141463F469D65A7F0CCE99B5DF88D89B2CEA0C74FD67195D403FC2E4F4E26D1444611BD094105998C321BCCCE2A7B6D336A8718E11DE05BE4D1B7EC865EAC5591E6E3D55A834EAF919B5211A4776025C9D5F43B1C3E01DE40620EEAD1B6EF847D2477A6066FE22CF797915F5B5A74281C2E470114AED3EEAF826580ABA14E9181F83EF2E05F7E66FD7989EDA4D6F35AED8D5637827D8DE5E942DA0E5092D97CB8824992D9030ED9351E7401E262303C33EF733456199B056DBA664B0B82BD9EF6FE91922E49A64C752059F81750658B2FCED147953199E31B7BCABBA99D5DFA9EA08F1671E8B575DC76FC05BECAE36EABC62F720C646D6DA5B9AEAE1AF12DC8683334406EBBABB8B8BE70C33B31896147874FDC4B115ECC1B2B6D2F4205FCF47C79A2A4A0A5A74C50D257E9D55F80E52437820E6901CEA67A9B9B495D6BADD7C208B0F4FBAA3B36DCFAECE2B5F9A29123E3429AF84CDEA6ED433EFED450FFEC8541C92EAF20F069B66E0A5FE9C0EC6EFCCA146B189394E8AFECA749F87F79B44B4DCED4B86BDC264FA543853220FD26C88F5484D16F6DC1248E7CD0FFE39939C199B945DF17E83C9A2B9BCC1994B729FA22A19734E11C4E31692953EB4A901195DBD5CE639E34D7"
    $s_CodeAsString &= "312641A9F4267A0B9DB1D5B7F77C94F0EAC14762BC02DD47F8F9B1A93188D301BAE46EB9D80003F19071815A3DCCBAB6C4C62E2A9EB71943B2A9CE6E11982B2D9566A3383623A5BCDA60B6985115AAB1D6DA6BE11FE98FC9B706332ECD4DF42E8C08F4CD254A8DB118F1B3B5BE2B423CF937C0F8491DF2B0A82F18695A306A6E32230DD25A8A0C8A9DB432F82DACD2CC22845AF8A8A7D979CE093D74BA169CAA761BBAE29C65CE32873A844E097E19B75637D536A1263EEA76BB46EB19AA3F6881B7D665EC49C41BE887C16EA94BE7400DC8D5E23EC9348439F847DAD09A5D6F7120BE133534B64D31CDF938B863DADED0C5A800815494F12215DC1B74EAFB83DFE34DDFACE3FE44457ECED3E82AAAB408AACCAD67843801A085AA016D6FF17846671482DC5BDBF72547A8BA4ABDBDDD5D3DF5750D754E616D639D0B39A16FB8676ACE278B1344027AC7071A538618727F2A2ED549F2D6479C49BF7CE674F7C26541434247C96934CAD83F3601E9D7BEE3A182AACA928A229DBCB204C15CF9E88CB09EC9C2E971BCE60CF48F9B616AD515D6974BB8F47B36DEFEF45D5E952D53AB30A5EAF93213A71C38ACF5C889E0546365A670B90D14DCCBBB8B839FE01578135EBBE7C196C8E89CE452417CC0E4B9F185DBF3EFD281343BE57068C2316F9FC0EFFB57146780D5778B4DBD84437829E139453108861CBE8BC1DF3FB9FECD78"
    $s_CodeAsString &= "8B21BB49E82876C93BD4DD887FB2A7D37B3EFCDC5BC989A539C78549E9F243E81D48BF706707669F9D6A1B1A17F87A3B7D8397189BA3D020B57E9045BD8937F0D4F5C6244BB95EC3D7692495894CFD0948DC436DE578E85F400DBD92D34136DEF0783E65269880A43B97B772B4D41AE0777B815ADFCFF2DDC7A54C01FED5C8C35B16386D405D578B6A10CC3135CF0AA9CF98E64ED1E41A0F6BF8E5C06575201782A71A8DC7857408100F2B9A4F30DAC00E9A43BF44FFF6E6EB78C5F989AE73A3C2C300B30290D95C6134A84B95461982BB63EFE2B59833F7F59FFF38971A2FF4C7E54B2C1BC6609C456DC3BB79297B326487510CCA18905D504F98476A2F437C9934FDC938A01C968EA77527A02494AA164B528F2B0EA050C6C3AFDEC0E0E1CD4B989816D0B7F1365EF3EDD15397D165D42B6F791D3E1B73D49661D6DF19C716995EA0D732AD75B17368A2BBD528EB10B415BA8DED087A3B3BBCE3E9278F7C10AF482B1416A69B72EADE86A1F9DFD25749B4DF5011E687AB160F08B51B9AD14D88AFE2407FD468D9057CA50FE74D36F407F55F937D87C36FF97CEBB834954705F326DF03A5486B2F7516BB82154D8A8642A698F18E7D6121113EF1E779C232B55A63A9CA93E94B51292A71579C2E855CFA4082222F7B7DFCEDF487376F9F9C5E104C0CB50FA309B4983ABDCF4EF31CC1F13665236A435D23633E57639DB3CE8E"
    $s_CodeAsString &= "3A6B5BEA1CE8149AF20CF946FA3D63681E0D547975C390362FAFE78D98EF5AE610FC71449F13BD278BE6FC67F4C019AFB3657A5EC8C50DF827DEA5FEB1D9A1931A699BA023D79D86B2E051596EDA91CC3F3D12FC8AF51B3E66DD58C2914CE876E247BCE9D9C1F64904E7FB72C285743240878CFA68CBAF601FD76471A12F214E01FFC8FCF8F751994547D204F802A8B24B2A94A6A3E57C85BF79EAAD766656C019972943B89CCFE091A532DAC4F0177840B4C3E866F89939C868BDF284F5905119E607FBD762395AA6DADCB6166B23E2F73E43272D406146C3417F4E8C1EF07E83A9097D05310689B884A750A9E4F21E55FF80B767A05FE595099FC12EF5F3340B3B9FB0B1F329C15BAE01E84D8361370385F86C2708ADD7B5A01B90727D0C30897AD45E7A05EC252DF83DCEF265D242BFC7E9257B31CBDB890310FC352AA1ADAC6F19D07CCAE63146599B101C69D2A708974B004AA8A909F383A6DE034AAD276CDA5634C6C711008BE823F66A5B8DADC65EC37719ED1654052B2B2D1582322D9679C8747B4167E647F4761C1F3CE0BBFEF9E2EC808BEFA96FB53175E9F2D0193A72B2AEB91AE990A952A7AB60F69BC0606A37A8B6892B64A6E872BED4C4791636D6CF4BEC4EC62607D96C755B99E61C6ED231EB4C2140713A7D44156395C10322EA2B9AD027907AC0F02768C4C6831A7EE0D34EC6A78D0BACFB4B38C2FFB03B"
    $s_CodeAsString &= "99C5AEC5EEF22F76271BCB5384B4C32F437BB48E91A1F480789BB6194D423C0690CDD5E474F67967DAC7103CD393CB948514A0A306438C3F372A0F88B16ADBD122C40D607066A46316C10B1D8ADD423A8759144DA668334324F780429BD4A6EF40937C7C1CE095599FBE179D58181D27505F90F8E2503A92EB7647C09BCC4E9858C6EC84DA673BE1458AD7AE6BBDF138E8FAD2FEC7BF3C4E5D5AC79DA58AE67955649A819955F811E0DEA67769C8C51AB7112541BA022079954E67501417544811CCCA1F9D167267F11D7AB30E7C58D3AA4569906E00EF7C9878E3D4649BCF279899E1EC06F5B5F35DE3CD1FB5F2E927D4773C6EA352A52A947717FBFABD3D3E9FCA2B17E29417B8CE7F3B0DC4F6EFE8DFF1AE8E9CBD8C3E85F3B993C7728B54927C6FD9B8C369B53A044E1B425626B30E8B295F9E1D97ED67C0CFFFC2932A0B0B647DCA81A1937D03438527A5FEF3C0D22E2ABE0BC77691832BEFAD1A74AD5E7DAF63F51A82F83F9EC8345D0A656E6473747265616D0A656E646F626A0A31332030206F626A0A3C3C2F547970652F4D657461646174610A2F537562747970652F584D4C2F4C656E67746820313431323E3E73747265616D0A3C3F787061636B657420626567696E3D27EFBBBF272069643D2757354D304D7043656869487A7265537A4E54637A6B633964273F3E0A3C3F61646F62652D7861702D66696C7465"
    $s_CodeAsString &= "7273206573633D2243524C46223F3E0A3C783A786D706D65746120786D6C6E733A783D2761646F62653A6E733A6D6574612F2720783A786D70746B3D27584D5020746F6F6C6B697420322E392E312D31332C206672616D65776F726B20312E36273E0A3C7264663A52444620786D6C6E733A7264663D27687474703A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E7461782D6E73232720786D6C6E733A69583D27687474703A2F2F6E732E61646F62652E636F6D2F69582F312E302F273E0A3C7264663A4465736372697074696F6E207264663A61626F75743D2761616162326330622D646361362D313165322D303030302D3662373334616465366639322720786D6C6E733A7064663D27687474703A2F2F6E732E61646F62652E636F6D2F7064662F312E332F27207064663A50726F64756365723D2747504C2047686F73747363726970742020392E30272F3E0A3C7264663A4465736372697074696F6E207264663A61626F75743D2761616162326330622D646361362D313165322D303030302D3662373334616465366639322720786D6C6E733A786D703D27687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F273E3C786D703A4D6F64696679446174653E323031332D30362D32315431303A31383A33352B30323A30303C2F786D703A4D6F64696679446174"
    $s_CodeAsString &= "653E0A3C786D703A437265617465446174653E323031332D30362D32315431303A31383A33352B30323A30303C2F786D703A437265617465446174653E0A3C786D703A43726561746F72546F6F6C3E50536372697074352E646C6C2056657273696F6E20352E322E323C2F786D703A43726561746F72546F6F6C3E3C2F7264663A4465736372697074696F6E3E0A3C7264663A4465736372697074696F6E207264663A61626F75743D2761616162326330622D646361362D313165322D303030302D3662373334616465366639322720786D6C6E733A7861704D4D3D27687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F27207861704D4D3A446F63756D656E7449443D2761616162326330622D646361362D313165322D303030302D366237333461646536663932272F3E0A3C7264663A4465736372697074696F6E207264663A61626F75743D2761616162326330622D646361362D313165322D303030302D3662373334616465366639322720786D6C6E733A64633D27687474703A2F2F7075726C2E6F72672F64632F656C656D656E74732F312E312F272064633A666F726D61743D276170706C69636174696F6E2F706466273E3C64633A7469746C653E3C7264663A416C743E3C7264663A6C6920786D6C3A6C616E673D27782D64656661756C74273E4D6963726F736F667420576F7264"
    $s_CodeAsString &= "202D20446F6B756D656E74313C2F7264663A6C693E3C2F7264663A416C743E3C2F64633A7469746C653E3C64633A63726561746F723E3C7264663A5365713E3C7264663A6C693E676F373070613C2F7264663A6C693E3C2F7264663A5365713E3C2F64633A63726561746F723E3C2F7264663A4465736372697074696F6E3E0A3C2F7264663A5244463E0A3C2F783A786D706D6574613E0A2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A3C3F787061636B657420656E643D2777273F3E0A656E6473747265616D0A656E646F626A0A322030206F626A0A3C3C2F50726F64756365722847504C2047686F73747363726970742020392E30290A2F4372656174696F6E4461746528443A32303133303632313130313833352B303227303027290A2F4D6F644461746528443A32303133303632313130313833352B303227303027290A2F5469746C65284D6963726F736F667420576F7264202D20446F6B756D656E7431290A2F43726561746F722850536372697074352E646C6C205665727369"
    $s_CodeAsString &= "6F6E20352E322E32290A2F417574686F7228676F37307061293E3E656E646F626A0A787265660A302031340A303030303030303030302036353533352066200A30303030303030363635203030303030206E200A30303030303036343738203030303030206E200A30303030303030353937203030303030206E200A30303030303030343337203030303030206E200A30303030303030303135203030303030206E200A30303030303030343138203030303030206E200A30303030303030373330203030303030206E200A30303030303030383331203030303030206E200A30303030303031343832203030303030206E200A30303030303030373731203030303030206E200A30303030303030383031203030303030206E200A30303030303031373731203030303030206E200A30303030303034393839203030303030206E200A747261696C65720A3C3C202F53697A65203134202F526F6F74203120302052202F496E666F2032203020520A2F4944205B3C33324632433834344233414546334535344341394536373833413935364344423E3C33324632433834344233414546334535344341394536373833413935364344423E5D0A3E3E0A7374617274787265660A363638390A2525454F460A"

    [/autoit] [autoit][/autoit] [autoit]

    FileDelete("Test.pdf")
    FileWrite("Test.pdf", Binary($s_CodeAsString))

    [/autoit]


    Ich hab bei mir einfach die Test.pdf genommen von AspirinJunkie.
    Aber besser wäre, wenn du uns mal deinen String geben könntest Torni.

  • wenn ich die Datei vorher mit FileRead einlese, funktioniert es bei mir auch. Das hatte ich irgendwo weiter oben schon erwähnt.
    Nur wenn ich den kompletten String aus der DB bekomme und schreiben will, nimmt er das nicht.

    Das mit dem Block habe ich nur zum Probieren benutzt, weil hier sonst gar nichts geht.
    Wenn es gehen würde, hätte ich dies sein lassen.
    Ebenso mit FilewriteLine. Das sind nur Versuche, weil ich verzweifel daran..
    Man greift halt nach Strohhalmen...

    @m-obi: die PDF ist das originale. Auch deine Art funktioniert, das schrieb ich auch schon. Das ist ja das was mich verzweifeln lässt.

    Das direkte schreiben des kompletten String, wie er aus der DB kommt funzt einfach nicht.

    Wie gesagt, wenn ich eine Datei vorher einlese oder dne String im Quellcode so wie im Vorpost ablege und schreibe, DANN geht alles einwandfrei.


    EDIT: ich habe mir mal den String per ClipPut in die Zwischenablage kopiert. Wenn ich den im Programm per FileWrite($hExtrFile, Binary(ClipGet())) schreibe, gehts nicht.

    ALLERDINGS: wenn ich mir den jetzt den String irgendwohin kopiere und manuell mittels STRG-C kopiere und erst dann im Programm mit FileWrite($hExtrFile, Binary(ClipGet())) schreibe (vorher CLipPut deaktiviert), dann ist die Datei korrekt??

    Einmal editiert, zuletzt von Torni (25. Juni 2013 um 09:23)

  • Passe mal folgendes Skript an und führe es aus:

    [autoit]

    $s_String = ... hier nur die direkte Datenbankabfrage ohne irgendwelche nachträglichen Formatierungen

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(IsString($s_String) & @TAB & StringLen($s_String) & @TAB & StringRegExp($s_String, "^0x[[:xdigit:]]+$") & @CRLF)
    FileWrite("Test.txt", $s_String)

    [/autoit]


    Poste danach mal die Konsolenausgabe und lade die resultierende Textdatei hoch.

    Desweiteren erstelle ein Minimalbeispiel was jeder hier sofort ohne Änderungen ausführen kann um den Fehler bei sich selbst nachzuvollziehen.
    Heißt: Minimale SQlite-Datenbank erstellen und ranhängen und ein wirklich minimales Skript welches lediglich den String aus dieser Mini-DB ausliest und binär schreibt.

  • An dem String hängt hinten noch ein Zeilenumbruch dran.
    Entferne ich den ist alles wunderbar.
    Versuch also per StringTrimRight (entweder 1 oder 2 Zeichen entfernen) den String vor der Binarisierung entsprechend aufzuarbeiten.

  • ICH GLAUB ES JA NICHT. DAS WAR ES. !!!

    Niederknie... danke dir..

    Und wegen so einem blöden Umbruch schreibt der nicht binär. Da muss man erst mal draufkommen..

  • Ich dachte du meinst 0A, da das ja LF ist. Wo hast du denn da einen Zeilenumbruch gesehen? Oder kommt der von der SQL-DB?

  • Anscheinend von der DB.
    Zumindestens die angehangene Textdatei hat am Ende noch einen Zeilenumbruch.
    Die resultierende PDF soll anscheinend dann aber mit einen @LF enden da du ja festgestellt hast das 0A ein LF in ASCII darstellt.

  • Ah jo hast recht. Hatte garnicht gemerkt, dass der Cursor schon in der nächsten Zeile ist. Hab es erst mit nen Hex-Editor gemerkt. ^^

  • Das ist ja wohl lächerlich!
    Ich komme mir ehrlich gesagt völlig verarscht vor!
    Am 21.6. (vor 4 Tagen) habe ich geschrieben, du (Torni) solltest bitte die Dateilänge des Orginalstrings mit der Dateilänge der Datenbankrückgabe vergleichen.
    Daraufhin kam als Antwort:

    Zitat von Torni

    ...Die Datei ist gerade mal ~14kb groß, dies zeigt er auch bei beiden StringLen an....


    Und heute stellt sich dann heraus, dass der von der Datenbank zurückgegebene String um einige Zeichen (CRLF) länger ist als die Orginaldatei! 8|
    Auf dieser Basis werde ich wohl keinen Gedanken mehr an kommende "Probleme" verschwenden!

  • Hallo Andy,

    das war mit Sicherheit keine Absicht.
    Die Stringlänge aus der DB war für mich gleich mit StringLen, da ich mir das ausgeben liess, nachdem der String/Datei kopiert wurde und ich die Dateilänge aus der DB MANUELL holte.
    Die Orig-Datei konnte ich nicht wirklich mehr überprüfen weil die ja nur noch binär aufm Server lag. Das hatt eich manuell geholt gehabt.
    Dass sich allerdings das Teil wirklich unterschied, hammer und leider speichert er wohl das CRLF direkt beim Einlesen mit dran.. Deswegen war es für mich gleich.

    Das habe ich übersehen, warum auch immer.
    Normal kann man das nicht übersehen, tut mir echt leid.